11

我在这里的第一篇文章,但我用谷歌搜索并找不到一个简单的方法来做到这一点。

我有一个程序可以在新的 CentOS Linux 服务器上线时自动配置它们。作为该过程的一部分,它会安装最新版本的 epel-release rpm。

我使用的命令如下所示:

$ rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-7.noarch.rpm && \
     yum clean all

这很好用……直到他们将 rpm 文件更改为 epel-release-6-8.noarch,然后是 epel-release-6-9.noarch,等等。他们似乎每 3-4 个月更新一次版本。这是一个问题,因为如果存储库更新了 epel-release 版本号,我的脚本将失败,因为它不知道该版本应该是什么。

我找不到可能重定向到最新 epel rpm 文件的链接,所以我别无选择,只能将版本硬编码到我的安装脚本中,并在它们失败时更改它。

有人知道在不知道版本号的情况下下载最新 epel rpm 的简单(非硬编码)方法吗?我希望有一种不涉及在 repo 文件列表上卷曲和 grep'ing url 的方法,但好奇有人会建议什么?

4

3 回答 3

21

以下脚本可以解决问题:

cat <<EOM >/etc/yum.repos.d/epel-bootstrap.repo
[epel]
name=Bootstrap EPEL
mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=epel-\$releasever&arch=\$basearch
failovermethod=priority
enabled=0
gpgcheck=0
EOM

yum --enablerepo=epel -y install epel-release
rm -f /etc/yum.repos.d/epel-bootstrap.repo

它应该适用于 RHEL/CentOS 5 和 6。我没有测试版本 4。

于 2013-01-04T10:26:01.310 回答
4

EPEL 项目最近为 epel-release 包实现了“最新的”符号链接。

https://dl.fedoraproject.org/pub/epel/epel-release-latest-5.noarch.rpm
​<a href="https://dl.fedoraproject.org/pub/epel/epel-release-latest -6.noarch.rpm" rel="nofollow">https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
https://dl.fedoraproject.org/pub/ epel/epel-release-latest-7.noarch.rpm

https://fedorahosted.org/epel/ticket/8#comment:12

于 2015-03-26T16:06:12.417 回答
0

直接从 shell 执行:

$ EPEL_BASEURL=http://dl.fedoraproject.org/pub/epel/$(awk '/rhel/ {print $2}' /etc/rpm/macros.dist)/$(uname -p)/
$ rpm -ivh $EPEL_BASEURL$(curl -s $EPEL_BASEURL | grep epel-release | awk -F'<|>' '{print $5}')
Retrieving http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
warning: /var/tmp/rpm-tmp.zRXE1U: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
Preparing...                ########################################### [100%]
   1:epel-release           ########################################### [100%]

我已经在 CentOS 6.4、6.5 和 6.6 以及 RHEL 6.5 和 6.6 上对此进行了测试,但是 /etc/rpm/macros.dist 的内容和来自http://dl.fedoraproject.org的 HTML 代码应该在所有平台上保持一致,所以这应该适用于所有平台。

为了后代的缘故,这里有更多细节:

$ EPEL_BASEURL=http://dl.fedoraproject.org/pub/epel/$(awk '/rhel/ {print $2}' /etc/rpm/macros.dist)/$(uname -p)/
# http://dl.fedoraproject.org/pub/epel/6/x86_64/
$ EPEL_RELEASE_RPM=$(curl -s $EPEL_BASEURL | grep epel-release | awk -F'<|>' '{print $5}')
# epel-release-6-8.noarch.rpm
$ EPEL_RELEASE_RPMURL=$EPEL_BASEURL$EPEL_RELEASE_RPM
# http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
$ rpm -ivh $EPEL_RELEASE_RPMURL
Retrieving http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
warning: /var/tmp/rpm-tmp.ep6xy3: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
Preparing...                ########################################### [100%]
   1:epel-release           ########################################### [100%]
于 2015-02-14T18:26:28.680 回答