Назад | Перейти на главную страницу

Сопоставление имен файлов RPM и имен метаданных, созданных maven

У нас есть репозиторий 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