我知道我可以通过附加以下内容来禁止 Debian 中的特定软件包/etc/apt/preferences
:
Package: *x11*
Pin: release
Pin-Priority: -1
但我怎样才能做到这一点虚拟的软件包httpd
?我想禁止安装全部提供此功能的软件包虚拟的httpd
而是我选择的那个。有没有(简单的)方法可以做到这一点?
原因:最近,apt-get dist-upgrade
由于nginx
其他lighttpd
一些包(phppgadmin
公平) 取决于httpd
某事nginx
开始取决于该更新无法安装。在这种情况下,我真的希望整个升级失败,而不是关闭 http 服务。另外:是否可以将包设置为“可卸载”?这也是一个很好的解决方案。
答案1
我宁愿用当量使用 accordingConflicts
和 maybe Depends
。这样可以更细粒度地控制哪些包需要安装以及哪些包可以不安装。
固定更多是为了选择包的正确版本(直到最近,虚拟包还没有版本)而不是安装一个或另一个包 - 尽管理论上这是可能的。
另一种可能性是使用一个工具来保存列表中所有已安装或已卸载的软件包,例如能力机器人. (可能还有其他的,但我用的是 aptitude-robot。)aptitude-robot 只有在用于升级软件包时才会应用您配置的软件包列表,它不适用于正常aptitude
或apt-get
运行。
如果您只使用aptitude
,第三种可能性可能是forbid-version
在如您示例的情况下使用 Aptitude 的 (Shift-F) 功能。但如果您稍后再次使用,这将不适用apt-get
。