SDB:供应商更改更新
本文档解释了厂商粘性概念,并提供了有关如何覆盖默认行为的信息。
概述
版本:11.2+ 以下适用于从 11.2 版本开始的 openSUSE。
软件包管理器 Zypp 使用 厂商粘性 概念。这意味着当您更新系统时,如果较新的版本由不同的厂商提供,已安装的软件包将不会更新到较新的版本。
厂商粘性的优点
- 您不会冒着在更新时意外用来自不同仓库的实验版本替换稳定的已安装软件包的风险。
- 您不会冒着软件包在每次更新时在多个仓库之间弹跳,当同一个软件包存在于多个仓库中时。
厂商粘性的缺点
- 在 YaST 中,需要厂商变更的可用更新在某种程度上被隐藏了。
- 将软件包更新到不同的厂商需要更多的工作。
- 有时,软件包管理器会询问您是否要允许厂商变更,这可能会令人烦恼、害怕或困惑。
执行厂商变更更新
您可以使用以下不同的方法来执行厂商变更更新。
单个软件包厂商变更
使用 YaST
搜索您想要更新的软件包,然后转到版本选项卡并选择您想要安装的版本。
使用 zypper
使用 zypper 安装软件包,指定您想要的版本,例如
zypper install 'amarok=2.3.1'
或者通过指定仓库
zypper install --from [repository] [package]
完整仓库厂商变更
使用 YaST
如果您想将所有已安装的软件包切换到特定仓库中的版本,请打开仓库选项卡,选择所需的仓库,然后单击将系统软件包切换到此仓库中的版本
使用 zypper
您也可以使用 zypper 切换仓库中的所有软件包的厂商
zypper dup --from [repository]
允许厂商变更
允许对选定仓库进行厂商变更
您可以通过在/etc/zypp/vendors.d/目录中创建一个具有类似内容的文件来定义具有不同“厂商”的仓库列表作为等效项
[main] vendors = suse,opensuse,obs://build.suse.de,Packman,http://packman.links2linux.de
您可以使用 YaST(“版本”选项卡)或命令行“zypper if <package>”找到厂商。
- 您可以使用任何文件名,但此目录中的每个文件都反映了一组等效的厂商。
- Libzypp 进行字符串比较(如 strncmp,不区分大小写),并且仅比较字符串的开头。例如,厂商“opensuse11.0”与“openSUSE”兼容。
禁用厂商粘性
如果您希望禁用厂商粘性,在这种情况下,软件包管理器将不会要求更改软件包的厂商权限,并且更新将仅安装具有最高版本号的任何软件包,而不管其来源如何。
在/etc/zypp/zypp.conf设置
solver.allowVendorChange = true
现在,zypper up 将安装来自任何厂商的最新版本。并且 YaST 将用蓝色文本标记有可用更新的软件包,即使更新来自不同的厂商。

