yum安装软件包,而没有更新其他软件包或失败…?


10

有没有办法告诉yum安装程序包,选择当前安装的依赖项可以满足的程序包版本?

例如,如果我正在安装pecl软件包并且当前已安装php-5.4.11但有更新的软件包php-5.4.14可用。与其安装新软件包(而不是将所有php软件包更新为5.4.14),我只是希望它选择我要安装的较旧版本的软件包,而不更新所有其他软件包(否则将失败)。

这是一个特定的情况,在此情况下,我知道我可以排除或修复php软件包,但我正在寻找适用于任何安装的通用选项。

就像是:

yum install php-pecl-xxxx --no-updates

Answers:


10

临时解决方案:

使用-C标志:

sudo yum install foobar -C

永久解决方案:

使用yum.conf中metadata_expire标志来控制它。

编辑/etc/yum.conf并设定

metadata_expire=15d

您可以使用d,h或m来配置时间,以天,小时或分钟为单位

奖励:这是文档:

metadata_expire是元数据将过期的时间(以秒为单位)。因此,如果当前下载的元数据少于几秒钟,那么yum将不会针对存储库更新元数据。如果您发现yum并非像希望降低此选项的值那样频繁地下载更新信息。您还可以通过分别添加ad,h或m,将默认值从使用秒更改为使用天,小时或分钟。默认值为6小时,以补充每小时运行一次的yum-updatesd。也可以使用单词“从不”,这意味着元数据将永不过期。请注意,在使用metalink文件时,metalink必须始终比存储库的元数据更新,由于验证,因此此超时也适用于metalink文件。另请注意,“从不”不会覆盖“ yum clean expire-cache”


0

到目前为止,还没有遇到任何这样的选择。但是,如果您要安装该软件包而不进行升级,我建议您下载相同版本的rpm,然后再安装它。


0

yum-utils包有一个名为工具yumdownloader。您可以使用它从存储库下载而不安装。所有标准开关都--disablerepo适用。有关更多信息,请参见手册页

我认为您可以下载RPM,然后直接使用RPM做您想做的事情。


1
这是自动软件包安装系统的一部分,问题是我们不希望yum“安装最新版本”并“更新所需的所有内容”。我们真的只希望它安装与已经安装的软件包兼容的版本。基本上是installonly或install xxx -no-updates选项。
克林特·普里斯特

0

如果软件包的旧版本仍在您的yum存储库中,则可以运行yum install packagename-version-release.arch它,并且它将安装旧版本,而无需尝试升级到最新版本。如果您的yum存储库中有多个版本和体系结构,则需要使用全名,版本,发行版和arch。您可以通过yum list available 'packagename*'搜索“ packagename”开头的所有软件包来获取所有信息。如果您已经成功升级了软件包并希望降级到较早的版本,则可以运行yum downgrade packagename1 packagename2。您需要包括要降级的所有软件包的列表,因为它可能涉及很多依赖项。

如果旧版本不在您的yum存储库中,则只需从找到旧软件包的位置下载它,然后yum install /path/to/package.rpm使用进行安装,尽管我会提醒您不要安装来自不受信任来源的软件包。


但是,如果yum只选择可用的最新兼容版本,它将更加有用。
forcefsck

可以,但是由打包者来定义合适的需求。
jsbillings

有时,要求会包含在较旧的软件包中,但是yum坚持只选择最新的软件包。例如。在上述情况下,如果系统版本锁定为php-5.4.11,则yum应该可以自动选择php-pecl-5.4.11。对于自动化来说可能是个问题。
forcefsck

如果旧版本没有依赖性,则Yum仅将更新为最新版本。在上述情况下,pecl软件包从未要求版本要求。百胜无法理解您的想法并选择任意版本,除非您在需求中指明了哪个版本,或者通过对pecl和php软件包进行版本锁定。
jsbillings 2015年

特别是对于此示例,假设php无法升级(版本锁定或存储库上没有可用的较新软件包),则yum可以选择不需要php升级的pecl最新版本。这不完全是读心术,我相信apt-get已经做到了。同样,如果您需要安装额外的软件包而不升级一半的系统,并且需要yum足够聪明以处理请求,则这是自动化的问题,即,如果存在多个版本,则选择与已安装的软件包兼容的最新版本无论出于何种原因都无法升级。
forcefsck 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.