![전체 시스템 백업에서 설치된 패키지 목록을 생성하는 방법은 무엇입니까?](https://linux55.com/image/73364/%EC%A0%84%EC%B2%B4%20%EC%8B%9C%EC%8A%A4%ED%85%9C%20%EB%B0%B1%EC%97%85%EC%97%90%EC%84%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%84%20%EC%83%9D%EC%84%B1%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
데비안 시스템을 실행 중이라면 다음 명령을 실행하여 설치된 패키지 목록을 얻을 수 있습니다:
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-standard
ubuntu-desktop
r
답변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