我读过这个问答如何阻止特定包的更新?
但是,我想禁用/阻止很多软件包的更新,如何有效地做到这一点?
上面给出的方法有效(如下图所示),但很难找到完全apt-mark
理解的包名称。参见下面的屏幕截图,我需要禁用或暂停除少数之外的所有这些。
软件更新程序多次弹出(我知道我可以跳过它),但我的带宽很低,无法更新每个软件包。而且我几乎不使用它们,例如 Thunderbird、简单扫描、音乐播放器。
如果这个软件更新程序有一个选项可以仅通过右键单击或其他方式禁用软件包更新,那就太好了。
答案1
查找包名称
一种方法是使用apt-get dist-upgrade
而不是软件更新程序 GUI。它将生成几乎相同的软件包列表,但是,它将使用软件包名称而不是“人性化”的标题。这将允许您apt-mark
在它们上运行。
这至少会让事情变得更容易一些。
批量操作
如果您想一次性完成所有操作,可以将这些包保存到名为的文本文件中package_list
,每行一个包;然后运行
$ sudo :; cat package_list | xargs sudo apt-mark hold
xargs
将依次获取每一行并将其附加到apt-mark
命令行。第一个命令sudo :
,只是缓存您的凭据,这样您在多次运行时就不必输入密码sudo apt-mark
;如果您以 root 身份运行,则不需要这样做,但它允许您在不提升权限的情况下执行尽可能多的操作。
警告
我没有测试过该xargs
行。此外,在运行任何命令之前阅读并理解它是一种很好的做法;尤其是在使用 sudo/root 时。;-)
可能出现什么问题以及原因
我知道您说过您想允许 2-3 个软件包正常升级;但是如果您不是很小心,您可以阻止软件包升级,甚至无需直接暂停它,因为如果您软件包的较新版本依赖于具有暂停的另一个软件包的较新版本,则如果不先取消暂停,则无法升级它们。
因此,如果您想要允许特定软件包更新,请确保其所有依赖项均未受限制。更新程序生成的列表可能会产生误导,因为它通常是一个扁平的软件包列表,而没有用于生成列表的依赖项树。
历史
“软件更新程序 GUI” 以前不太精致,而且有用,在 Ubuntu 还很年轻的时候。事实上,它曾经将软件包名称与标题一起显示。
答案2
从旧式 GUI 来看,有一个名为“synaptic”的替代包管理器。它在 Ubuntu 出现之前就存在于 Debian 中。我建议您安装它,它位于 Ubuntu 存储库中。synaptic 有一个菜单下拉菜单,用于将包锁定到位。单击“包”,然后选择“强制版本”。
我不同意 initiative 在过去取代 synaptic,对我来说它仍然很棒。我从不使用“软件更新程序 GUI”,它让我感觉好像我失去了对计算机的控制。命令行中的 apt-get 也很好。如果你这样做,那么 @jpaugh 建议的 apt-mark 会很好用。
在程序之间切换时,您会注意到一些奇怪的事情。synaptic 中的软件包设置在“软件更新程序”中不受尊重,apt-get 设置也是分开的。aptitude 也保留了自己的数据库。这对我来说有点令人惊讶,似乎应该能够在软件包数据库本身中设置这些特性,而不是让每个单独的程序维护自己的记录。但我认为这就是发生的事情。
我希望你能重新获得控制权。如果突触满足了你的要求,请告诉我们。