首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带所需包的Debian循环依赖关系

带所需包的Debian循环依赖关系
EN

Unix & Linux用户
提问于 2019-11-22 18:49:14
回答 1查看 344关注 0票数 2

我正在手动构建一个rootfs (没有debootstrapmultistrap),原因很多,我不会进入。

我正在“解压缩”状态下将所需的借方提取到rootfs (使用带有自定义--instdir--admindirD3)。我计划稍后进入系统,并按拓扑顺序运行每个包的dpkg --configure

重新安装Debian需要两个必需的(Priority: required)包,libc6 (这里)和libgcc1 (这里)。他们对彼此都有严格的要求。

因此,我无法在一个包上运行dpkg --configure ,因为它抱怨另一个包仍然处于需要配置的“未打包”状态。

死锁。这是有道理的。

这怎麽可能?标准的Ubuntu/Debian安装程序ISO如何处理这个问题?

同时,我正在运行dpkg --configure -a,它似乎正确地配置了每个包,但我不确定它是如何实现的,并且它选择配置包的拓扑顺序是不正确的。

理想情况下,我希望使用第2阶段脚本来运行每个包的前置脚本,然后单独配置该包。就像这样。

代码语言:javascript
复制
# Optional, if the preinst exists for the package.
DPKG_MAINTSCRIPT_NAME=preinst DPKG_MAINTSCRIPT_ARCH=amd64 DPKG_MAINTSCRIPT_PACKAGE=apt /var/lib/dpkg/info/.preinst install
# Required, for every package.
dpkg --configure 
# ...repeated for each package, in topological order.

debootstrapmultistrap的工作方式是他们不使用dpkg来进行配置。它们手动运行preinst/postinst并更新/var/lib/dpkg/status db,但是每个脚本都有它们自己的问题,我不想讨论。

EN

回答 1

Unix & Linux用户

发布于 2020-05-18 00:39:22

引导Debian系统超出了Debian策略的范围。该机制目前在各种引导程序中进行编码,以包含所有否则在包中不存在的隐式信息,例如必需包之间的依赖关系:yes包。这是一个问题,因为我们需要在每一个新的引导程序中复制所有这些,而且它是脆弱的,因为对伪基本包集的更改可能会打破这些假设。

我们正在努力改善https://wiki.debian.org/Teams/Dpkg/Spec/InstallBootstrap的这一状况。您可能想要查看mmdebstrap,它试图尽可能多地使用股票工具并卸载它们和包元数据,因此在某种程度上,它是上述建议的PoC实现。

我建议使用mmdebstrap,但是如果这不是一个选项,而且您仍然试图重新实现一个引导程序,那么您可能希望检查各种现有引导程序的来源,以获得这些隐含的详细信息。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/553662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档