我们有一个 Sonatype Nexus 存储库,我们使用 Maven RPM 插件在其中发布 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