使用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升级,这似乎是通过了第一个小问题…直到它碰到下一个。 我不能使用apt-get remove来删除debianutils,因为这是一个核心软件包,如果删除,将会中断系统。
任何指向哪里去从这里?
问题是debianutils和passwd都包含相同的文件(/ usr / sbin / add-shell)。 我有点困惑,你如何安装2.8.4,因为它不在Debian的任何发布版本,并在2004年创build。你是否试图从sarge框升级? 你应该升级到蚀刻,然后lenny。 不支持在多个版本之间升级。
这可能会结束,但你可以通过运行来解决这个问题:
# dpkg -i --force-overwrite /var/cache/apt/archives/debianutils_2.30_i386.deb
但是你可能会遇到更多的问题。 我认为你应该重新考虑为什么你要先升级这么旧的版本。
尝试aptitude,这是新的apt-get,但更好的解决问题。
请阅读斯蒂芬对这个答案的评论,关于不尝试这个新手和备份。
啊,find了我要找的东西:
dpkg -r --force all passwd apt-get -f install
据我所知,这将删除通常会破坏系统的passwd软件包,不应该被认为是轻微的。
然而,在这种特殊情况下,这是必要的,因为passwd软件包与另一个软件包相冲突,可能是由于从sarge升级到lenny(不应该这样做),而不是从sarge升级到etch,然后lenny。 在最初的dist-upgrade尝试失败后,sources.list从stable变为etch,尝试远程升级系统进行刻蚀,所以进一步编辑sources.list,将etch更改为lenny,然后dist再次升级会解决这个问题。 它没。 损坏已经完成了。
最后的办法是尝试通常不应该做的事情。
我做的。
有效。
诚然,我没有,也不知道到底是怎么回事。 我只能假设旧的冲突passwd包被删除(不删除依赖关系?),使系统不稳定,然后安装新的passwd包,恢复不稳定的系统恢复到完好。
我在网站上find了解决scheme,显示我逐字遇到的错误。 有一大堆的用户post感谢作者的解释,说它已经为他们工作,并没有留下评论说,它没有(好吧,这并不意味着它从来没有失败)。 当我被一个破损的,不可升级的系统卡住时,这是最后的手段。
感谢那些指出这是一个“坏”的想法。 然而在这种情况下,有了这个确切的错误,我可以报告说,它确实解决了这个问题。