데비안(Armbian) 서버가 종료되기 전에 설치된 패키지 목록을 찾아야 합니다. 오프라인이므로 apt
또는 dpkg
(또는 다른 명령)을 사용할 수 없습니다. 내가 알 필요가어떤 파일목록을 포함합니다(바이너리인 경우에도). 검색을 시도했지만 모든 것은 옵션이 아닌 앞서 언급한 명령을 실행하라는 메시지만 표시됩니다.
답변1
/etc 및 /var 백업에서 "dpkg --get-selections"를 어떻게 근사합니까?귀하에게 중요한 문제를 해결하세요.
설치된 패키지 목록은 /var/lib/dpkg/status
.Look for Status: install ok installed
line에 저장됩니다. 이는 패키지가 올바르게 설치되었음을 나타냅니다.
다음 AWK 호출은 파일에서 설치된 패키지 이름을 추출합니다 status
.
awk '/^Package:/ { package = $2 }
/^Status: install ok installed/ { print package }' /path/to/status
시스템이 여러 아키텍처를 지원하는 경우 해당 아키텍처도 추적해야 합니다.
awk '/^Package:/ { p = $2; i = 0 }
/^Status: install ok installed/ { i = 1 }
i && /^Architecture: all/ { print p; next }
i && /^Architecture/ { printf "%s:%s\n", p, $2 }' /path/to/status
또 다른 흥미로운 파일은 /var/lib/apt/extended_states
설치된 패키지를 기록하는 "autoinstall" 플래그입니다. 다음과 같은 명령을 실행하여 플래그를 복원할 수 있습니다.
awk '/^Package:/ { p = $2 }
/^Architecture/ { a = $2 }
/^Auto-Installed: 1/ { printf "%s:%s\n", p, a }' /path/to/extended_states |
xargs sudo apt-mark auto
이 두 파일을 결합하여 수동으로 설치된 패키지를 나열하고 종속성 관리를 사용하여 자동으로 설치된 패키지를 설치할 수 있습니다(반드시 동일한 패키지 세트가 설치되는 것은 아닙니다).
awk 'FNR == NR && /^Package:/ { p = $2 }
/^Status: install ok installed/ { i = 1 }
FNR == NR && i && /^Architecture: all/ { ps[p] = 1; next }
FNR == NR && i && /^Architecture/ { ps[p ":" $2] = 1}
FNR != NR && /^Package:/ { p = $2 }
FNR != NR && /^Architecture:/ { a = $2 }
/^Auto-Installed: 1/ { delete ps[p ":" a] }
END { for (p in ps) print p }' /path/to/status /path/to/extended_states
"문서" 섹션을 참조하세요.man dpkg
:
/var/lib/dpkg/상태
사용 가능한 패키지의 상태입니다. 이 파일에는 패키지가 제거 대상으로 표시되었는지, 설치되었는지 등에 대한 정보가 포함되어 있습니다.