Como usar o dpkg do busybox

2

Estou tentando instalar o pkg em um sistema incorporado de espaço limitado. Eu uso o dpkg do busybox. Para deixar o dpkg funcionar, eu apenas toco um arquivo

touch /var/lib/dpkg/status                                               

Mas ainda não funciona.

$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

Como sinalizar o netbase como instalado? Quero dizer, trapaceie para deixar o dpkg tratá-lo poder instalar.

    
por Daniel YC Lin 24.11.2012 / 04:31

2 respostas

1

Você precisa do dpkg para ignorar dependências, use o seguinte comando:

dpkg -i --force-depends mypackage.deb

Ou, caso você tenha mais problemas, use:

dpkg -i --force-all mypackage.deb

Mas esteja avisado, as dependências de pacotes são quase sempre verdade dependências, como no programa pode estar ligado a elas.

E usando os comandos acima, irá instalar o pacote, mas o dpkg irá rotulá-lo como quebrado.

    
por 24.11.2012 / 08:53
0

A resposta pode ser usar o debootstrap de qualquer maneira. Aqui está um howto link

O processo que eu consegui usar está com o parâmetro --foreign, que cria um sistema de arquivos raiz pronto para ser inicializado. Meu comando:

debootstrap --foreign --arch amd64 --variant minbase \
   --keyring /usr/share/keyrings/debian-keyring.gpg \
   jessie debstaged

cd debstaged
tar -czf ../iso/debstaged.tar.gz *
cd ..

O sistema de arquivos raiz tar / gzipped está na minha pasta iso que eu uso para criar um CD inicializável

Uma vez que eu inicializo o CD que só tem um busymodern minimalista, eu posso simplesmente descompactar esse sistema de arquivos e completar a instalação:

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

Neste ponto, eu tenho uma raiz do sistema debian configurado em / tmp / root.

A resposta é obviamente incompleta, mas se pudéssemos descobrir quais arquivos são necessários e conseguirmos desmistificar o sistema busybox, poderia haver uma maneira. Este recurso foi bastante útil também - link

Eu deveria ser capaz de mudar para a nova raiz assim, mas meu kernel não tem o devtmpfs que é requerido pelo systemd init:

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

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

Atenciosamente, Rob

    
por 03.02.2015 / 22:33

Tags