我知道我可以通过附加/etc/apt/preferences来禁止Debian中的特定软件包:
Package: *x11* Pin: release Pin-Priority: -1
但是我怎样才能做到像httpd这样的虚拟包? 我想不允许安装所有提供这个虚拟httpd但是我select的包。 有一个(简单)的方法来做到这一点?
原因是:最近,一个自动apt-get dist-upgrade删除了nginx并安装了lighttpd ,因为其他一些软件包( phppgadmin AFAIR )依赖于httpd ,而nginx根据那个更新启动的东西是不可安装的。 在这种情况下,我真的希望整个升级失败,而不是放下http服务。 另外:是否有可能使一个包“可卸载”? 这也是一个很好的解决scheme。
我宁愿build立一个微小的元包与equivs根据Conflicts ,也许Depends 。 这样可以更精细地控制需要安装哪些软件包,哪些可能未安装。
固定更适合挑选正确版本的软件包(直到最近,虚拟软件包才能有版本),而不是安装一个或另一个软件包 – 尽pipe理论上这应该是可能的。
另一种可能性是使用一个工具来保持所有的软件包安装或卸载,例如aptitude-robot 。 (可能有其他的,但是aptitude-robot是我用的。)aptitude-robot虽然只是用来configuration软件包列表,但是它不适用于普通的aptitude或apt-get运行。
如果你只使用aptitude ,第三种可能性就是在你的例子中使用Aptitude的forbid-version (Shift-F)function。 这个虽然不适用,如果你以后再使用apt-get 。