Подтвердить что ты не робот

Как программно установить последнюю версию epel-release, не зная ее номер версии?

Мой первый пост здесь, но я googled вокруг и не могу найти простой способ сделать это.

У меня есть программа, которая автоматически настраивает новые серверы CentOS Linux, когда они выходят онлайн. В рамках процесса он устанавливает последнюю версию RPM-версии epel-release.

Используемая мной команда выглядит так:

$ 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, мои сценарии будут терпеть неудачу, потому что они не знают, что такое версия.

Мне не удалось найти ссылку, которая может перенаправить на последний файл epel rpm, поэтому у меня нет выбора, кроме как жестко закодировать версию в мои сценарии установки и изменить ее при неудаче.

Кто-нибудь знает простой (не жестко запрограммированный) способ загрузить последнюю версию epel, не зная номер версии? Я надеюсь на способ, который не включает dong curl в списке файлов repo и grep'ing url, но любопытно, что кто-нибудь может предложить?

4b9b3361

Ответ 1

Следующий script выполнит трюк:

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.

Ответ 3

Сделайте это прямо из оболочки:

$ 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 и код HTML из http://dl.fedoraproject.org должен быть последовательным на всех платформах, поэтому это должно работать на всех платформах.

Для потомков, здесь это более подробно:

$ 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%]