![配置 yum 安装私有构建的 rpm](https://linux22.com/image/767252/%E9%85%8D%E7%BD%AE%20yum%20%E5%AE%89%E8%A3%85%E7%A7%81%E6%9C%89%E6%9E%84%E5%BB%BA%E7%9A%84%20rpm.png)
我需要安装一些我自己构建的 RPMS 到 RHEL8.3 中。我创建 RPMS,然后将它们添加到 red hat 的 iso 映像中。我将它们添加到 BaseOS 目录下,当安装 red hat 时,我挂载映像并配置 /etc/yum.repos.d/something.repo,如下所示。
[InstallMedia]
name=Red Hat Enterprise Linux 8.3.0
enabled=1
baseurl=file:///mnt/old_valid/BaseOS
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
mediaid=None
metadata_expire=-1
gpgcheck=1
cost=500
一切正常,我可以运行 yum update 并看到一切正常。当我尝试安装我的私有构建 rpm 时,我得到了
Error: Unable to find a match: svr_common
即使二进制文件在那里。
我尝试通过提供安装目录下的 rpm 的完整路径来安装它,然后这样可行。
yum install /mnt/old_valid/BaseOS/Packages/svr_common-0.0-10000.x86_64.rpm
似乎还有一些其他的东西我需要在 repo 中配置但不确定那是什么。
答案1
当您指向yum
存储库时,它不会遍历存储库来搜索 *.rpm 文件,它最初只尝试访问存储库元数据。
这些元数据文件为 yum 提供了该 repo 中可用软件包(以及更多)的概览,并使 yum 操作更加便捷。
对现有 repo 进行更改后或为自定义 RPM 文件创建新的 repo 时,您需要更新/生成 repo 元数据,否则 yum 将无法检测到这些更改。
您需要安装该createrepo
包,然后使用相同的 createrepo 命令。
cd /mnt/old_valid/BaseOS
createrepo --database /mnt/old_valid/BaseOS
诸如此类的附加标志--update
可以加速对仅进行了少量更改的现有 repo 进行 createrepo 操作。