我正在使用 CentOS,我已经构建了一个存储库并将软件包放在上面,从另一台服务器进行测试,一切都很好。
当我在存储库中添加新包并执行时:
$ createrepo -v /var/www/html/centos/6.5/updates/x86_64/Packages/
尝试安装最近从添加了我的存储库的服务器添加的最后一个包,但直到我在同一服务器上执行后它才起作用:
$ yum clean all
这是正常情况吗?
答案1
到目前为止,这是“正常”行为,您调用“yum update”的服务器确实保留了存储库上可用软件包的缓存。当您调用“yum clean all”时,该缓存将被删除,服务器需要再次向存储库询问可用包的列表 - 包括您刚刚添加的包。
实际发生了什么
- 您将一个新包添加到机器 A 上的存储库中
- 您调用 createrepo - 存储库信息已更新
- 你跳转到服务器 B,其中包含机器 A 的存储库
- 您在 B 上调用“yum update” - 上次 yum 运行并不是很久以前,因此 yum 不会(!)连接到 A,而仅检查本地缓存;由于本地缓存已经存在几个小时了,因此您的新包不会在那里列出
- 现在,由于您感到不安,您在 B 上拨打“yum clean all”[您也可以等待一段时间]
- B 上的所有缓存都被删除
- 在 B 上再次调用“yum update”会强制 B 连接到服务器,拉取所有当前数据 - 从而能够看到您的新包
答案2
对我来说,这听起来不像正确的行为。 YUM 下载的 RPM 保存在/var/cache/yum
.
例子
从 Fedora 19 系统:
$ pwd
/var/cache/yum
请注意所有目录,每个存储库都有一个目录:
$ tree . -L 3 -d
.
`-- x86_64
`-- 19
|-- fedora
|-- fedora-debuginfo
|-- google-chrome
|-- home_pstavirs_ostinato
|-- home_tpokorra_mono
|-- livna
|-- livna-debuginfo
|-- rpmfusion-free
|-- rpmfusion-free-debuginfo
|-- rpmfusion-free-updates
|-- rpmfusion-free-updates-debuginfo
|-- rpmfusion-nonfree
|-- rpmfusion-nonfree-debuginfo
|-- rpmfusion-nonfree-updates
|-- rpmfusion-nonfree-updates-debuginfo
|-- rpm-sphere
|-- updates
|-- updates-debuginfo
`-- virtualbox
21 directories