Como obter a ordem em que o rpm instalará um conjunto de novos pacotes?

Como obter a ordem em que o rpm instalará um conjunto de novos pacotes?

Eu tenho um conjunto de pacotes rpm. Vou instalar todos de uma vez, mas antes quero saber a ordem em que serão instalados. Eu sei que se eu fornecer todos eles ao gerenciador de pacotes em ordem aleatória, o gerenciador determinará as dependências entre eles e os instalará na ordem correta. Como consigo esse pedido?

Responder1

Você pode usar a saída de depuração do rpm com a opção --test. Isso significa que nenhum pacote será instalado, mas a saída do stderr conterá a ordem interna, assim:

D: ========== tsorting packages (order, #predecessors, #succesors, depth)
D:     0    0    2    1   +cla-v1-r45.0.0.x86_64
D:     1    0   11    2   +ace-6.5.15-1.x86_64
D:     2    0    1    3       +ace-kokyu-6.5.15-1.x86_64
D:     3    0    1    3       +ace-xml-6.5.15-1.x86_64
D:     4    0    7    4       +tao-2.5.15-1.x86_64
D:     5    0    0    5       +tao-cosconcurrency-2.5.15-1.x86_64
D:     6    0    0    5       +tao-cosevent-2.5.15-1.x86_64
D:     7    0    0    5       +tao-cosnaming-2.5.15-1.x86_64
D:     8    0    0    5       +tao-cosnotification-2.5.15-1.x86_64
D:     9    0    0    5       +tao-costrading-2.5.15-1.x86_64
D:    10    0    0    5       +tao-rtevent-2.5.15-1.x86_64
D:    11    0    0    5       +tao-utils-2.5.15-1.x86_64
D:    12    0    0    3     +ace-gperf-6.5.15-1.x86_64
D:    13    0    0    1   +mpc-6.5.15-1.x86_64
D:    14    0    0    1   +PCMX-6.0A90-02.x86_64
D: installing binary packages

Em seguida, use algum filtro para analisá-lo, por exemplo, awk

rpm -Uvv --test *.rpm 2>&1 | awk 'BEGIN { FS = "+" }; /D: ========== tsorting packages/,/D: installing binary packages/ { printf "%s ",$2 }'

Responder2

yumnão possui opção de impressão deste pedido (vermanual), nem existe uma interface bem conhecida para seu banco de dados e bibliotecas que possa fazer isso. Portanto, uma solução teria que serfora yum. Você sempre pode pedir yumpara imprimir uma lista completa das dependências adicionais de um pacote, mas essa informação não é muito útil para obter oordemem quais pacotes devem ser instalados. É mais simples perguntar rpm.

Em princípio, pode-se escrever um script que utilize a saída de

rpm -qpR package-file

para cadaarquivo de pacote, para obter as dependências e ordená-las em etapas, por exemplo,

  • pacotes que não dependem de nenhum dos outros, então
  • pacotes que dependem de um ou mais dos anteriores (e possivelmente de outros emessegrupo) e
  • assim por diante, até que não haja pacotes restantes

(Eu fiz o inverso - procurando pacotes pararemover, e é complicado, mas factível).

informação relacionada