Kann ich alle Manpages deaktivieren?

13

Kann ich speziell auf einem Himbeer-Pi (mit Raspbian Wheezy), aber auch allgemein, alle Manpages deaktivieren?

Dies würde keine gespeicherten Manpages bedeuten, keine "Verarbeitungsauslöser für man-db" und so weiter und so fort. Da die Handbuchseiten immer im Internet verfügbar sind, muss sie nicht wirklich installiert werden, und das Generieren und Speichern scheint unnötig.

Soumya
quelle
Ich fürchte, Sie stecken wahrscheinlich so weit wie die Manpages selbst fest - sie sind Teil der Debs der Software, mit der sie arbeiten.
Shadur
6
Sicher gibt es bessere Kandidaten für Platzersparnis als Manpages?
Jasonwryan
Ich könnte mir eine Konfiguration eines Verpackungstools vorstellen, mit der alle Dateien gelöscht werden, die als Dokumente und / oder Dateien markiert sind, die einem regulären Ausdruck entsprechen. Die Umsetzung dieses Konzepts ist mir jedoch nicht bekannt.
Pavel Šimerda
Sie würden nur 1% des Speicherplatzes sparen (wahrscheinlich sogar weniger)? Wahrscheinlich etwas mehr, wenn Sie auch unterdrücken /usr/share/doc.
Gilles 'SO - hör auf böse zu sein'

Antworten:

15

Ich hatte das gegenteilige Problem mit einem Debian 8-Image, das jemand für ein Wandboard zusammengestellt hatte. Ich habe versucht, die Handbuchseite für einige bereits installierte Pakete zu finden, und festgestellt, dass nach der Installation einiger neuer Pakete die Handbuchseiten fehlten, obwohl sie in der Deb-Datei vorhanden waren.

Ich habe dann diese Datei 01_nodoc in /etc/dpkg/dpkg.conf.d gefunden. Dies ist eine einfache Lösung für die ursprüngliche Frage, wie Speicherplatz gespart werden kann, indem manuelle Seiten und Gebietsschemas sowie Copyright-Dateien gelöscht werden, bei denen der Speicherplatz knapp ist (z. B. eingebettet) Systeme).

# /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
Platzsparer
quelle
Eine weitere nützliche Antwort finden Sie unter askubuntu.com/a/401144/162384 , die - zusätzlich zu einem guten Beispiel - auf die folgenden Dokumente verweist: wiki.ubuntu.com/ReducingDiskFootprint#Documentation
bis
6

Das Problem ist, dass das Paketverwaltungssystem erwartet, dass die von ihm installierten Dateien (einschließlich Manpages) dort verbleiben. Unabhängig davon, welchen Mechanismus Sie zum Entfernen verwenden (außer, dass jedes Paket neu erstellt wird, wie von HalosGhost vorgeschlagen), wird es verwirrt.

Wenn Sie eine Single-Purpose-Appliance erstellen möchten, können Sie auch separate Build- und Bereitstellungsschritte für die Appliance durchführen. Das heißt, Sie installieren alle gewünschten Pakete in einer separaten Build-Umgebung (einer anderen SD-Karte oder einem emulierten RPi) und kopieren dann nur das, was Sie in der Produktion haben möchten, aus der Build-Umgebung in die Produktionsumgebung. In diesem Stadium können Sie Manpages und alles andere weglassen, was in der Produktion nicht benötigt wird.

Um aktualisierte Betriebssystem- oder Sicherheitskorrekturen zu erhalten, aktualisieren oder erstellen Sie die Build-Umgebung neu und kopieren (oder rsync) erneut in die Produktion.

Das ist ein bisschen mehr Arbeit, aber es gibt Ihnen ein sehr kontrolliertes Produktionsgerät im Vergleich zum Anmelden und direkten Ausführen von Upgrades.

Andrew McGuinness
quelle
5

Nun, da ich nicht weiß, welche Distribution Ihr RPi ausführt, kann ich Ihnen nicht mit den genauen Befehlen helfen, aber Sie können wahrscheinlich das man-dbPaket entfernen , das sowohl das manDienstprogramm als auch eine Vielzahl von Manpages bietet . Das Entfernen aller Manpages würde jedoch das Entfernen jeder Manpage aus jedem Paket erfordern - ich kann mir nicht vorstellen, dass dies Ihre Zeit wert ist, nur um KiBs Platz zu sparen.

Wenn Sie wirklich wollten, müssten Sie jedes Paket neu erstellen. In einer Distribution wie Archlinux oder Gentoo ist dies nicht unbedingt unmöglich, aber dennoch ziemlich langweilig. Bei anderen weniger "praktischen" Distributionen ist diese Aufgabe möglicherweise unglaublich schwierig.

HalosGhost
quelle
2
apt-get remove --purge man-dbwird auch deinstalliert debhelperwird das nicht benötigt?
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"; };

Das Paket debsumsinstalliert eine Aktion zum automatischen Generieren von md5sum-Listen für Pakete, nachdem ein Paket installiert wurde, ohne bereits eine eigene md5sums-Datei zu haben.

Sie können nach jeder Installationsaktion eine ähnliche Aktion nach der Installation hinzufügen, mit der nach Manpages (und Infodokumenten) gesucht und diese entfernt werden.

Um die Manpages und die Besitzpakete zu erhalten, müssen Sie alle /var/lib/dpkg/info/PACKAGENAME.listDateien durchsuchen .

Sie sollten die *.listDateien aktualisieren , ganz zu schweigen von den entfernten Manpages.

localepurgeteilweise auch. Zitiert aus apt-cache show localepurge:

Dies ist ein Skript zum Wiederherstellen von Speicherplatz, der für nicht benötigte Gebietsschemas, Gnome / KDE-Lokalisierungen und lokalisierte Manpages verschwendet wurde. Abhängig von der Installation können 200, 300 oder sogar mehr Megabyte Festplattenspeicher für die Lokalisierung eingespart werden, für die Sie höchstwahrscheinlich nie eine Verwendung haben werden. Es wird nach Abschluss aller geeigneten Installationsaktionen automatisch ausgeführt.

Das wichtigste Zitat:

Bitte verzichten Sie auf jeden Fall darauf, solche Fehler zu melden, die localepurge beschuldigen, wenn Sie Ihr System durch die Verwendung beschädigen. Wenn Sie nicht wissen, was Sie tun, und einen daraus resultierenden Bruch nicht alleine bewältigen können, verwenden Sie dieses Paket einfach nicht.

;-D

Machen Sie einfach ein vollständiges Backup und versuchen Sie, Ihre manpagekiller...


quelle
1
Dies ist die Lösung, die ich auch im Sinn hatte (das, plus nicht installieren man-db). Ich würde den Post-Invoke-Hook /etc/dpkg.cfg.deher über als über APT hinzufügen , um direkte Aufrufe von zu verarbeiten dpkg.
Gilles 'SO - hör auf böse zu sein'
Fein! Als .debAktion pro Paket (pro ) ist dpkgdies sogar einfacher als als Aktion nach der Installation, aptda Sie den Paketnamen haben und nicht alle *.listDateien immer wieder nach Manpages durchsuchen müssen. Ich habe nur vergessen, dass dpkgsich auch ein Haken hat ...
Hmmm ... aber für die Bearbeitung von Paketen, die früher als dieser Handler installiert wurden, müssen die *.listDateien noch gescannt werden. Trotzdem ist der dpkgPost-Invoke-Hook der bessere Ort, um diese Aktion auszulösen.