dpkg --root를 사용하여 chroot 환경을 구축하는 방법

dpkg --root를 사용하여 chroot 환경을 구축하는 방법

나는 극도로 최소한의 chroot 환경 및/또는 docker 기본 이미지를 구축하려고 하며, 실행하려는 바이너리를 지원하는 패키지만 엄격하게 설치하려고 합니다. 나는 그런 도구에는 관심이 없다.부스트하러가기왜냐하면 이것이 내가 원하는 것이 아닌 완전한 "시스템"을 구축하도록 강요하는 것 같기 때문입니다. 나는 내가 필요하다고 생각하는 패키지만을 원한다.

원하는 .deb 파일을 수동으로 다운로드하여 선언된 종속성과 PreDepends를 충족하도록 모든 것이 다운로드되었는지 확인할 수 있습니다.

esp를 설치하려고 하면 dpkg --root=<target>문제가 발생합니다 libc6. 설치 전/설치 후 스크립트가 올바른 위치에 배치되지 않은 것 같지만 무엇이 누락되었는지 알 수 없습니다.

# dpkg --install --root /target /files/archive.ubuntu.com/ubuntu/pool/main/g/glibc/libc6_2.37-0ubuntu2_amd64.deb
(Reading database ... 0 files and directories currently installed.)
Preparing to unpack .../libc6_2.37-0ubuntu2_amd64.deb ...
dpkg (subprocess): unable to execute new libc6:amd64 package pre-installation script (//var/lib/dpkg/tmp.ci/preinst): No such file or directory
dpkg: error processing archive /files/archive.ubuntu.com/ubuntu/pool/main/g/glibc/libc6_2.37-0ubuntu2_amd64.deb (--install):
 new libc6:amd64 package pre-installation script subprocess returned error exit status 2
dpkg (subprocess): unable to execute new libc6:amd64 package post-removal script (//var/lib/dpkg/tmp.ci/postrm): No such file or directory
dpkg: error while cleaning up:
 new libc6:amd64 package post-removal script subprocess returned error exit status 2
Errors were encountered while processing:
 /files/archive.ubuntu.com/ubuntu/pool/main/g/glibc/libc6_2.37-0ubuntu2_amd64.deb

답변1

아직 대상 디렉토리에 설치하지 않은 것 같습니다 dash. 기본이 아닌 설치 디렉토리를 사용하면 dpkgchroot 내부의 유지 관리자 스크립트를 호출하므로 해당 shebang은 chroot에서 충족되어야 합니다.

debootstrap핸들과 같은 도구로 수행하기 가장 어려운 작업 중 하나인 종속성 순환이 발생할 수 있습니다. 유용 할 수도 있습니다 mmdebstrap. "추출" 및 "사용자 정의" 변형은 다른 것(필요한 패키지도 아님)이 필요 없이 주어진 패키지 목록(및 종속성) 설치를 지원합니다.

관련 정보