我如何在不清理缓存的情况下看到本地仓库的更新?


19

我已经建立了一个本地yum存储库,用于安装测试版本。出于测试目的,我的软件包的版本由<svn version number>.<date>.<time>(例如12345.20110908.150404

问题是,一旦我创建了新的RPM,将其复制到存储库目录并运行createrepo $REPO_DIR,yum就不会看到新的RPM。

$ cd $REPO_DIR
$ ls -1
repodata
package-12345.20110908.150404-1.x86_64.rpm
package-12345.20110908.174329-1.x86_64.rpm

$ createrepo .
# ...snip...

$ rpm -q package
package-12345.20110908.150404-1.x86_64

$ yum list --showduplicates package
Installed Packages
package.x86_64    12345.20110908.150404-1    @repo
Available Packages
package.x86_64    12345.20110908.150404-1    repo

我可以看到更新并在运行时获取它们yum clean all,然后重新获取元数据,但是我认为这只是意味着我需要从存储库中执行其他操作,因为我不必为其他yum存储库执行此操作。

我需要如何设置本地存储库,以便仅从yum update客户端运行而不必清理yum缓存?

Answers:


24

您可以运行“ yum clean expire-cache”,这是告诉yum检查存储库的更有效的方法。...另一件事是更改本地存储库的metadata_expire值。(请参见man yum.conf)。


有没有一种方法可以只对特定的存储库进行过期缓存?
myroslav 2014年

1
唯一简单的方法是--disablerepo = * --enablerepo = myrepo,otherrepo ...尽管您可以创建一个别名,但是您会做很多事情。
詹姆斯·安提尔

11

尝试在Yum客户端的/etc/yum.conf中添加以下行:

metadata_expire = 1m

以下命令向您显示更多信息:

man yum.conf

仅供参考。CentOS 5的参数已被注释掉。CentOS 6.2的值为90m。


这有点旧,但是我碰到了这个。您可以通过编辑/etc/yum.repos.d/my.repo文件为单个存储库设置此值。
jwm

3

yum clean metadata yum仅清除缓存的名称,然后,yum重新加载其可用内容的想法。


0

遇到同样的问题,请尝试:

百胜清理所有


1
请仔细阅读问题。我相信他正在寻找一种无需清除缓存的替代方法。
slm

上帝,你是如此正确:|
Jobwat

0

yum的--enablerepo = localrpmrepo是您要使用的选项。所以

yum --enablerepo=localrpmrepo clean metadata

用您的存储库名称替换localrpmrepo


不,在这种情况下,问题当然在于它认为高速缓存仍然有效并且不检查更新。
Falcon Momot 2014年

我只能使用此语句更新一个存储库,而另一个可以更新:yum --disablerepo=* --enablerepo=epel clean metadata -q; yum check-update --disablrepo=* --enablerepo=epel -q。我将做一个bash函数并完成它!
bgStack15 '16
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.