Você pode executar rpm -q --scripts packagename
para ver o que é executado quando um pacote é instalado ou desinstalado. Se você está olhando para um pacote que ainda não instalou, pode executar rpm -q --scripts -p /path/to/package.rpm
.
Estou tentando dividir um pacote rpm em uma lista de comandos (não apenas o conteúdo do arquivo). Eu gostaria de saber o que tudo e em que ordem é executado quando você executa
yum install --nogpgcheck mypackage.rpm
Eu obtenho o conteúdo do arquivo executando:
rpm -q -filesbypkg -p mypackage.rpm
Você pode executar rpm -q --scripts packagename
para ver o que é executado quando um pacote é instalado ou desinstalado. Se você está olhando para um pacote que ainda não instalou, pode executar rpm -q --scripts -p /path/to/package.rpm
.
Eu não vi um método para fazer isso diretamente com apenas interruptores YUM, o que me surpreende. O único método que eu poderia determinar como você poderia fazer algo assim era utilizar strace
da seguinte forma:
$ strace -s 2000 -o yum.log yum install --nogpgcheck mypackage.rpm
Esteja avisado, esta saída é bem sucinta. Veja um exemplo de como a saída será:
execve("/usr/bin/yum", ["yum", "list", "installed"], [/* 92 vars */]) = 0
brk(0) = 0x2107000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f65a3019000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=186018, ...}) = 0
mmap(NULL, 186018, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f65a2feb000
close(3) = 0
open("/lib64/libpython2.7.so.1.0", O_RDONLY|O_CLOEXEC) = 3
...
...
stat("/usr/bin/rpm", {st_mode=S_IFREG|0755, st_size=27256, ...}) = 0
open("/usr/bin/rpm.so", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/bin/rpmmodule.so", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/bin/rpm.py", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/bin/rpm.pyc", O_RDONLY) = -1 ENOENT (No such file or directory)
...
...
stat("/usr/lib64/python2.7/site-packages/rpm", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
stat("/usr/lib64/python2.7/site-packages/rpm/__init__.py", {st_mode=S_IFREG|0644, st_size=2018, ...}) = 0
stat("/usr/lib64/python2.7/site-packages/rpm/__init__", 0x7fff8e4d15a0) = -1 ENOENT (No such file or directory)
open("/usr/lib64/python2.7/site-packages/rpm/__init__.so", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib64/python2.7/site-packages/rpm/__init__module.so", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib64/python2.7/site-packages/rpm/__init__.py", O_RDONLY) = 4
fstat(4, {st_mode=S_IFREG|0644, st_size=2018, ...}) = 0
open("/usr/lib64/python2.7/site-packages/rpm/__init__.pyc", O_RDONLY) = 5
fstat(5, {st_mode=S_IFREG|0644, st_size=2804, ...}) = 0
Se você mergulhar nessa saída, notará que o yum localiza os arquivos:
/usr/bin/rpm
/usr/lib64/python2.7/site-packages/rpm/__init__.py
A presença dessa segunda linha provavelmente vai matar sua tentativa de fazer o que você quer. Acredito que o que está acontecendo aqui é que o YUM faz uso de uma biblioteca wrapper escrita em Python que o integra aos comandos RPM, mas é mais provável que seja uma biblioteca para funções RPM, e assim você não encontrará uma direta para uma lista de Comandos RPM saindo do YUM enquanto executa várias tarefas.
Tags package-management rhel