Если не считать восстановления всего сервера с нуля (над которым я все равно работаю), есть идеи, как исправить эту проблему на старом ящике 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).