如何在不知道其版本号的情况下以编程方式安装最新的epel-release rpm?

Cra*_*ide 11 centos rpm yum

我在这里的第一篇文章,但我google了,找不到一个简单的方法来做到这一点.

我有一个程序,当它们上线时自动配置新的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
Run Code Online (Sandbox Code Playgroud)

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

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

任何人都知道一种简单的(非硬编码)方式来下载最新的epel rpm而不知道版本号?我希望有一种方式不会涉及到repo文件列表中的卷曲和grep'ing url,但好奇有人可能会建议什么?

小智 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
Run Code Online (Sandbox Code Playgroud)

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

  • **CentOS用户注意事项**您可以通过运行yum install epel-release来安装EPEL.该软件包包含在CentOS Extras存储库中,默认情况下已启用.资料来源:https://fedoraproject.org/wiki/EPEL (6认同)
  • 这是一个好主意!我将其改编为Ansible剧本,以打破对几个硬编码的repo RPM URL的依赖:https://github.com/zigg/octothorpe/commit/c3b0cdf751a6818385925c7b358361e000076daf (2认同)