我遇到了一个非常奇怪的问题。我已经设置了我的私人 yum 存储库,它可以很好地提供 rpm,除了一个 rpm。
假设我已经构建并将所有 rpm 复制到我的自定义 repo 目录,如下所示:
postgresql-myStuff11-11.7-2.el8.x86_64.rpm
postgresql-myStuff11-libs-11.7-2.el8.x86_64.rpm
postgresql-myStuff11-devel.7-2.el8.x86_64.rpm
postgresql-myStuff11-docs-11.7-2.el8.x86_64.rpm
...
它们全部都在那里,我清除了我的 yum 缓存,重建了我的 yum repo,createrepo --update
甚至删除了整个repodata
文件夹并重新创建它等。但无论我做什么,当我运行(或 myStuff11 等)时,它都找不到我的主包yum search myStuff
。
它只会返回除主包之外的所有其他内容。
Searching Packages:
==========================================================================================
Name Matched: myStuff11
==========================================================================================
postgresql-myStuff11-libs.x86_64 : The shared libraries required for any PostgreSQL clients
Repo : @System
Matched from:
Provide : postgresql-myStuff11-libs = 11.7-2.el8
...
起初,我以为可能是因为Name:
我的 spec 文件内部使用了定义的变量,但即使在我将它更改为字符串后,它仍然是完全相同的东西......
问题:
- 您如何才能
yum
看到包裹postgresql-myStuff11-11.7-2.el8.x86_64.rpm
?
答案1
无论出于什么原因,我都必须createrepo
使用数据库 ( -d
) 标志。下面是我为使其工作/显示我的包所做的操作。
- 转到你的 YUM repo 文件夹,例如:
cd /opt/myrepo
rm -rf repodata
,擦拭干净- 重新创建 repo 但使用数据库,
createrepo -v -d .
(在.
哪里/opt/myrepo
)
然后,在您的远程机器上,您可以运行yum update --refresh
以获取新的更改。
如果没有该-d
标志,它就无法列出/显示我构建的所有软件包,我不知道为什么。环境是在 RHEL 8 系统中,因此这可能是(也可能不是)特定于 的错误createrepo
。
createrepo --version
Version: 0.17.7 (Features: DeltaRPM LegacyWeakdeps )