전체 시스템 백업에서 설치된 패키지 목록을 생성하는 방법은 무엇입니까?

전체 시스템 백업에서 설치된 패키지 목록을 생성하는 방법은 무엇입니까?

데비안 시스템을 실행 중이라면 다음 명령을 실행하여 설치된 패키지 목록을 얻을 수 있습니다:

dpkg --get-selections > packages.lst

하지만 지금은 작업 시스템의 루트 파티션에 대한 전체 백업(전체 시스템 백업)만 있고 그 이상은 없습니다. 이 파일에서 설치된 패키지 목록을 어떻게 생성할 수 있습니까?

답변1

chroot를 사용하고 dpkg를 실행하는 것이 가장 쉬운 방법입니다. 바라보다https://superuser.com/a/417004/20798chroot에서 /proc, 및 사용 가능한 방법을 알아보세요 /sys./dev

백업 외부에서 작동하는 데비안 시스템이 있으므로 아마도 다음을 사용할 수 있습니다.

dpkg --admindir=dir --get-selections

기본값은 dir이므로 /var/lib/dpkg백업 경로를 /var/lib/dpkg.


어떤 패키지가 수동으로 설치되었는지, 어떤 패키지가 종속성을 충족하기 위해 설치되었는지는 표시 되지 dpkg --get-selections않습니다. 따라서 실제로 원하는 패키지의 새 버전에는 다른 종속성이 있거나 더 이상 필요하지 않을 때 자동으로 제거해야 합니다. 수동으로 설치된 패키지를 지웠습니다).

라벨링이 쉽도록 적성을 사용합니다.모든 것자동으로 설치한 다음 유지하려는 항목이 자동으로 제거되지 않을 때까지 일부 패키지를 수동 설치로 선택하고 표시합니다. build-essential, 및 에 해당하는 Debian 과 같은 대규모 메타패키지부터 시작하세요 . 적성에서 패키지의 역방향 종속성(이 패키지가 의존하는 패키지)을 보려면 클릭하세요.ubuntu-standardubuntu-desktopr

답변2

피터의방법더 좋지만 /var/lib/dpkg/status필요하지 않은 것을 구문 분석할 수도 있습니다 chroot.

 $ perl -00ne 'if(/: install/){/Package:\s*(\S+)/ && print "$1\n"}' /var/lib/dpkg/status

내 컴퓨터에서는 동일한 패키지 목록을 반환합니다 dpkg --get-selections | awk '$NF=="install"{print $1}'( awk그렇지 않으면 제거된 패키지도 표시하므로 구문 분석이 필요함).

답변3

다음을 사용하여 패키지를 나열할 수 있습니다.

awk '/Package:/ {print $2}' /var/lib/dpkg/status

관련 정보