¿Puedo desactivar todas las páginas man?

14

Específicamente en una frambuesa pi (ejecutando Raspbian Wheezy), pero también en general, ¿puedo desactivar todas las páginas man?

Esto significaría que no hay páginas de manual almacenadas, "desencadenadores de procesamiento para man-db", y así sucesivamente. Con las páginas del manual siempre disponibles en Internet, realmente no las necesito instaladas, y generarlas y almacenarlas parece innecesario.

Soumya
fuente
Me temo que probablemente esté atrapado en lo que respecta a las páginas de manual, son parte de las deudas del software con el que van.
Shadur
66
¿Seguramente hay mejores candidatos para ahorrar espacio que las páginas man?
Jason
Podría imaginar una configuración de una herramienta de empaquetado para soltar todos los archivos marcados como documentos y / o archivos que coinciden con una expresión regular. Sin embargo, no estoy al tanto de las implementaciones de este concepto.
Pavel Šimerda
Solo ahorrarías, ¿qué, 1% de espacio (probablemente menos de hecho)? Probablemente un poco más si también reprimes /usr/share/doc.
Gilles 'SO- deja de ser malvado'

Respuestas:

16

Estaba teniendo el problema opuesto en una imagen de Debian 8 que alguien había preparado para un Wandboard. Estaba tratando de encontrar la página del manual para algunos paquetes que ya estaban instalados y noté que después de instalar algunos nuevos, faltaban las páginas del manual, a pesar de que estaban presentes en el archivo deb.

Luego encontré este archivo 01_nodoc en /etc/dpkg/dpkg.conf.d, que es una solución simple a la pregunta original sobre cómo ahorrar espacio eliminando páginas manuales y configuraciones regionales y archivos de copyright donde el espacio es muy importante (por ejemplo, incrustado 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
Ahorrador de espacio
fuente
Otra respuesta útil es en askubuntu.com/a/401144/162384 , que - además de un gran ejemplo - puntos para los docs: wiki.ubuntu.com/ReducingDiskFootprint#Documentation
berto
6

El problema es que el sistema de administración de paquetes espera que los archivos que instala (incluidas las páginas de manual) permanezcan allí, por lo que cualquier mecanismo que use para eliminarlos (excepto la reconstrucción de cada paquete como sugiere HalosGhost) lo confundirá.

Si lo que está haciendo es producir un dispositivo de un solo propósito, un enfoque que podría adoptar es tener pasos de compilación e implementación separados para el dispositivo. Es decir, instala todos los paquetes que desea en un entorno de compilación separado (una tarjeta SD diferente o un RPi emulado), y luego copia solo lo que desea tener en producción del entorno de compilación al entorno de producción. En esa etapa, puede omitir páginas de manual y cualquier otra cosa que no sea necesaria en la producción.

Para recoger el sistema operativo actualizado o las correcciones de seguridad, debe actualizar o reconstruir el entorno de compilación y copiar (o rsync) a producción nuevamente.

Eso es un poco más de trabajo, pero le brinda un dispositivo de producción muy controlado, en comparación con iniciar sesión y ejecutar actualizaciones directamente en él.

Andrew McGuinness
fuente
5

Bueno, sin saber qué distribución está ejecutando su RPi, no puedo ayudarlo con los comandos exactos, pero probablemente pueda eliminar el man-dbpaquete que proporciona la manutilidad y una variedad de páginas de manual. Sin embargo, eliminar todas las páginas de manual requeriría eliminar cada página de manual de cada paquete; no puedo imaginar que valga la pena su tiempo solo para ahorrar espacio de KiBs.

Si realmente quisiera, necesitaría reconstruir cada paquete; en una distribución como Archlinux o Gentoo, esto no es necesariamente imposible, pero sigue siendo bastante tedioso. En otras distribuciones menos "prácticas", puede encontrar esta tarea increíblemente difícil.

HalosGhost
fuente
2
apt-get remove --purge man-dbtambién se desinstalará debhelpersi no es necesario?
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"; };

El paquete debsumsinstala una acción para generar listas md5sum para paquetes automáticamente después de instalar un paquete sin tener un archivo md5sums propio.

Puede agregar una exploración de acción posterior a la instalación similar para eliminar y eliminar las páginas de manual (y los documentos de información) después de cada acción de instalación.

Para obtener las páginas de manual y los paquetes propietarios, debe escanear todos los /var/lib/dpkg/info/PACKAGENAME.listarchivos.

También debe actualizar los *.listarchivos sin mencionar las páginas de manual eliminadas.

localepurgeparcialmente hace esto también. Citado de apt-cache show localepurge:

Esta es una secuencia de comandos para recuperar el espacio en disco perdido para configuraciones regionales innecesarias, localizaciones de Gnome / KDE y páginas man localizadas. Dependiendo de la instalación, es posible ahorrar unos 200, 300 o incluso más megabytes de espacio en disco dedicado para la localización que probablemente nunca tendrá ningún uso. Se ejecuta automáticamente al finalizar cualquier acción de instalación adecuada.

La cita más importante:

Definitivamente, abstenerse de informar sobre cualquier error que culpe a localepurge si rompe su sistema al usarlo. Si no sabe lo que está haciendo y no puede manejar la rotura resultante por su cuenta, simplemente no use este paquete.

;-RE

Así que solo haga una copia de seguridad completa e intente escribir su manpagekiller...


fuente
1
Esta es la solución que también tenía en mente (eso, además, no instalar man-db). Agregaría el enlace posterior a la invocación /etc/dpkg.cfg.da través de APT en lugar de a través de APT, para manejar invocaciones directas de dpkg.
Gilles 'SO- deja de ser malvado'
¡Multa! Como .debacción por paquete (por ) dpkg, incluso será más fácil que como acción posterior a la instalación, aptya que tendrá el nombre del paquete y no necesitará escanear todos los *.listarchivos en busca de páginas de manual una y otra vez. Olvidé que eso también dpkgtiene un gancho ...
Hmmm ... pero manejar paquetes que se instalen antes que este controlador aún requerirá escanear los *.listarchivos. Sin embargo, el dpkggancho posterior a la invocación es el mejor lugar para activar esa acción.