Posso desativar todas as páginas de manual?

13

Especificamente em um raspberry pi (executando o Raspbian Wheezy), mas também em geral, posso desativar todas as páginas de manual?

Isso significaria nenhuma página de manual armazenada, nenhum "acionador de processamento para o man-db" e assim por diante. Com as páginas de manual sempre disponíveis na Internet, eu realmente não preciso delas instaladas, e gerar e armazená-las parece desnecessário.

Soumya
fonte
Receio que você provavelmente esteja preso no que diz respeito às próprias páginas de manual - elas fazem parte das debs do software que acompanham.
Shadur
6
Certamente existem melhores candidatos para economizar espaço do que as páginas de manual?
Jasonwryan
Eu poderia imaginar uma configuração de uma ferramenta de empacotamento para eliminar todos os arquivos marcados como documentos e / ou arquivos correspondentes a um regex. Eu não estou ciente das implementações desse conceito, no entanto.
Pavel Šimerda
Você economizaria apenas 1% do espaço (provavelmente menos na verdade)? Provavelmente um pouco mais se você também suprimir /usr/share/doc.
Gilles 'SO- stop be evil'

Respostas:

15

Eu estava tendo o problema oposto em uma imagem do Debian 8 que alguém havia reunido para um Wandboard. Eu estava tentando encontrar a página de manual de alguns pacotes que já estavam instalados e notei que, após a instalação de alguns novos, as páginas de manual estavam ausentes, mesmo estando presentes no arquivo deb.

Encontrei esse arquivo 01_nodoc em /etc/dpkg/dpkg.conf.d, que é uma solução simples para a pergunta original sobre como economizar espaço, excluindo páginas de manual e localidades e arquivos de direitos autorais onde o espaço é escasso (por exemplo, incorporado sistemas).

# /etc/dpkg/dpkg.conf.d/01_nodoc

# Delete locales
path-exclude=/usr/share/locale/*

# Delete man pages
path-exclude=/usr/share/man/*

# Delete docs
path-exclude=/usr/share/doc/*
path-include=/usr/share/doc/*/copyright
Economia de espaço
fonte
Outra resposta útil é em askubuntu.com/a/401144/162384 , que - além de um ótimo exemplo - aponta para os documentos: wiki.ubuntu.com/ReducingDiskFootprint#Documentation
berto
6

A questão é que o sistema de gerenciamento de pacotes espera que os arquivos que ele instala (incluindo as páginas de manual) permaneçam lá, portanto, qualquer mecanismo que você use para removê-los (exceto a reconstrução de todos os pacotes, como sugere o HalosGhost) os confundirá.

Se o que você está fazendo é produzir um dispositivo de uso único, uma abordagem a ser adotada é ter etapas de criação e implantação separadas para o dispositivo. Ou seja, você instala todos os pacotes desejados em um ambiente de construção separado (um cartão SD diferente ou um RPi emulado) e copia apenas o que deseja ter em produção do ambiente de construção para o ambiente de produção. Nesse estágio, você pode deixar de fora as páginas de manual e qualquer outra coisa que não seja necessária na produção.

Para escolher o SO ou as correções de segurança atualizadas, atualize ou reconstrua o ambiente de construção e copie (ou rsync) para produção novamente.

Isso é um pouco mais trabalhoso, mas oferece um dispositivo de produção muito controlado, comparado com o logon e a execução de atualizações diretamente nele.

Andrew McGuinness
fonte
5

Bem, sem saber qual distro seu RPi está executando, não posso ajudá-lo com os comandos exatos, mas você provavelmente pode remover o man-dbpacote que fornece o manutilitário e uma variedade de páginas de manual. No entanto, remover todas as páginas de manual exigiria remover cada página de manual de cada pacote - não consigo imaginar que isso valha a pena, apenas para economizar KiBs de espaço.

Se você realmente quisesse, seria necessário reconstruir cada pacote; em uma distro como Archlinux ou Gentoo, isso não é necessariamente impossível, mas ainda é bastante tedioso. Em outras distros menos "práticas", você pode achar essa tarefa incrivelmente difícil.

HalosGhost
fonte
2
apt-get remove --purge man-dbTambém desinstalará debhelperisso não é necessário?
rubo77
4
$ cat /etc/apt/apt.conf.d/90debsums 
DPkg::Post-Invoke { "if [ -x /usr/bin/debsums ]; then /usr/bin/debsums --generate=nocheck -sp /var/cache/apt/archives; fi"; };

O Pacote debsumsinstala uma ação para gerar listas md5sum para pacotes automaticamente após a instalação de um pacote sem já ter um arquivo md5sums.

Você pode adicionar uma ação de pós-instalação semelhante, verificando e removendo as páginas de manual (e os documentos informativos) após cada ação de instalação.

Para obter as páginas de manual e os pacotes proprietários, você precisa verificar todos os /var/lib/dpkg/info/PACKAGENAME.listarquivos.

Você deve atualizar os *.listarquivos para não mencionar mais as páginas de manual removidas.

localepurgeparcialmente faz isso também. Citado em apt-cache show localepurge:

Este é um script para recuperar o espaço em disco desperdiçado em locais desnecessários, localizações do Gnome / KDE e páginas de manual localizadas. Dependendo da instalação, é possível economizar cerca de 200, 300 ou mais mega bytes de espaço em disco dedicado à localização para a qual você provavelmente nunca terá utilidade. É executado automaticamente quando a ação de instalação do apt é concluída.

A citação mais importante:

Definitivamente, abstenha-se de relatar esses bugs que culparam o localepurge se você interromper o sistema usando-o. Se você não sabe o que está fazendo e não pode lidar com nenhuma quebra resultante sozinho, simplesmente não use este pacote.

;-D

Então, faça um backup completo e tente escrever o seu manpagekiller...


fonte
1
Esta é a solução que eu tinha em mente também (que, além de não instalar man-db). Eu adicionaria o gancho pós- /etc/dpkg.cfg.dchamada via e não via APT, para lidar com invocações diretas de dpkg.
Gilles 'SO- stop be evil'
Bem! A .debação por pacote (por ) dpkgainda será mais fácil do que a ação pós-instalação, aptporque você terá o nome do pacote e não precisará varrer todos os *.listarquivos em busca de páginas de manual repetidas vezes. Eu só esqueceu que dpkgtem sich um gancho também ...
Hmmm ... mas o manuseio de pacotes sendo instalados anteriormente a esse manipulador ainda exigirá a verificação dos *.listarquivos. No entanto, o dpkggancho pós-invocação é o melhor lugar para acionar essa ação.