我遇到了一个奇怪的问题,yum 在一台服务器上工作,但在另一台服务器上却不工作应该相同。
症状是在包含 RPM 的目录上运行 createrepo 后(并在 /etc/yum.repos.d 中创建名为“foo”的定义):
yum list available --disablerepo=* --enablerepo=foo
在一台服务器上显示全部 23 个 RPM,但在另一台服务器上仅显示其中 7 个。
在仅显示 7 个 RPM 的服务器上,我仍然可以通过运行以下命令查看丢失的 RPM
yum search <package_name> --disablerepo=* --enablerepo=foo
我检查过:
- SELinux-两台服务器上均已禁用
- 操作系统版本 - 两者均为 RHEL 6.4
- 内核 - 两者相同
- Yum 和 createrepo 命令的版本
那么,服务器之间可能存在哪些差异,从而造成此问题?
答案1
如果软件包已安装,它将不会显示为可用。您可以指定选项--showduplicates
以查看存储库中可用的所有内容,无论是否已安装。我建议比较在两台服务器上运行以下命令的输出。如果两台服务器访问同一个存储库,则输出应该是相同的:
yum list available --disablerepo=* --enablerepo=foo --showduplicates
答案2
或者你可以尝试这个
yum list --showduplicates | grep foo
“yum list”列出了所有已安装或可用的软件包,“--showduplicates”显示所有已启用存储库中的所有软件包,即使它们已在另一个存储库中看到过,然后只需 grep 您的存储库名称即可查看本地存储库提供的内容
答案3
yum list available
不会显示已安装在该系统上的软件包。
尝试这个:
- 列出特定 repo 中的所有软件包(包括已安装的软件包):
sudo yum repo-pkgs "<repo name>" list
- 列出特定 repo 中已安装的软件包:
sudo yum repo-pkgs "<repo name>" list installed