我已经从apt 源(在所有 url 中)安装了一个包,multiverse
然后将其禁用。我禁用了它们,因此我不会意外安装任何新的非免费软件包或依赖项。multiverse
restricted
当我对软件包进行 apt update 然后升级时,apt 说它“已经是最新版本”。但我相信我实际上不会获得该软件包的升级,对吧?
有没有办法只为已安装的软件包进行升级,同时仍然防止从restricted
或安装任何新软件包multiverse
(无需在每次安装时编辑 apt 源)?
我考虑过multiverse
启用focal-security
and focal-updates
,但我认为这可能不会达到我的预期。
我的另一个有点相关的问题:
我想在从某些来源安装时收到警告,比如受限和多元宇宙
如果您禁用安装软件包的软件源(例如,通过在软件源中用一个
#
字符注释掉软件源中的软件源行),已安装的软件包将不会继续自动升级,但是您仍然可以手动通过重新启用其软件源并重新安装软件包,然后再次禁用其软件源来升级该软件包。当您使用 重新安装软件包时,apt 将尝试在您的软件源中找到该软件包并安装该软件包的最新可用版本。当一个包被升级时,它也会将它升级到该包的最新可用版本。
sudo apt reinstall package-name
sudo apt upgrade
仅当您
--install-suggests
在运行sudo apt install
命令时还使用该选项添加建议的包时,依赖项才会跨存储库。默认情况下,Ubuntu 仅安装包本身及其推荐的包。如果您尝试安装系统软件源中不可用的建议包,您将收到一条错误消息。即使 apt 已经安装了一个软件包,也有一些命令告诉 apt 将该软件包视为手动安装的软件包,因此如果不先切换选项,它就无法自动删除或自动升级。用于将某个包标记为手动安装,如果没有其他包依赖该包,将防止该包被自动删除。hold 用于将包标记为保留,这将防止包被自动安装、升级或删除。用于取消先前设置的对包的保留以再次允许所有操作。
sudo apt-mark manual package-name
sudo apt mark hold package-name
unhold
apt reinstall --simulate package-name
模拟重新安装包,其结果将显示重新安装该包是否还会安装任何新包或依赖项,其中可能包括当前未安装的非免费包。用于sudo apt-mark hold
防止安装这些不需要的新软件包。禁用源将不起作用(系统永远不会发现您的软件包的升级版本)。什么可能有用(我自己没有为此用例测试过)是APT pin。启用源并添加如下内容
/etc/apt/preferences
:第二个和第三个块将来自 multiverse 和限制的所有包标记为“不安装”,第一个块将默认优先级恢复为
your-favorite-package
.