Как использовать 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
С наилучшими пожеланиями, Роб