У нас есть репозиторий Sonatype Nexus, в котором мы публикуем RPM с плагином Maven RPM. Доступны снэпшоты и релизные версии. Проблема здесь в сопоставлении версий.
Сначала я получаю список снимков в Nexus:
yum --showduplicates --disablerepo=* --enablerepo=snapshot list myrpm
Loaded plugins: downloadonly, fastestmirror, security
Loading mirror speeds from cached hostfile
Available Packages
myrpm.noarch 0.10.6-SNAPSHOT20141128065137 snapshot
myrpm.noarch 0.10.6-SNAPSHOT20141128135713 snapshot
myrpm.noarch 0.10.6-SNAPSHOT20141128170402 snapshot
myrpm.noarch 0.10.6-SNAPSHOT20141201085055 snapshot
Я хочу получить конкретную версию, например 0.10.6-SNAPSHOT20141201085055:
yumdownloader --disablerepo=* --enablerepo=snapshot myrpm-0.10.6-SNAPSHOT20141201085055
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
wpsnapshot | 3.3 kB 00:00
myrpm-0.10.6-20141201.091715-23-rpm.rpm | 10 MB 00:11
Мой вопрос: как работает сопоставление между версиями «SNAPSHOT20141201085055» и «20141201.091715-23»?
Репозитории yum имеют метаданные XML, которые описывают каждый пакет, доступный в репозитории. В вашем репозитории, вероятно, есть что-то вроде следующего:
<package type="rpm">
<name>myrpm</name>
<version epoch="0" rel="SNAPSHOT20141201085055" ver="0.10.6"/>
<!-- other fields here -->
<location href="myrpm-0.10.6-20141201.091715-23-rpm.rpm"/>
</package>
Вы можете проверить это, изучив метаданные своего репозитория. Для этого вам сначала понадобится URL-адрес репозитория, который вы можете найти в соответствующем файле для вашего репозитория в /etc/yum.repos.d/
.
Когда у вас есть базовый URL, вы можете добавить «/repodata/primary.xml.gz» в конец URL. Обязательно замените $basearch
с вашей архитектурой. Тогда ты можешь curl
этот URL и передать его zless
чтобы просмотреть это.
Например, в моей системе у меня есть собственный репозиторий программного обеспечения с таким базовым URL:
baseurl=https://packagecloud.io/joe/mystuff/el/6/$basearch
Итак, чтобы просмотреть мои primary.xml.gz
для меня x86_64
систему, я бы запустил это:
curl -L https://packagecloud.io/joe/mystuff/el/6/x86_64/repodata/primary.xml.gz | zless