![为什么 apt 没有安装 Wheezy 的依赖项?](https://linux22.com/image/614493/%E4%B8%BA%E4%BB%80%E4%B9%88%20apt%20%E6%B2%A1%E6%9C%89%E5%AE%89%E8%A3%85%20Wheezy%20%E7%9A%84%E4%BE%9D%E8%B5%96%E9%A1%B9%EF%BC%9F.png)
如果我跑
# apt-get install sendmail
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
sendmail : Depends: sendmail-bin but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
如果我添加sendmail-bin
到apt-get install
命令中它就会起作用,但在 Squeeze 上没有必要,
为什么我必须在 Wheezy 上指定一些依赖项?
编辑
如果我删除exim4
软件包,然后apt-get install sendmail
工作,似乎与软件包依赖关系有关
编辑
现在我在 squeeze 上测试了,结果是一样的!
我的问题是 puppet squeeze 清单在 wheezy 上不起作用,我以为 apt 改变了一些东西,但似乎没有,对此深表歉意
答案1
仔细查看错误消息,看起来您已经“持有”了包裹(“E:无法纠正问题,您持有破损的包裹“)。
您可以在 Debian 中保留软件包,防止它们被升级(例如,如果您发现一个会导致新版本出现问题的错误)。
您应该能够使用以下命令找到哪些包处于保留状态:
dpkg --get-selections | awk '{if ($2 == "hold") print $0;}'
我的猜测是,你的电流sendmail-bin
被抑制了,这apt-get install sendmail
无法解决问题,但可以在必要时apt-get install sendmail sendmail-bin
安装、升级和删除状态。hold
答案2
我在全新安装的 Debian wheezy 上运行了此程序,运行正常。您的设置中存在问题。您是否先尝试过此操作?
apt-get update
apt-get upgrade
当我在升级过程中遇到此类问题时,我会告诉您出现了问题并建议修复,例如:
apt-get -f install
现在安装 exim 并删除 sendmail ;-\
答案3
当 apt 尝试找到您要求它执行的操作的解决方案时,它会为不同的可能性分配分数。某些操作(如删除软件包)被视为“不好”并被赋予负分。如果分数太差,它就会退出。
不幸的是,有时它会轻易放弃并且不会做你想要的事情(删除之前的任何 MTA 并安装 sendmail),除非你给它更明确的指示。
如果您在安装过程中不选择“标准系统实用程序”任务,而是在安装需要 MTA 的东西之前安装您选择的 MTA,事情会更加顺利。