rpm2cpio ignora arquivos do RPM

4

Estas etapas são de uma caixa rodando o CentOS 6.5. Eu apenas tentei converter um pacote RPM para um arquivo CPIO e fiquei surpreso ao encontrar arquivos listados no RPM, mas ausentes do arquivo. Aqui estão os passos dados.

Listar caminhos no RPM:

$ rpm -qlp sssd-1.9.2-82.4.el6_4.x86_64.rpm | sort > rpm.lst

Converta o RPM em um arquivo CPIO:

$ rpm2cpio sssd-1.9.2-82.4.el6_4.x86_64.rpm > sssd-1.9.2-82.4.el6_4.x86_64.cpio

Salve a lista de arquivos no arquivo. O filtro sed é necessário para remover as entradas de pontos principais dos nomes de caminhos. Isso não é necessário para a listagem do RPM.

$ cpio -i -t < sssd-1.9.2-82.4.el6_4.x86_64.cpio | sed -e 's|^.||' | sort > cpio.lst

Finalmente, o diff mostrando os arquivos ausentes:

$ diff -u cpio.lst rpm.lst

--- cpio.lst        2015-07-16 19:54:06.020494348 +0530
+++ rpm.lst         2015-07-16 19:53:38.012494371 +0530
@@ -2,6 +2,7 @@
 /etc/rc.d/init.d/sssd
 /etc/rwtab.d/sssd
 /etc/sssd
+/etc/sssd/sssd.conf
 /usr/bin/sss_ssh_authorizedkeys
 /usr/bin/sss_ssh_knownhostsproxy
 /usr/lib64/ldb/modules/ldb/memberof.so
@@ -102,6 +103,8 @@
 /var/lib/sss
 /var/lib/sss/db
 /var/lib/sss/mc
+/var/lib/sss/mc/group
+/var/lib/sss/mc/passwd
 /var/lib/sss/pipes
 /var/lib/sss/pipes/private
 /var/lib/sss/pubconf

Por que existem arquivos presentes no RPM, mas ausentes no arquivo do CPIO? Meu interesse foi especialmente em /etc/sssd/sssd.conf porque eu queria ver um exemplo de arquivo de configuração. Estamos usando um pacote sssd mais antigo que o proveniente de CentOS . Repeti os passos acima com o pacote do CentOS. O resultado foi o mesmo.

    
por pdp 17.07.2015 / 07:08

2 respostas

2

A entrada para sssd.conf do arquivo sssd spec é:

%ghost %attr(0600,root,root) %config(noreplace) %{_sysconfdir}/sssd/sssd.conf

Citações de RPM máximo sobre o %ghost directive:

By adding this directive to the line containing a file, RPM will know about the ghosted file, but will not add it to the package. However it still needs to be in the buildroot.

Portanto, rpm2cpio que faz parte do mesmo pacote que rpm ignora os arquivos fantasmas ao converter para um arquivo morto de CPIO.

    
por 06.02.2016 / 19:40
2

Esses arquivos são arquivos vazios, portanto, eles não estão incluídos no arquivo cpio, mas estão listados em rpm, mesmo depois de instalar o rpm e se você verificar com rpm -V sssd - ele terá saída normal, porque ele é listado no rpmdb dessa forma, mesmo quando os arquivos são excluídos, aqui está um trecho do SRPM:

p.s. caso muito interessante!

    
por 17.07.2015 / 08:04

Tags