通过 aptitude 升级除 MySQL 之外的所有软件包

通过 aptitude 升级除 MySQL 之外的所有软件包

在升级我的 Linux 发行版之前,我想升级我的所有软件包 - 但是,我想坚持使用我当前的 MySQL 版本(5.6)。

我知道有一个选项可以保留包裹,就像这样:

sudo aptitude hold package_name

当我运行时sudo apt-get upgrade,列出了以下 MySQL 包:

mysql-客户端-5.6 mysql-客户端-核心-5.6 mysql-通用 mysql-通用-5.6 mysql-服务器-5.6 mysql-服务器-核心-5.6

我可以将它们全部hold作为参数传递给命令吗?或者有没有更简单的方法来阻止我的 MySQL 升级?

注意:我在虚拟机中工作,所以没有可以使用的 GUI,只有终端。

更新

好的,我试过了,是的,您可以将所有包传递给命令hold,并且它们将不会被升级。

我仍然不确定仅保留这些包是否足以防止 MySQL 升级(也许其他特定于 MySQL 的包也应该保留?)。例如,下面的命令将保留许多名称中带有“mysql”的包,我不知道它们是否相关:

sudo aptitude mysql-*

答案1

看起来你已经找到答案了。但是你编辑后又询问了另一个人。

我仍然不确定仅保留这些包是否足以防止 MySQL 升级(也许其他 MySQL 特定的包也应该被保留?)。

答案是不需要。只要你持有其他包所依赖的核心包,就不需要持有每个包。例如,mysql-server、mysql-client 包依赖于 mysql-common(据我所知),因此,只持有这个包就足够了。

aptitude比一般情况更智能apt,并且应该了解您想要什么。


已更新,已验证

为了验证答案,我实际上对libgtk-3-0几乎所有 gtk-3 应用程序的核心包进行了测试。我有某个版本的3.18。然后我启用了一个提供版本的存储库3.20nautilus依赖于此包,并且该存储库还提供更高版本的nautilus

当尝试aptitude upgrade -s-s用于模拟)时,它列出了要更新的软件包。nautilus不存在,因为libgtk-3-0不会更新新版本所需的软件包。

另一种选择是通过在目录中创建文件来固定软件包/etc/apt/preferences.d,这提供了更多选项和灵活性。在你这个简单的情况下,这不是必需的,但了解一下也无妨 :)如何进行 Apt Pinning

相关内容