Mapeamento entre nomes de arquivos RPM e nomes de metadados gerados pelo maven

1

Temos um repositório Sonatype Nexus, onde publicamos RPMs com o plugin Maven RPM. Instantâneos e versões de lançamento estão disponíveis. A questão aqui é em torno do mapeamento entre versões.

Primeiro, obtenho uma lista de instantâneos no 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

Eu quero buscar uma versão específica, por exemplo, 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

Minha pergunta é como o mapeamento entre as versões 'SNAPSHOT20141201085055' e '20141201.091715-23' funcionou?

    
por Jepper 03.12.2014 / 10:34

1 resposta

2

Os repositórios yum possuem metadados XML que descrevem cada pacote disponível no repositório. Em seu repositório, você provavelmente tem algo como o seguinte:

<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>

Você pode verificar isso examinando os metadados do seu repositório. Para fazer isso, primeiro você precisa do URL do repositório, que você pode encontrar no arquivo apropriado para o seu repositório em /etc/yum.repos.d/ .

Quando tiver o URL base, você poderá acrescentar "/repodata/primary.xml.gz" ao final do URL. Certifique-se de substituir $basearch pela sua arquitetura. Então você pode curl desse URL e canalizá-lo para zless para visualizá-lo.

Por exemplo, no meu sistema, tenho meu repositório personalizado de software com um URL de base como este:

baseurl=https://packagecloud.io/joe/mystuff/el/6/$basearch

Então, para ver o meu primary.xml.gz do meu sistema x86_64 , eu executaria isso:

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

Tags