![데비안은 설치된 패키지 목록을 어디에 저장합니까?](https://rvso.com/image/192238/%EB%8D%B0%EB%B9%84%EC%95%88%EC%9D%80%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%96%B4%EB%94%94%EC%97%90%20%EC%A0%80%EC%9E%A5%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
Debian(Armbian) 서버가 죽기 전에 설치된 패키지 목록을 찾아야 합니다. 오프라인이므로 apt
또는 dpkg
(또는 다른 명령)을 사용할 수 없습니다. 내가 알 필요가어떤 파일목록을 포함합니다(바이너리인 경우에도). 검색을 시도했지만 모든 것은 옵션이 아닌 aforementioend 명령을 실행하라는 메시지만 표시됩니다.
답변1
/etc 및 /var 백업에서 `dpkg --get-selections`를 근사하는 방법은 무엇입니까?귀하의 근본적인 우려 사항을 해결합니다.
설치된 패키지 목록은 에 저장됩니다 /var/lib/dpkg/status
. 줄을 찾으십시오 Status: install ok installed
. 이는 패키지가 올바르게 설치되었음을 나타냅니다.
다음 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
설치된 패키지에 대한 "자동 설치" 플래그를 기록하는 파일입니다. 다음과 같은 명령을 실행하여 플래그를 복원할 수 있습니다.
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/상태
사용 가능한 패키지의 상태입니다. 이 파일에는 패키지 제거 표시 여부, 설치 여부 등에 대한 정보가 포함되어 있습니다.