使用版本锁定防止有害的Linux更新

在我的家用电脑上运行Fedora,这是一个以位于Linux开发前沿而闻名的Linux发行版。我的笔记本电脑是Dell XPS 13,它使用了一些相当先进的硬件。在开源领域中,这种组合可能很危险:旧的Linux内核无法处理我的电脑的硬件,而全新的内核也可能破坏它。每次进行软件更新时,我都像走在钢丝上一样。

我处理这个问题的方式是使用一个名为versionlock的软件包管理器插件。它允许我告诉包管理器锁定某些软件包的当前版本,然后 voilà!我可以盲目地应用所有软件更新,并知道那些麻烦的软件包不会升级。

安装

versionlock插件适用于dnf和yum,因此请选择您的系统使用的包管理器。对于dnf

$ sudo dnf install python-dnf-plugins-extras-versionlock

对于yum

$ sudo yum install yum-plugin-versionlock

锁定软件包

要将软件包添加到锁定列表,只需使用包含versionlock和add命令的包管理器程序

$ sudo dnf versionlock add my-package

yum版本

$ sudo yum versionlock add my-package

如您所见,dnf和yum的命令相同。您可以在一个命令中锁定多个软件包。以下是我如何防止我的系统升级内核软件包的示例

$ sudo dnf versionlock add kernel-0:4.3.5-300.fc23 kernel-modules-0:4.3.5-300.fc23 kernel-core-0:4.3.5-300.fc23 kernel-devel-0:4.3.5-300.fc23

列出已锁定软件包

要查看哪些软件包被锁定,请使用list命令

$ dnf versionlock list
Last metadata expiration check: 0:00:00 ago on Mon Mar 21 20:58:57 2016.
kernel-0:4.3.5-300.fc23.*
kernel-modules-0:4.3.5-300.fc23.*
kernel-core-0:4.3.5-300.fc23.*
kernel-devel-0:4.3.5-300.fc23.*

解锁软件包

要从锁定列表中删除一个软件包,请使用delete

$ sudo dnf versionlock delete my-package

要从锁定列表中删除所有软件包,请使用clear

$ sudo yum versionlock clear

帮助

如果您忘记了这些命令,可以使用help命令列出可用的命令

$ dnf help versionlock
versionlock [add|exclude|list|delete|clear] [<package-nevr-spec>]

您需要多少安装程序?

在Fedora上,我还删除了Gnome Software程序(gnome-software软件包)。虽然通过GUI提醒待更新很有用,但通过Gnome Software安装的任何软件包都不是dnf历史记录的一部分。这使得在需要降级或删除麻烦软件包时更加困难。

结论

管理软件包可能会很痛苦,但版本锁定使生活更轻松。如果您使用Debian或Ubuntu,可以使用apt-mark hold my-packageapt-mark unhold my-package实现类似的效果。
这篇文章最初发表在PerlTricks.com上。

标签

David Farrell

David是一位职业程序员,他经常推文博客关于代码和编程的艺术。

浏览他们的文章

反馈

这篇文章有什么问题吗?请在GitHub上打开一个问题或pull request,链接为GitHub