필수 패키지가 포함된 데비안 순환 종속성

필수 패키지가 포함된 데비안 순환 종속성

나는 여러 가지 이유로 ( debootstrap또는 를 사용하지 않고) 수동으로 rootfs를 구축하고 있지만 multistrap자세히 설명하지는 않겠습니다.

"압축 해제된" 상태에서 필요한 deb를 rootfs로 추출하고 있습니다( 사용자 dpkg정의 및 . 나중에 시스템에 chroot하여 각 패키지를 토폴로지 순서대로 실행할 계획입니다.--instdir--admindirdpkg --configure <packagename>

Priority: requiredDebian을 새로 설치하려면 두 개의 필수 ( ) 패키지가 필요합니다 libc6.여기) 그리고 libgcc1(여기). 둘 다 서로에 대한 엄격한 요구 사항을 가지고 있습니다.

dpkg --configure <packagename>따라서 다른 패키지가 여전히 구성되어야 하는 "패키지 해제된" 상태에 있다고 불평하기 때문에 한 패키지에서 실행할 수 없습니다 .

이중 자물쇠. 이것은 의미가 있습니다.

어떻게 이럴 수있어? 표준 Ubuntu/Debian 설치 프로그램 ISO는 이 문제를 어떻게 처리합니까?

그동안 실행 dpkg --configure -a해 보니 모든 패키지를 올바르게 구성하는 것 같은데 어떻게 하는지 잘 모르겠고 패키지 구성을 위해 선택하는 토폴로지 순서도 올바르지 않습니다.

이상적으로는 각 패키지에 대해 preinst 스크립트를 실행한 다음 해당 패키지를 개별적으로 구성하는 2단계 스크립트를 원합니다. 이 같은.

# Optional, if the preinst exists for the package.
DPKG_MAINTSCRIPT_NAME=preinst DPKG_MAINTSCRIPT_ARCH=amd64 DPKG_MAINTSCRIPT_PACKAGE=apt /var/lib/dpkg/info/<packagename>.preinst install
# Required, for every package.
dpkg --configure <packagename>
# ...repeated for each package, in topological order.

이 문제에 대한 debootstrap해결 multistrap방법은 dpkg구성에 사용되지 않는 것입니다. preinst/postinst를 수동으로 실행하고 /var/lib/dpkg/status데이터베이스를 업데이트하지만 각 스크립트에는 설명하지 않을 고유한 문제가 있습니다.

답변1

데비안 시스템 부팅은 데비안 정책 범위를 벗어납니다. 이러한 메커니즘은 현재 패키지에 없는 모든 암시적 정보(예: 필수:예, 패키지 간 종속성)를 포함하기 위해 다양한 부트스트랩에 코딩되어 있습니다. 이는 모든 새로운 부트로더에서 이 모든 것을 복제해야 하기 때문에 문제가 되고, 의사 필수 패키지 세트를 변경하면 이러한 가정이 깨질 수 있기 때문에 취약합니다.

우리는 이 문제를 개선하기 위해 노력하고 있습니다https://wiki.debian.org/Teams/Dpkg/Spec/InstallBootstrap. 인벤토리 도구를 가져와서 패키지 메타데이터와 함께 가능한 한 많은 도구를 제거하려고 시도하는 mmdebtrap을 살펴보는 것이 좋습니다. 따라서 이는 위 제안의 PoC 구현입니다.

mmdebtrap을 사용하는 것이 좋습니다. 하지만 이것이 옵션이 아니고 여전히 부트스트랩을 다시 구현하려는 경우 이러한 암시적 세부 정보에 대해 기존의 다양한 부트스트랩 소스를 확인하는 것이 좋습니다.

관련 정보