Está ficando possível a lista de pacotes instalados de um sistema morto?

0

Eu preciso recriar um sistema a partir de uma imagem de disco do sistema corrompido.

Eu não posso usar o sistema quando ele inicializa. O algoritmo de backup não deixou nada além de imagens corruptas. Os dados do usuário parecem seguros, mas não consigo fazer login no sistema quando inicializado. Não leva entrada de teclado ou mouse e não se conecta à rede.

Como tudo o que posso pensar é tentar olhar para os arquivos de dados onde as informações do pacote são mantidas, onde estão as

?

Depois que eu tiver os pacotes, posso ajustar a configuração de cada pacote da imagem corrompida se os dados ainda estiverem lá.

    
por user3594191 24.01.2016 / 06:59

2 respostas

2

Tecnicamente falando, sim, é possível. Todos os pacotes instalados possuem um arquivo *.list associado a eles; esses arquivos são listas de todos os arquivos que foram criados durante a instalação de um pacote (mas isso não vem ao caso, precisamos apenas saber os nomes dos pacotes para saber o que foi instalado).

Então, o que você pode fazer é conectar a unidade (pode ser SATA ao conector USB ou live CD / USB) montar a partição da sua unidade quebrada (com udisksctl mount -b /dev/sdb1 , observe para substituir sdb1 pelo disco real), navegue até ponto de montagem em que a partição foi montada e execute

 find ./var/lib/dpkg/info/ -name "*.list"  -type f -printf "%P\n" |  awk -F'.' '{print $1}'  

Por exemplo, eu tenho outra partição na minha unidade onde eu tenho 15.10 Ubuntu. Aqui está o que eu faria:

DIR:/xieerqi
skolodya@ubuntu:$ udisksctl mount -b /dev/sdb5                                                                                
Mounted /dev/sdb5 at /media/xieerqi/0ca7543a-5463-4a07-8bbe-233a7b0bd6251.

DIR:/xieerqi
skolodya@ubuntu:$ cd /media/xieerqi/0ca7543a-5463-4a07-8bbe-233a7b0bd6251   

DIR:/0ca7543a-5463-4a07-8bbe-233a7b0bd6251
skolodya@ubuntu:$ find /var/lib/dpkg/info/ -name "*.list"  -type f -printf "%P\n" |  awk -F'.' '{print $1}' | head
libbuzztard0
linux-headers-3
indicator-bluetooth
python-twisted-mail
netpbm
mtp-tools
javahelp2
firefox-locale-zh-hant
gir1
libqapt2

Nota lateral

Essa abordagem produz a lista que mostra os pacotes de todos os pacotes instalados desde a última inicialização do sistema. Exemplo do meu sistema em execução

DIR:/xieerqi
skolodya@ubuntu:$ find  /var/lib/dpkg/info/ -name "*.list"  -type f -printf "%P\n" |  awk 'END{print NR}'                     
2837

DIR:/xieerqi
skolodya@ubuntu:$ dpkg --get-selections | awk 'END{print NR}'
2837
    
por Sergiy Kolodyazhnyy 24.01.2016 / 07:15
1

Inicialize em um ambiente ao vivo e faça isso:

sudo mount /dev/sdaXY /mnt

Altere XY para sua especificação .

sudo find /mnt/var/log/ -type f -iname dpkg.log*

Aqui, você receberá uma lista de arquivos como:

dpkg.log
dpkg.log.1
dpkg.log.2.gz

e assim por diante ...

Copie os arquivos para outra pasta / unidade à qual você tenha acesso (também se houver arquivos como dpkg.log.2.gz , extraia-os).

Agora, para obter as listas de todos os pacotes que foram instalados no seu sistema:

grep " install " /path/to/dpkg.log | awk -F' ' '{print $4}'
grep " install " /path/to/dpkg.log.1 | awk -F' ' '{print $4}'
grep " install " /path/to/dpkg.log.2 | awk -F' ' '{print $4}'

e assim por diante ...

N.B. : - A desvantagem disso é que listará todos os pacotes que você já instalou anteriormente (mesmo aqueles que você removeu após a instalação).

    
por Raphael 24.01.2016 / 07:13