如何仅允许来自存储库的精确包更新?

如何仅允许来自存储库的精确包更新?

如果我有:

[usern@hostn yum.repos.d]$ cat google-chrome.repo 
[google-chrome]
name=google-chrome
baseurl=http://dl.google.com/linux/chrome/rpm/stable/i386
enabled=1
gpgcheck=1

...我怎样才能确保不会发生类似的事件(仅理论):Firefox 软件包出现在 google chrome 存储库中,并且因为(再次只是理论)它有一个比原始存储库中的版本更新的版本更新时会安装吗?我如何确保从 google-chrome-repos 中我只获得 google-chrome 软件包?

答案1

在 repo 文件中,添加一行:

includepkgs=google-chrome*

这将只允许更新和安装google-chrome*从该存储库命名的软件包,所有其他软件包将被忽略。如果用空格分隔,则可以列出多个包。

从更一般的意义上来说,没有好的方法来处理具有 RPM 冲突的回购协议的问题。你必须选择你信任维护者的好的回购协议(我总是推荐EPEL)。有一些插件可能会对您有所帮助,例如百胜优先事项百胜保护基地但我一直用这个incpludepkgs方法。这需要做更多的工作,但我晚上可以睡得更好,因为我知道,当我不想要某个存储库中的某些 RPM 时,它不会消除来自不同存储库的其他 RPM。

答案2

安装软件包并关闭存储库 [enabled=0]。当您准备好更新时:

yum update

然后在所有其他更新后,打开存储库 [enabled=1]。

yum update chrome             

笔记:只是您想要使用该存储库的包。

然后再次关闭存储库,[enabled=0]。

听起来很痛苦,但一个简单的脚本就可以轻松完成。这是使用不受信任的存储库时的最佳方法。

如果有无法解决的冲突。这就是这个的目的:

LD_LIBRARY_PATH=/home/user/mylibs/:$LD_LIBRARY_PATH conflicted_program

答案3

对于其他遇到此 yum 的“--enablerepo”功能的人来说,它非常方便进行更新和其他操作,同时将其禁用。

安装仓库

禁用存储库

sed -i "s/enabled=1/enabled=0/g" /etc/yum.repos.d/google-chrome.repo

Oneliner 暂时启用存储库以从该存储库安装 chrome

yum --enablerepo=google-chrome install google-chrome-stable

Oneliner 暂时启用存储库以从该存储库更新 chrome

yum --enablerepo=google-chrome update google-chrome-stable

如果需要,您可以为更新命令添加别名。这比记住命令要容易得多。

alias updatechrome="yum --enablerepo=google-chrome update google-chrome-stable"

相关内容