有没有办法防止删除 Debian 软件包?我想防止任何“替换”和“中断”属性的解析,因为解析会导致删除该软件包,但可以对其进行升级。只要在完成所有操作后该软件包安装在任何版本中,一切都会正常。
我发现的唯一方法是暂停该软件包。这不是解决方案,因为运行升级需要事先取消暂停。
这是在 Puppet 环境中,因此在每种主机类型上手动检查每个可能的包匹配是不可能的。
语境:
如果您在打包过程中犯了一个错误,那么就会发生包需求链导致删除该服务器的基础包(网络、用户管理等)的情况。我知道这其中有很多不幸的情况,所以这种情况会发生,比如分别测试两个包,它们之间的竞争条件会把一切都搞砸。关键是要提供一个可能出错的下限。
给其他人的指引:
您可以使用以下某个 apt 选项,Puppet 会尊重这些选项:
~ $ cat /etc/apt/apt.conf.d/99neverremoveanything
APT::Get::Remove "false";
APT::Get::Upgrade-Allow-New "true";
对于我自己来说,这些选项并不完全令人满意,因此这个问题没有得到解答,因为只有一些包裹真正需要这种保护。
您也可以使用此处提出的解决方案:https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=767891
它涉及创建具有“优先级:必需”的元包,这些元包取决于您想要保护的包。
答案1
您可以使用文件 /etc/apt/preferences 类似...
程序包:<程序包名称>
密码:版本 1.0*
引脚优先级:10
它将阻止 < 包名称 > 更新到 1.0* 以上的版本。