![rpm으로 보고된 설치된 패키지 목록이 yum으로 보고된 것과 다릅니다.](https://linux55.com/image/40419/rpm%EC%9C%BC%EB%A1%9C%20%EB%B3%B4%EA%B3%A0%EB%90%9C%20%EC%84%A4%EC%B9%98%EB%90%9C%20%ED%8C%A8%ED%82%A4%EC%A7%80%20%EB%AA%A9%EB%A1%9D%EC%9D%B4%20yum%EC%9C%BC%EB%A1%9C%20%EB%B3%B4%EA%B3%A0%EB%90%9C%20%EA%B2%83%EA%B3%BC%20%EB%8B%A4%EB%A6%85%EB%8B%88%EB%8B%A4..png)
서버 B가 서버 A와 정확히 동일한 설정을 갖기를 원합니다. 서버 A와 B는 동일한 Arch와 동일한 하드웨어를 가지고 있습니다.
내 계획은 서버 A에 설치된 모든 항목을 나열하고 서버 B의 목록을 사용하여 다음과 같이 설치하는 것입니다.
yum -y install $(cat installed.txt)
서버 A에서는 다음을 사용해야 합니다.
rpm -qa > installed.txt
또는:
yum list installed > installed.txt
목록이 다른 것 같은데 이유를 모르겠습니다.
yum list installed
930줄이 있고 rpm -qa
895줄이 있는데 무슨 차이가 있나요?
답변1
yum listinstalled에는 930줄이 있고 rpm -qa에는 895줄이 있습니다. 차이점은 무엇입니까?
아마도 형식의 차이 일 것입니다. yum list는 터미널 크기에 맞게 일련의 영리한 래퍼를 수행합니다.
아마도 당신이하고 싶은 것은 다음을 사용하는 것입니다 :
# Run this on the master server
yum-debug-dump
# Run this on the new server, with the input from the above.
yum-debug-restore
답변2
차이점은 무엇입니까?
줄 수가 다른 주된 이유는 생성된 출력의 yum
형식이 각 필드가 세로로 정렬되도록 지정되기 때문입니다(패키지 이름 및/또는 버전 번호의 길이에 관계없이). 두 줄을 사용하여 해당 패키지를 나열하고 두 번째 줄을 공백 문자로 채워 필드를 적절하게 정렬함으로써 이를 수행합니다. 다음 출력(CentOS 6 시스템의)은 두 줄을 사용하여 패키지를 나열하는 것을 보여줍니다 device-mapper-persistent-data.x86_64
.
device-mapper-libs.x86_64 1.02.95-3.el6_7.4 @clearos-verified-updates
device-mapper-persistent-data.x86_64
0.3.2-1.el6 @clearos
dhclient.x86_64 12:4.1.1-49.P1.v6 @clearos-verified-updates
그러나 이것은 그렇지 않습니다.오직그 이유는 두 명령의 출력을 비교하면 알 수 있습니다.
명령 출력의 경우 rpm
:
대문자로 시작하는 패키지가 소문자 앞에 나타나도록 정렬합니다.
rpm -qa | LC_ALL=C sort
sed
패키지 버전 번호를 삭제하려면 다음 명령을 사용하십시오 .rpm -qa | LC_ALL=C sort r | sed 's/-[^-]*-[^-]*$//' >| installed.rpm
명령 출력의 경우 yum
:
처음 두 헤더 행(
Loaded plugins
및Installed Packages
)을 제거합니다.Loaded plugins: etckeeper, fastestmirror Installed Packages
우리는
sed
이것을 위해 사용할 수 있습니다:yum list installed | sed '1,2d;'
또한 이를 사용하여
sed
패키지 목록의 모든 연속 줄을 제거할 수도 있습니다(이 줄은 모든 패키지 버전이 정렬되도록 여러 공백으로 시작합니다).yum list installed | sed '1,2d;/^ /d;s/\..*//' >| installed.yum
이제 이 diff
명령을 사용하여 두 파일의 출력을 비교할 수 있습니다. CentOS 6 시스템에 대한 결과는 다음과 같습니다.
# diff installed.{rpm,yum}
239,243d238
< gpg-pubkey
< gpg-pubkey
< gpg-pubkey
< gpg-pubkey
< gpg-pubkey
결론적으로
rpm -qa
이는 패키지 서명을 위해 신뢰할 수 있는 공개 키가 있는 패키지 목록도 포함되어 있으며 yum
이러한 패키지가 명령에 의해 무시됨을 나타냅니다 .
답변3
yum list installed
패키지 이름과 패키지 버전이 긴 경우 두 줄의 출력을 생성할 수 있습니다.
답변4
yum list installed
다음과 같이 출력해 보세요.
pam_krb5.i386 2.2.14-22.el5 installed
이제 rpm -qa
할 말은 이렇습니다.
pam_krb5-2.2.14-22.el5
두 명령 모두 출력과 동일한 수의 줄을 제공합니다. 나는 rpm -qa
목록을 선택하겠습니다 .
게다가,이것답변, 아래 메시지가 보입니다.
작업이 필요한 패키지에서 특별히 작동하는 프로그램 "rpm"과 종속성을 찾아 시스템에 없어도 .rpm 파일을 다운로드할 수 있는 보다 스마트한 관리 시스템인 "yum"이 있습니다.
따라서 차이점은 yum
종속성이 해결되었지만 rpm
모든 종속성이 설치되어 더 완전한 목록을 제공한다는 점일 수 있습니다.
yum
내가 본 와 사이의 실제 차이점 rpm
은 다음과 같습니다.
가장 눈에 띄는 문제 rpm
는 대부분의 사람들이 일반적으로 국가라고 부르는 것입니다.의존성 지옥. 이 문제는 다른 많은 패키지에 의존하는 패키지에서 발생하며, 그 중 일부는 다른 많은 패키지에도 의존합니다. 우리 모두 알고 있듯이 프로그램이 제대로 작동하려면 모든 종속성을 설치해야 합니다. rpm
이 작업을 자동으로 수행할 수 있는 방법은 없습니다. 필수 패키지를 설치하기 전에 필수 패키지가 모두 설치되었는지만 확인할 수 있습니다. 처음에 단일 패키지만 설치하려는 대부분의 사람들에게는 각 종속성을 수동으로 추적하고 설치하는 것이 중요한 작업입니다.
yum
사용자가 설치하려는 패키지를 설치하기 전에 패키지 종속성을 추적하고 설치할 수 있는 기능. 이렇게 하면 설치하려는 패키지 이름만 알면 되고 필요한 패키지가 이미 설치되어 있는지 걱정할 필요가 없기 때문에 전체 프로세스가 단순화됩니다. 시스템에서 찾을 수 없는 패키지에 대해 시스템에서 사용 가능한 저장소를 검색합니다.
인용하다
http://www.difference Between.net/technology/difference- Between-yum-and-rpm/