如何使用busybox的dpkg

我试图在有限的空间embedded式系统中安装pkg。 我使用busybox的dpkg。 让dpkg工作,我只是触摸一个文件

touch /var/lib/dpkg/status 

但是,它仍然无法工作。

 $dpkg -i ntpdate_4.2.4p4+dfsg-8lenny3_sh4.deb dpkg: package ntpdate depends on netbase, which is not installed or flagged to be installed 

如何标记networking安装? 我的意思是欺骗,让dpkg对待它可以安装。

您需要dpkg忽略依赖关系,请使用以下命令:

 dpkg -i --force-depends mypackage.deb 

或者,如果您遇到更多问题,请使用:

 dpkg -i --force-all mypackage.deb 

但是要注意的是,程序包依赖几乎总是真正的依赖关系,因为程序可能与它们相关联。

并使用上述命令,将安装包良好,但dpkg将它标记为损坏。

无论如何,答案可能是使用debootstrap。 以下是https://www.debian.org/releases/lenny/arm/apds03.html.en

我设法使用的过程是使用–foreign参数,它创build了一个准备启动的根文件系统。 我的命令:

 debootstrap --foreign --arch amd64 --variant minbase \ --keyring /usr/share/keyrings/debian-keyring.gpg \ jessie debstaged cd debstaged tar -czf ../iso/debstaged.tar.gz * cd .. 

根文件系统tar / gzipped在我用来创build可启动CD的iso文件夹中

一旦我启动只有简单的busybox initramfs的CD,我可以简单地解压该文件系统并完成安装:

 mount /dev/sr0 /mnt mkdir /tmp/root mount -t tmpfs debroot /tmp/root cd /tmp/root tar -xzf /mnt/debstaged.tar.gz umount /mnt chroot . /debootstrap/debootstrap --second-stage 

此时,我在/ tmp / root下有一个已经configuration好的debian系统根目录。

答案显然是不完整的,但如果我们能够确定哪些文件是必要的,并设法去除busybox系统,那么可能有办法。 这个资源也很有帮助 – http://lists.busybox.net/pipermail/busybox/2014-June/081017.html

我应该可以像这样切换到新的root,但是我的内核没有systemd init需要的devtmpfs:

 echo > /proc/sys/kernel/hotplug umount /proc umount /sys exec switch_root -c /dev/console /tmp/root /sbin/init 

亲切的问候,Rob