使用 apt-get dist-upgrade 升级服务器上的软件,我收到以下错误:
Extracting templates from packages: 100%
Preconfiguring packages ...
(Reading database ... 28575 files and directories currently installed.)
Preparing to replace debianutils 2.8.4 (using .../debianutils_2.30_i386.deb) ...
Unpacking replacement debianutils ...
dpkg: error processing /var/cache/apt/archives/debianutils_2.30_i386.deb (--unpack):
trying to overwrite `/usr/sbin/add-shell', which is also in package passwd
dpkg-deb: subprocess paste killed by signal (Broken pipe)
Errors were encountered while processing:
/var/cache/apt/archives/debianutils_2.30_i386.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
几分钟前我在使用另一个软件包时遇到了类似的错误,所以我使用 apt-get remove 删除软件包,然后使用 apt-get upgrade 这似乎解决了第一个小问题......直到它遇到下一个问题。我不能使用 apt-get remove 来删除 debianutils,因为这是一个核心包,如果删除会破坏系统。
关于从这里去哪里的任何指示?
问题是 debianutils 和 passwd 都包含相同的文件(/usr/sbin/add-shell)。我对您如何安装 2.8.4 感到有些困惑,因为它不在任何已发布的 Debian 版本中,并且是在 2004 年创建的。您是否尝试从 sarge 盒升级?你应该升级到蚀刻,然后是lenny。不支持在多个版本之间进行升级。
这可能会以失败告终,但您可以通过运行来解决此问题:
但你最终可能会遇到更多问题。我认为您应该重新考虑为什么要先升级这么旧的版本。
尝试 aptitude,它是新的 apt-get,但具有更好的问题解决方案。
请阅读斯蒂芬对此答案的评论,关于不适合新手并在尝试此操作之前进行备份。
啊,找到了我要找的东西:
据我所知,这将删除 passwd 包,该包通常会破坏系统,不应掉以轻心。
然而,在这种特殊情况下,这是必要的,因为 passwd 包与另一个包冲突,可能是由于从 sarge 升级到 lenny(不应该这样做),而不是从 sarge 升级到 etch 然后再到 lenny。在尝试初始 dist-upgrade 并失败后,sources.list 从 stable 更改为 etch 以尝试将系统 dist-upgrade 为 etch,因此进一步编辑 sources.list,将 etch 更改为 lenny,然后是 dist - 再次升级将解决问题。它没。伤害已经造成。
最后的手段是尝试一些通常不应该做的事情。
我做的。
有效。
诚然,我没有,现在也不知道到底发生了什么。我只能假设旧的冲突 passwd 包已被删除(不删除依赖项?)使系统不稳定,然后安装新的 passwd 包,将不稳定的系统恢复到正常状态。
我在一个网站上找到了解决方案,该解决方案逐字显示了我遇到的错误。有大量用户帖子感谢作者的修复,解释说它对他们有用,没有评论说它没有(好的,这并不意味着它从未失败过)。由于我被一个损坏的、无法升级的系统所困,这是最后的手段。
感谢那些指出这是一个“非常糟糕”的想法的人。然而,在这种情况下,有了这个确切的错误,我可以报告它确实解决了问题。