Сопоставление имен файлов 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'?

1 ответ

В репозиториях 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
Другие вопросы по тегам