RPM文件名与maven生成的元数据名称之间的映射

RPM文件名与maven生成的元数据名称之间的映射

我们有一个 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.gzx86_64系统,我可以运行以下命令:

curl -L https://packagecloud.io/joe/mystuff/el/6/x86_64/repodata/primary.xml.gz | zless

相关内容