Назад | Перейти на главную страницу

dpkg не может установить обновление dpkg - как мне что-нибудь обновить?

Если не считать восстановления всего сервера с нуля (над которым я все равно работаю), есть идеи, как исправить эту проблему на старом ящике debian etch? Раздражает то, что не может ничего уметь ...

# 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

Ладно, будет весело. Ваша коробка довольно сильно прикручена, поэтому самая большая проблема в том, что вы прикручиваете ее сильнее, но я не несу ответственности за то, что вы делаете это, следуя этому совету. Проблема либо в том, что пакет dpkg установлен неправильно, либо метаданные повреждены.

Разберемся с первой проблемой. Пакеты Debian - это просто ar-файл из двух tar-файлов. Вы можете извлечь их вручную, если вам действительно нужно. Попробуйте следующее:

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

Это должно извлечь файлы из пакета и установить их в системе. Вероятно, мы должны сообщить dpkg, что пакет установлен. Найдите файл / var / lib / dpkg / status и найдите строку, в которой говорится:

Package: dpkg

Затем отредактируйте строку состояния, чтобы сказать:

Status: install ok installed

и измените версию, чтобы сказать:

Version: 1.13.26

Надеюсь, теперь dpkg должен работать. Если это так, я бы переустановил dpkg, чтобы dpkg знал, какие файлы установлены в пакете dpkg.

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

Если поврежден файл метаданных, это просто текстовые файлы, поэтому вы можете их редактировать. Я бы посоветовал использовать dpkg для отладки more или strace, чтобы узнать, можете ли вы узнать, какой именно файл поврежден.

# 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

(Посмотрите dpkg --debug = help, чтобы узнать, что означает 2001 год)

Если файл состояния поврежден, существует старый файл состояния, который можно использовать в качестве резервной копии.

Я подозреваю, что могу попробовать вручную повторно загрузить dpkg деб используя что-то вроде wget или curl, а затем вручную извлечение содержимое пакета в вашу файловую систему.

Было бы разумно сделать резервную копию вашей системы, прежде чем вы попробуете это сделать.

apt-get зависит от dpkg для работы ... таким образом, если ваш dpkg испорчен, apt-get не сможет ничего установить (включая сам dpkg).