obter dpkg --get-selections lista equivalente de dpkg.status.0

0

Meu SSD travou e não consigo encontrar a saída de dpkg --get-selections que criei recentemente. No entanto, eu poderia fazer uma cópia do arquivo /var/backups/dpkg.status.0 do ssd quebrado. Eu sinto que todas as informações que o dpkg --get-selections me deu estão lá, mas no formato wron. E eu sinto que deve haver um comando que permita convertê-lo (ao invés disso, escrever um script). Pergunta: O que é esse comando?

    
por nutty 18.02.2013 / 20:23

2 respostas

1

Basicamente, acho que todos os aplicativos em /var/backups/dpkg.status.0 têm install ok installed line, então você só precisará usar esse comando para obter a mesma saída de dpkg --get-selections : grep "Package" < /var/backups/dpkg.status.0 | awk '{print $2"\t\tinstall"}' . Verifique isso.

    
por nickanor 18.02.2013 / 21:47
0

Primeiro, você verifica onde dpkg --get-selections está obtendo os dados brutos dele. Se você suspeitar que está recebendo os dados de / var, poderá restringir ainda mais os resultados com um grep. Assim:

strace dpkg --get-selections 2>&1 | grep /var

Isso produzirá o seguinte resultado:

open("/var/lib/dpkg/updates/", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 3
open("/var/lib/dpkg/available", O_RDONLY) = 3
open("/var/lib/dpkg/triggers//File", O_RDONLY) = 3
stat("/var/lib/dpkg/triggers/Unincorp", {st_mode=S_IFREG|0644, st_size=0, ...}) = 0

Então, se você quer saber de onde veio esse arquivo de backup dpkg , você pode procurar em seus arquivos cron por menções de dpkg :

 grep -R dpkg /etc/cron*

A partir daí, você pode descobrir que /var/backup/dpkg.status.0 foi primeiro submetido a backup e, em seguida, rotacionado, com base em /var/lib/dpkg/status .

Juntando o acima, você obtém dpkg --get-selections para produzir o relatório desejado, restaurando temporariamente o arquivo "dpkg status" de volta para /var/lib/dpkg/status e executando dpkg --get-selections . Ele agora fará referência aos seus dados de backup.

    
por Mark Stosberg 17.05.2013 / 20:35