类似的问题https://unix.stackexchange.com/questions/235795/use-dpkg-in-busybox
你好!我很高兴发现 dpkg 附带了较新版本的 busybox,因此我开始安装软件包。我收集了apt的所有依赖项,然后运行:
dpkg -i *.deb
不幸的是,出现了错误!
dpkg: Unable to open /var/lib/dpkg/status: no such file or directory
好的,我处理了这个问题,创建目录 /var/lib/dpkg,然后创建空文件 /var/lib/dpkg/status。然后我又尝试了:
dpkg -i *.deb dpkg: package libtasn1-6 pre-depends on multiarch-support, which is not installed or flagged to be installed
所以我尝试安装multiarch-support,但是它依赖于libc6,而libc6又依赖于libgcc,而libgcc又依赖于multiarch-support。我还尝试将它们全部安装在同一行上,但发生了相同的依赖错误。
所以我尝试使用 安装 libgcc --force-depends
,但现在它抱怨没有 /var/lib/dpkg/info/libgcc1.md5sums ,所以我创建 info 目录,它会更远一点,但是然后:
sh: /var/lib/dpkg/info/libgcc1.postinst: No such file or directory dpkg: postinst failed, error code 256
我缺少什么?有什么方法可以设置 busybox 的 dpkg 以便它可以实际安装软件包吗?
答案1
运行dpkg
实用程序是一回事,安装发行版是另一回事。为了让发行版运行,您需要安装一堆软件包,并解决这样一个事实:使用最基本的实用程序,几乎所有东西都依赖于其他所有东西的工作。它是引导问题。
幸运的是,有一个应用程序可以做到这一点!反引导程序正是为了这个目的而设计的。我认为您可以让 Deboostrap 在带有 BusyBox 的系统上运行,但使用其两阶段模式可能更简单:
获取 debootstrap(当然,在 Debian 中以软件包形式提供,但也在其他几个发行版中提供)并在 Linux PC 上运行它以准备目录树。
debootstrap --arch=armhf --foreign jessie debian
使用 BusyBox 将目录树复制到您的设备,确保保留文件属性。用于
tar
归档目录并将其解压到目标设备上。在目标设备上,chroot 到解压存档的位置,然后运行
/debootstrap/debootstrap --second-stage