有没有办法告诉yum
安装包,选择当前安装的依赖项可以满足的包版本?
例如,如果我正在安装 pecl 软件包,并且当前已安装,php-5.4.11
但有更新的软件包php-5.4.14
可用。我不想安装新包(并将所有 php 包更新到 5.4.14),我只是希望它选择我请求安装的包的旧版本,而不更新所有其他包(如果无法完成,则失败)。
这是一个特定的情况,我知道我可以排除或修复 php 包,但我正在寻找一个适用于任何安装的通用选项。
就像是:
yum install php-pecl-xxxx --no-updates
答案1
临时解决方案:
使用 -C
( --cacheonly
) 标志:
sudo yum install foobar -C
参考:在 Red Hat Enterprise Linux 6 中使用 Yum 缓存。
永久解决方案:
使用metadata_expire
您的选项yum.conf
来控制这个。
编辑/etc/yum.conf
并设置
metadata_expire=15d
您可以使用d
,h
或m
来配置时间天、小时或者分钟。
这是文档:
元数据过期 是元数据过期的时间(以秒为单位)。因此,如果当前下载的元数据少于这么多秒,那么 yum 将不会根据存储库更新元数据。如果您发现 yum 没有像您希望的那样经常下载更新信息,请降低此选项的值。您还可以通过分别附加 ad、h 或 m,从使用秒的默认值更改为使用天、小时或分钟。默认值为 6 小时,以补充 yum-updatesd 每小时运行一次。也可以使用“从不”一词,这意味着元数据永远不会过期。请注意,使用 metalink 文件时,由于验证原因,metalink 必须始终比存储库的元数据更新,因此此超时也适用于 metalink 文件。另请注意,“从不”不会覆盖“yum clean expire-cache”
- 来源:百胜.conf(5)
答案2
软件包中yum-utils
有一个名为 的工具yumdownloader
。您可以使用它从存储库下载而无需安装。所有标准开关都--disablerepo
适用。请参阅手册页了解更多信息。
我认为您可以下载 RPM,然后直接使用 RPM 执行您想要的操作。
答案3
如果旧版本的软件包仍在您的 yum 存储库中,那么您只需运行yum install packagename-version-release.arch
它即可安装旧版本,而无需尝试升级到最新版本。如果 yum 存储库中有多个版本和体系结构,则需要使用全名、版本、发行版和架构。您可以通过运行yum list available 'packagename*'
搜索以“packagename”开头的所有包来获取所有这些信息。如果您已成功升级软件包并想要降级到旧版本,您可以运行yum downgrade packagename1 packagename2
.您需要包含要降级的所有软件包的列表,因为它可能会涉及很多依赖项。
如果旧版本不在您的 yum 存储库中,则只需从找到旧软件包的位置下载它并使用 来安装它yum install /path/to/package.rpm
,尽管我会警告不要从不受信任的来源安装软件包。