Как использовать dpkg busybox

Я пытаюсь установить pkg в ограниченном пространстве встроенной системы. Я использую dpkg busybox. Чтобы позволить 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

Как пометить netbase как установленную? Я имею в виду чит, чтобы dpkg мог его обработать.

2 ответа

Вам нужно 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, который создает корневую файловую систему, готовую к загрузке. Моя команда:

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 находится в моей папке iso, которую я использую для создания загрузочного компакт-диска.

После того, как я загрузил компакт-диск, на котором есть только минималистские initboxfs с занятым окном, я могу просто распаковать эту файловую систему и завершить установку:

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

На данный момент у меня есть готово настроенный системный корень Debian в / tmp / root.

Ответ, очевидно, неполный, но если бы мы могли выяснить, какие файлы необходимы и смогли бы деинифицировать систему busybox, мог бы быть выход. Этот ресурс также был весьма полезен - http://lists.busybox.net/pipermail/busybox/2014-June/081017.html

Я должен быть в состоянии переключиться на новый root таким образом, но мое ядро ​​не имеет devtmpfs, который требуется для systemd init:

echo > /proc/sys/kernel/hotplug
umount /proc
umount /sys

exec switch_root -c /dev/console /tmp/root /sbin/init

С наилучшими пожеланиями, Роб

Другие вопросы по тегам