dpkg não pode instalar o dpkg update - como faço para atualizar alguma coisa?

2

Falta de reconstruir todo o servidor a partir do zero (no qual estou trabalhando de qualquer maneira), alguma idéia de como corrigir esse problema em uma antiga caixa de gravação debian? É chato não ser capaz de conseguir coisas ...

# apt-get install dpkg
<<snip>>
Preparing to replace dpkg 1.13.25 (using .../archives/dpkg_1.13.26_i386.deb) ...
dpkg: error processing /var/cache/apt/archives/dpkg_1.13.26_i386.deb (--unpack):
 unable to install updated status of 'dpkg': No such file or directory
<< hangs here - need to ctrl-c >>


# dpkg -C
The following packages are in a mess due to serious problems during
installation.  They must be reinstalled for them (and any packages
that depend on them) to function properly:
 dpkg                 package maintenance system for Debian
    
por gnarf 29.09.2009 / 01:56

3 respostas

2

Ok, isso vai ser divertido. Sua caixa está completamente ferida, então o pior problema é que você estraga com mais força, mas eu não me responsabilizo por você fazer isso seguindo esse conselho. O problema é que o pacote dpkg não foi instalado corretamente ou os metadados estão corrompidos.

Vamos lidar com o primeiro problema. Pacotes Debian são apenas um arquivo ar de dois arquivos tar. Você pode extraí-los à mão se realmente precisar. Tente o seguinte:

# cd /tmp
# ar x /var/cache/apt/archives/dpkg_1.13.26_i386.deb
# cd /
# tar -xzvf /tmp/data.tar.gz

Isso deve extrair os arquivos do pacote e instalá-los no sistema. Provavelmente, devemos dizer ao dpkg que o pacote está instalado. Encontre o arquivo / var / lib / dpkg / status e encontre uma linha que diz:

Package: dpkg

Em seguida, edite a linha Status para dizer:

Status: install ok installed

e mude a versão para dizer:

Version: 1.13.26

Espero que agora o dpkg esteja funcionando. Se assim for, eu reinstalaria o dpkg, então o dpkg sabe quais arquivos o pacote dpkg instalou.

# dpkg -i /var/cache/apt/archives/dpkg_1.13.26_i386.deb

Se for um arquivo de metadados corrompido, eles são apenas arquivos de texto simples, para que você possa editá-los. Eu sugeriria usar o dpkg em debug more ou strace para ver se você pode descobrir qual arquivo em particular está quebrado.

# dpkg --debug=2001 -i /var/cache/apt/archives/dpkg_1.13.26_i386.deb
# strace -efile -f dpkg -i /var/cache/apt/archives/dpkg_1.13.26_i386.deb

(Confira dpkg --debug = help para descobrir o que significa 2001)

Se o arquivo de status estiver corrompido, há um arquivo antigo que você pode usar como backup.

    
por 29.09.2009 / 11:46
1

Eu suspeito que eu possa tentar baixar novamente o deb do dpkg usando algo como wget ou curl e, em seguida, manualmente extraindo o conteúdo do pacote em seu sistema de arquivos.

Seria sensato ter um backup do seu sistema antes de tentar isso.

    
por 29.09.2009 / 02:05
0

O apt-get depende do dpkg para operação ... assim, se o seu dpkg estiver bagunçado, o apt-get não poderá instalar nada (incluindo o próprio dpkg).

    
por 29.09.2009 / 02:19

Tags