
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
yum
nã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 yum
para 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).