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