dpkg无法安装dpkg更新 – 我如何更新任何内容?

有没有从头开始重build整个服务器(我正在工作),任何想法如何解决这个问题在旧的debian蚀刻盒? 它恼人的不能容易得到的东西…

# 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 

好吧,这将是有趣的。 你的盒子是相当拧的,所以最糟糕的问题是你把它拧得更厉害,但是我不会为你遵循这个build议来做这件事。 问题是dpkg软件包没有正确安装,或者元数据损坏。

我们来处理第一个问题。 Debian软件包只是两个tar文件的ar文件。 如果你真的需要,你可以用手提取它们。 尝试以下操作:

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

这应该从软件包中提取文件并将其安装在系统上。 我们应该告诉dpkg该软件包已经安装好了。 find/ var / lib / dpkg / status文件,并find一行说:

 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 

如果这是一个元数据文件被损坏,他们只是纯文本文件,所以你可以编辑它们。 我会build议在debugging中使用dpkg更多或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的含义)

如果状态文件已损坏,则可以使用旧状态的文件作为备份。

我怀疑我可能会尝试使用类似wget或curl手动重新下载dpkg deb ,然后手动将包的内容提取到文件系统中。

在尝试之前先备份系统是明智之举。

apt-get取决于dpkg的操作…因此,如果你的dpkg搞砸了,apt-get将无法安装任何东西(包括dpkg本身)。