두 호스트에 설치된 패키지 간의 차이점 목록 계산 만들고 싶습니다. 내가 성취하고 싶은 것을 더 잘

데비안 가상 서버에 문제를 추가하고 처음부터 다시 설치하기 위해 추가합니다. 그러나 여전히 이전 버전에 액세스 할 수 있었고 설치된 패키지 목록을 검색 할 수 있습니다.

앞으로 가상 서버를 복원하는 프로세스를 용이하게하기 위해 각 서버마다 특정 패키지 목록을 만들고 싶습니다.

내가 성취하고 싶은 것을 더 잘 설명하기 위해. 이미 기본 패키지와 구성을 사용하여 새 가상 서버를 만드는 자동화 된 프로세스가 이미 있습니다. 이제이 “골격”으로 델타를 저장하여 특정 서버를 쉽게 다시 설치할 수 있습니다.

실제 플러스는 변경된 구성 파일을 기본값에서 저장하는 것이지만 패키지 목록으로 만 살 수 있습니다.

간단히 말해서 호스트에는 설치되었지만 다른 패키지에는 설치되지 않은 패키지 목록을 만드는 방법이 필요합니다.

목록에 모든 종속성 목록이 아닌 수동으로 설치된 패키지 만 포함되어 있으면 정말 좋습니다.

이 특정 작업을 수행하도록 설계된 기존 도구가 있으면 자유롭게 제안하십시오. 그러나 가능한 한 종속성을 작게 유지하고 싶습니다. 정보는 정확히 가상 서버가 아니라 LXC 컨테이너입니다.



답변

참조 설치에서 (한 번만) :

dpkg-query -W -f='${Package}\n' | sort > baselist.txt

(다음은 가정 bash)

참조 설치에서 패키지를 추가하려면 (제거 된 내용은 표시되지 않음) :

comm -1 -3 baselist.txt <(dpkg-query -W -f='${Package}\n' | sort)

더 나은, 사본을 피하십시오 baselist.txt:

comm -1 -3 <(ssh user@refserver cat /path/to/baselist.txt) <(dpkg-query -W -f='${Package}\n' | sort)

답변

이전 서버에서 다음을 실행하십시오.

dpkg –get-selections> 이전 패키지 목록

위 파일을 새 서버에 복사하고 새 서버에서 실행하십시오.

dpkg –set-selections <이전 패키지 목록

적절한 업데이트

dselect 업데이트

또한 /etc/apt/sources.list패키지를 마이그레이션하기 전에 이전 서버에서 새 서버로 모든 추가 리포지토리를 추가 해야합니다. 그렇지 않으면 대부분의 패키지가 설치되지 않은 상태로 유지됩니다.


답변

다음 명령을 사용하여 두 서버에서 전체 패키지 목록을 가져올 수 있습니다.

     dpkg -l | sort > old_file
     dpkg -l | sort > new_file

그런 다음 다음을 사용하여 차이점을 얻을 수 있습니다.

     diff -Nur old_file new_file > changes.txt

grep을 사용하여 필요한 변경 사항을 필터링 할 수 있습니다. 또한 diff를 사용하여 구성 파일의 변경 사항을 가져오고 필요한 경우 적용 할 패치를 생성 할 수 있습니다. 그건 그렇고, diff는 두 파일뿐만 아니라 두 폴더를 비교할 수 있습니다.


답변

블루 프린트 는 정확히 당신의 필요를 위해 설계되었습니다. 설치된 설명 패키지와 변경된 구성 파일을 뱉습니다. 이 설명을 Puppet 또는 Chef 스크립트로 변환하여 깔끔한 상자에 적용 할 수 있습니다.


답변

또한이 유용한 패키지를 찾았습니다. 설명은 다음과 같습니다.

데비안 패키지의 파일 시스템 트리를 현재 파일 시스템 트리와 비교하여 다른 파일에 대해 통합 된 diff를 인쇄하는 Bash 스크립트.

https://code.google.com/p/dpkg-diffs/

PATH에 어딘가에 붙어서 실행할 수있는 하나의 bash 파일 만 있으면 나에게 너무 오래되지 않은 것처럼 보입니다.

이것이 누군가를 돕기를 바랍니다.