debian: pacotes essenciais desnecessários em um ambiente chroot

3

Eu configurei o debian 8 (jessie) em um ambiente chroot (em um telefone Android, mas isso não é importante para essa questão) e notei que ele é bem grande. Eu removi todos os pacotes que não são essenciais e não são usados por mim (ssh e rsync atualmente), e o tamanho ainda é de aproximadamente 200MB (usei deborphan excessivamente no processo).

A pergunta é: posso remover alguns pacotes essenciais para que o sistema continue funcionando (por exemplo, eu não preciso do login do console e de muitos recursos de gerenciamento de dispositivos)?

Ou existe uma maneira de substituir alguns pacotes essenciais por alternativas menores?

Atualmente, meus maiores pacotes são:

# dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -nr | head -n20

13509   coreutils
9047    libc6
7004    dpkg
5198    bash
5043    gnupg
4811    perl-base
3842    openssh-client
3078    apt
2946    libc-bin
2893    e2fsprogs
2732    login
2692    util-linux
2555    tar
2478    libapt-pkg4.12
2268    libssl1.0.0
2218    passwd
1579    libdb5.3
1563    findutils
1447    libpam-runtime
1434    libslang2
    
por P.Péter 29.09.2015 / 18:03

2 respostas

2

Pacotes essenciais são necessários em um sistema normal, mas um chroot não é realmente um sistema normal. Você não precisa dos pacotes que fornecem serviços do sistema que o Android está efetivamente fornecendo (se de uma forma que não permitirá que você faça tudo o que você pode fazer em um sistema Linux normal), como init e login.

Você pode dizer ao dpkg para remover pacotes marcados como essenciais com a opção de linha de comando --force-remove-essential .

Dos pacotes marcados como essenciais no Debian jessie, para o seu caso de uso, você não precisa de init , ncurses-base , ncurses-bin , diffutils , login , e2fsprogs e possivelmente não perl-base , base-passwd e base-files . Além disso, existem muitos pacotes que o debootstrap instala por padrão que você não precisa, como locales . Você também pode se livrar de toda a documentação ( /usr/share/doc , /usr/share/man , /usr/share/info ), mas não há como evitar que os arquivos sejam reescritos em cada atualização de pacote.

Outra grande coisa que você realmente não precisa é coreutils e possivelmente não debianutils , bsdutils , gzip , mount e util-linux , se você as substituir por busybox . Se você não se importa em ter um shell de linha de comando confortável, não precisa de bash .

Se você quer economizar espaço, e você só precisa de acesso SSH e rsync, você pode obter algo menor que o Debian. Tudo o que você precisa é Dropbear, rsync e as bibliotecas de que precisam. O Dropbear não fornece um servidor SFTP, portanto, se você quiser, precisará instalar o do OpenSSH. Há um número de distribuições projetadas para sistemas embarcados com uma instalação base que não inclui o bash ou o perl, onde toda a documentação vem em um pacote separado, e onde a biblioteca padrão não é a Glibc, mas uma alternativa menor como o uClibc. Procure distribuições com o gerenciador de pacotes opkg ou ipkg , como OpenWRT e Optware ou outros mencionados na lista de produtos da BusyBox .

    
por 30.09.2015 / 02:39
1

Você pode tentar recriar o pacote coreutils com ./configure --enable-single-binary para que ele compartilhe um binário entre todos os utilitários, como o busybox

    
por 30.09.2015 / 13:39

Tags