Posso disabilitare tutte le pagine man?


13

In particolare su un Raspberry Pi (con Raspbian Wheezy), ma anche in generale, posso disabilitare tutte le pagine man?

Ciò significherebbe nessuna man page memorizzata, nessun "trigger di elaborazione per man-db" e così via e così via. Con le pagine di manuale sempre disponibili su Internet, non ho davvero bisogno che siano installate e la loro generazione e memorizzazione sembra superflua.


Temo che probabilmente rimarrai bloccato per quanto riguarda le stesse pagine man - fanno parte dei detriti del software con cui vanno.
Shadur,

6
Sicuramente ci sono candidati migliori per risparmiare spazio rispetto alle pagine man?
Jasonwryan,

Potrei immaginare una configurazione di uno strumento di packaging per eliminare tutti i file contrassegnati come documenti e / o file corrispondenti a una regex. Non sono a conoscenza delle implementazioni di questo concetto, però.
Pavel Šimerda,

Risparmieresti solo cosa, 1% di spazio (probabilmente meno in effetti)? Probabilmente un po 'di più se anche tu sopprimi /usr/share/doc.
Gilles 'SO- smetti di essere malvagio'

Risposte:


15

Stavo avendo il problema opposto su un'immagine Debian 8 che qualcuno aveva messo insieme per un Wandboard. Stavo cercando di trovare la pagina di manuale per alcuni pacchetti che erano già installati e ho notato che dopo averne installato alcuni nuovi, mancavano le pagine di manuale, anche se erano presenti nel file deb.

Ho quindi trovato questo file 01_nodoc in /etc/dpkg/dpkg.conf.d, che è una soluzione semplice alla domanda originale su come risparmiare spazio eliminando pagine di manuale e locali e file di copyright in cui lo spazio è un premio (ad esempio incorporato sistemi).

# /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

Un'altra risposta utile è askubuntu.com/a/401144/162384 , che - oltre a un ottimo esempio - punta ai documenti: wiki.ubuntu.com/ReducingDiskFootprint#Documentation
berto

6

Il problema è che il sistema di gestione dei pacchetti si aspetta che i file installati (comprese le pagine man) rimangano lì, quindi qualunque meccanismo si usi per rimuoverli (tranne ricostruire ogni pacchetto come suggerisce HalosGhost) lo confonderà.

Se quello che stai facendo è produrre un'appliance monouso, un approccio che potresti adottare è quello di avere fasi separate di build e deploy per l'appliance. Ossia, si installano tutti i pacchetti desiderati in un ambiente di build separato (una scheda SD diversa o un RPi emulato), quindi si copia solo ciò che si desidera avere in produzione dall'ambiente di build all'ambiente di produzione. A quel punto, puoi tralasciare le pagine man e qualsiasi altra cosa non necessaria in produzione.

Per raccogliere il sistema operativo aggiornato o le correzioni di sicurezza, aggiorni o ricostruisci l'ambiente di costruzione e copi (o rsync) di nuovo in produzione.

È un po 'più di lavoro, ma ti dà un dispositivo di produzione molto controllato, rispetto all'accesso e all'esecuzione degli aggiornamenti direttamente su di esso.


5

Bene, non sapendo quale distro è in esecuzione il tuo RPi, non posso aiutarti con i comandi esatti, ma probabilmente puoi rimuovere il man-dbpacchetto che fornisce sia l' manutilità che una varietà di pagine man. Tuttavia, la rimozione di tutte le pagine man richiederebbe la rimozione di ogni pagina man da ciascun pacchetto: non riesco a immaginare che valga la pena dedicare del tempo solo a risparmiare KiB di spazio.

Se lo volessi davvero, allora dovrai ricostruire ogni pacchetto; su una distribuzione come Archlinux o Gentoo, questo non è necessariamente impossibile, ma è ancora abbastanza noioso. Su altre distro meno "pratiche", potresti trovare questo compito incredibilmente difficile.


2
apt-get remove --purge man-dbdisinstallerà anche debhelperquello non è necessario?
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"; };

Il pacchetto debsumsinstalla un'azione per generare automaticamente gli elenchi md5sum per i pacchetti dopo l'installazione di un pacchetto senza avere già un proprio file md5sums.

È possibile aggiungere una simile azione post installazione analizzando e rimuovendo le manpage (e i documenti informativi) dopo ogni azione di installazione.

Per ottenere le manpage e i pacchetti proprietari, è necessario eseguire la scansione di tutti i /var/lib/dpkg/info/PACKAGENAME.listfile.

Dovresti aggiornare i *.listfile per non parlare più delle manpage rimosse.

localepurgelo fa anche parzialmente. Citato da apt-cache show localepurge:

Questo è uno script per recuperare lo spazio su disco sprecato per le localizzazioni non necessarie, le localizzazioni di Gnome / KDE e le pagine man localizzate. A seconda dell'installazione, è possibile risparmiare circa 200, 300 o anche più mega byte di spazio su disco dedicato alla localizzazione che molto probabilmente non sarà mai utile. Viene eseguito automagicamente al completamento di qualsiasi azione di installazione apt.

La citazione più importante:

Ti preghiamo di astenermi dal segnalare qualsiasi bug di questo tipo incolpando localepurge se rompi il tuo sistema utilizzandolo. Se non sai cosa stai facendo e non riesci a gestire da solo eventuali rotture risultanti, ti preghiamo di non utilizzare questo pacchetto.

;-D

Quindi fai un backup completo e prova a scrivere il tuo manpagekiller...


1
Questa è la soluzione che avevo in mente (che, oltre a non installare man-db). Aggiungerei l'hook post-invoke tramite /etc/dpkg.cfg.danziché tramite APT, per gestire le invocazioni dirette di dpkg.
Gilles 'SO- smetti di essere malvagio'

Bene! Come azione per pacchetto (per .deb) dpkg, sarà anche più facile che come azione post installazione aptperché avrai il nome del pacchetto e non avrai bisogno di scansionare *.listripetutamente tutti i file per manpage. Ho appena dimenticato che dpkgha anche un gancio ...

Hmmm ... ma la gestione dei pacchetti installati prima di questo gestore richiederà comunque la scansione dei *.listfile. Tuttavia l' dpkghook post-invocazione è il posto migliore per innescare quell'azione.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.