rpm이 새 패키지 세트를 설치할 순서를 얻는 방법은 무엇입니까?

rpm이 새 패키지 세트를 설치할 순서를 얻는 방법은 무엇입니까?

rpm 패키지 세트가 있습니다. 한 번에 모두 설치할 예정이지만, 설치하기 전에 설치할 순서를 알고 싶습니다. 패키지 관리자에게 무작위 순서로 모두 제공하면 관리자가 이들 간의 종속성을 확인하고 올바른 순서로 설치한다는 것을 알고 있습니다. 이 주문을 어떻게 받나요?

답변1

--test 옵션을 사용하여 rpm의 디버깅 출력을 사용할 수 있습니다. 이는 패키지가 설치되지 않음을 의미하지만 stderr 출력에는 다음과 같은 내부 순서가 포함됩니다.

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

그런 다음 일부 필터를 사용하여 구문 분석합니다(예: awk).

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

답변2

yum이 주문을 인쇄할 수 있는 옵션이 없습니다(참조:수동), 이를 수행할 수 있는 데이터베이스 및 라이브러리에 대한 잘 알려진 인터페이스도 없습니다. 그래서 해결책은 다음과 같아야합니다밖의 yum. 언제든지 yum패키지의 추가 종속성의 전체 목록을 인쇄하도록 요청할 수 있지만 해당 정보는 패키지를 얻는 데 그다지 유용하지 않습니다.주문하다패키지를 설치해야 하는 곳. 물어보는 것이 더 간단합니다 rpm.

원칙적으로 다음의 출력을 사용하는 스크립트를 작성할 수 있습니다.

rpm -qpR package-file

각각패키지 파일, 종속성을 가져오고 단계적으로 순서를 지정합니다. 예:

  • 다른 패키지에 의존하지 않는 패키지
  • 위의 패키지 중 하나 이상에 의존하는 패키지(및 다른 패키지에 의존할 수도 있음)이것그룹) 및
  • 남은 패키지가 없을 때까지 계속

(저는 그 반대로 했습니다. 패키지를 찾고 있었습니다.제거하다, 복잡하지만 실행 가능합니다).

관련 정보