Como depurar um RPM que não será desinstalado

1

Eu construí um RPM usando a biblioteca redline rpm para java. Quando tento desinstalar o rpm, ele diz que foi removido, mas quando eu faço uma lista, ele ainda está lá e diz que ainda está instalado.

Aqui estão os resultados da minha desinstalação com o máximo de depuração que eu sei como dar.

[root@localhost ~]# rpm -e -vvvvv kairosdb
D: opening  db environment /var/lib/rpm/Packages joinenv
D: opening  db index       /var/lib/rpm/Packages rdonly mode=0x0
D: locked   db index       /var/lib/rpm/Packages
D: opening  db index       /var/lib/rpm/Name rdonly mode=0x0
D:  read h#     992 Header SHA1 digest: OK (53816c2a5bea603626b3464fcccee15a95914aab)
D: ========== --- kairosdb-1.0.0-beta-2-4 noarch/linux 0x0
D: opening  db index       /var/lib/rpm/Requirename rdonly mode=0x0
D: ========== recording tsort relations
D: ========== tsorting packages (order, #predecessors, #succesors, tree, depth, breadth)
D:     0    0    0    0    1    0   -kairosdb-1.0.0-beta-2-4.noarch
D: closed   db index       /var/lib/rpm/Requirename
D: closed   db index       /var/lib/rpm/Name
D: closed   db index       /var/lib/rpm/Packages
D: closed   db environment /var/lib/rpm/Packages
D: opening  db environment /var/lib/rpm/Packages joinenv
D: opening  db index       /var/lib/rpm/Packages create mode=0x42
D: mounted filesystems:
D:     i        dev    bsize       bavail       iavail mount point
D:     0 0x0000fd00     4096      1084597      1715537 /
D:     1 0x00000003     4096            0           -1 /proc
D:     2 0x00000000     4096            0           -1 /sys
D:     3 0x0000000c     4096            0           -1 /dev/pts
D:     4 0x00000801     1024        77147        26063 /boot
D:     5 0x00000014     4096        64358        64357 /dev/shm
D:     6 0x00000015     4096            0           -1 /proc/sys/fs/binfmt_misc
D:     7 0x00000016     4096            0           -1 /var/lib/nfs/rpc_pipefs
D: sanity checking 1 elements
D: running pre-transaction scripts
D: computing 123 file fingerprints
D: computing file dispositions
D: opening  db index       /var/lib/rpm/Basenames create mode=0x42
D: ========== --- kairosdb-1.0.0-beta-2-4 noarch-linux 0x0
D:     erase: kairosdb-1.0.0-beta-2-4 has 123 files, test = 0
D: opening  db index       /var/lib/rpm/Name create mode=0x42
D:  read h#     992 Header SHA1 digest: OK (53816c2a5bea603626b3464fcccee15a95914aab)
D: running post-transaction scripts
D: closed   db index       /var/lib/rpm/Basenames
D: closed   db index       /var/lib/rpm/Name
D: closed   db index       /var/lib/rpm/Packages
D: closed   db environment /var/lib/rpm/Packages
D: May free Score board((nil))

Não vejo erros e os arquivos ainda estão lá. Algo deve ter dado errado porque não funcionou! Como depuro isso?

EDIT: Informação adicional: O rpm será desinstalado se eu usar a opção --noscripts na desinstalação. Eu tentei construir o rpm sem nenhum script e ele ainda não desinstala.

    
por user2344853 02.05.2013 / 23:29

1 resposta

2

Espero que você tenha descoberto seu problema até agora, mas o problema subjacente é que você tem traços no seu número de versão: 1.0.0-beta-2

O

redline rpm atualmente permite que você faça isso, mesmo que a especificação de rpm não permita isso. Infelizmente, uma vez que um rpm inválido é criado, nenhuma das ferramentas de rpm lhe dará qualquer forma de saber isso, além de um comportamento estranho.

Nesse caso, você deve ter conseguido instalar o mesmo rpm várias vezes sem reclamar que já existe uma instância instalada. E ao tentar apagá-lo, é na verdade uma tentativa de executar o gatilho unguento e pós-scriplets (não o geral preun e postun scriptlets que falha quase silencioso - que não seja um 255 código de retorno).

A Redline não deve permitir isso, e a ferramenta de rpm não deve tentar instalar um rpm desse tipo, mas esse é o estado atual das coisas.

-Spencer

    
por 07.11.2013 / 14:00

Tags