阻止软件包在APT中卸载


8

简而言之,我希望能够设置包,abc以便:

  1. apt-get remove abc 应该失败。
  2. apt-get purge abc 应该失败。
  3. apt-get upgrade abc 应该管用。

如果软件包的依赖关系发生变化,因此abc应该在一次安装过程中将其卸载,那么dist-upgrade我很乐意被迫做某事,然后dist-upgrade再做一次。


我创建了一个依赖于的基本metapackage abc,但是无论如何它都被删除了……我认为您必须重新编译abc设置,Essential: yes并且Priority: requireddebian/control
Teresa e Junior

@TeresaeJunior奇怪,基本服务包def取决于abc应该有工作。被def删除了吗?如果您这样做有帮助def Priority: required吗?
吉尔(Gilles)'所以

@Gilles没错,我同时设置Essential: yesPriority: required它是在没有警告删除。如果您想看一下,我创建了这个小脚本来
Teresa e Junior

我看到它Essential: yes被忽略了,所以equivs还不够……也许如果使用创建了包debuild,我会尽力的。
Teresa e Junior

Answers:


5

确实没有什么可以“固定”软件包以防止删除,但可以升级。

您可以将尖刺锤打入包装中,无法删除,清除,升级,舔东西等等。

但这比大多数事情要复杂一些。

例如,我们希望将Firefox固定下来:(当然,您将使用软件包的正确全名)

echo firefox hold | dpkg --set-selections

然后,这将使“ firefox ”不朽。 但是,在此状态下也无法升级。

删除保持状态要容易一些,但这有点像扫荡:

dpkg --clear-selections

从“一切”中删除“保持”状态!因此,如果您想保留一些软件包,则最好保留一个列表,以便以后重新应用

实际上,使用aptitudesynaptics进行操作非常轻松愉快,因为它们具有菜单选项来保存/解包,并为您做好所有幕后记账工作。我建议使用其中的一种(或您可能会遇到的许多其他软件包管理器)

通过Aptitude,也可以使用命令行:

aptitude hold <package>
aptitude unhold <package>

不过请记住,如果要升级,则需要“ 取消保留 ”某些内容。尽管如果您使用Aptitude的GUI端,它应该告诉您所持有的东西是否可以升级


1
apt-get会很高兴地卸载保留的软件包。
bahamat 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.