我有一些CentOS实例,其中一些已经被开发者使用,并且启用了第三方回购(有时是他们自己的)。 但是从pipe理的angular度来看,能够强制通过脚本更新而不会干扰本地的yum.conf,或者通过parsing输出或yum.repos.d来查看哪个是违规的破产回购。
看起来开发人员有这个select的眼睛,
-t, --tolerant
但显然这比他们所预期的要更具挑战性,因为在手册页中;
This option currently does nothing.
很明显,当我手动完成这个工作时,我可以用这个工具来解决这个问题。
yum --disablerepo=broken-repo deplist mypackage
并使脚本更新更健壮,我可以使用(至less肯定会安装发行版更新)
yum -y --disablerepo=* --enablerepo=updates update
但是这并不能说明EPEL,rpmforge或者rbel,或者某些软件包发行版,我必须首先parsingyum.repos.d文件。
这个脚本可以有所帮助:
LC_ALL=C yum repolist 2>/dev/null \ | awk '/^repo id/ {A=1; next} /^[a-zA-Z0-9_-]+ / {if(A) print $1}' \ | xargs -i yum -y --disablerepo=* --enablerepo={} update # Some packages may need packages from other repository yum -y update
它通过使用yum repolist
获取存储库列表,使用awk
从输出中select存储库名称,然后尝试将它们全部更新为一个。
这不是100%可靠的,因为它取决于不变的yum输出格式。 另外,如果更新需要从不同的存储库安装另一个软件包,并且存在破损的存储库,那么它将会失败 – 但是我认为它并不常见。