¿Dónde debo instalar páginas de manual en el directorio de usuarios?

13

Estoy tratando de crear un Makefile para una pequeña utilidad Perl que escribí, y estoy luchando por encontrar una manera de encontrar dónde instalar mi página de manual cuando makese ejecuta como usuario no root .

Actualmente estoy analizando la salida de manpathpara encontrar la primera ruta en el $HOMEdirectorio ... y casi funciona bien.

Los caminos que he encontrado son ~/many~/share/man

El único problema es que si esos directorios no existen en primer lugar, manpathno genera ninguno de ellos.

Preguntas

  • ¿Hay alguna forma portátil de averiguar dónde debo instalar las páginas man en el directorio $ HOME del usuario?
  • Si no, ¿cuál de ellos debería preferirse?
Romuald Brunet
fuente

Respuestas:

13

Puede poner las páginas man en este directorio:

$HOME/.local/share/man

Accediendo directamente

Y luego puede acceder a ellos directamente usando man:

man $HOME/.local/share/man/manX/manpage.1.gz

$ MANPATH

Puede verificar qué $MANPATHes con el comando manpatho hacer eco de la variable de entorno $MANPATH.

Ejemplos

$ manpath
manpath: warning: $MANPATH set, ignoring /etc/man_db.conf
/home/saml/apps/perl5/perlbrew/perls/perl-5.14.0/man:/home/saml/.rvm/rubies/ruby-1.9.2-p180/share/man:/home/saml/.rvm/man:/usr/local/share/man:/usr/share/man:/usr/brlcad/share/man:/usr/man:/usr/brlcad/share/man:/usr/brlcad/share/man

$ echo $MANPATH
/home/saml/apps/perl5/perlbrew/perls/perl-5.14.0/man:/home/saml/.rvm/rubies/ruby-1.9.2-p180/share/man:/home/saml/.rvm/man:/usr/local/share/man:/usr/share/man:/usr/brlcad/share/man:/usr/man:/usr/brlcad/share/man:/usr/brlcad/share/man

Puede agregar cosas al MANPATH temporalmente:

MANPATH=$HOME/.local/share/man:$MANPATH

Si desea hacer esto permanente, agregue un archivo en su /etc/profile.d/directorio llamado myman.bashcon la MANPATH=línea anterior . Esto se recogerá en todo el sistema para todos. Si desea que sea solo para usted, agréguelo a su $HOME/.bash_profileo $HOME/.bashrc.

slm
fuente
2
Para suprimir las manpathadvertencias sobre la MANPATHconfiguración, puede pasar la -qopción.
Joseph R.
2
Sí, sé que puedo decir a mandónde mirar. Estoy buscando una forma genérica y portátil para una instalación genérica (es decir, dónde se manbusca una configuración estándar)
Romuald Brunet
Haga un echo $MANPATHy vea lo que eso muestra. Esos son buenos lugares para comenzar a buscar, o usar el manpathcomando como lo mostré en mi respuesta.
slm
0

Responde con una descripción

Estoy ejecutando Cygwin en Windows 7. Cuando intento

echo $MANPATH

No consigo nada Aquí está mi forma portátil de encontrar dónde poner nuevas manpáginas.

$ { find / -maxdepth 2 -type d -name "*man*" 3>&2 2>&1 1>&3 | \
grep -v 'Permission denied' >&3; } 3>&2 2>&1

(Una nota sobre ese comando loco está al final de esta respuesta).

Simplemente podría reemplazar /con ~. Otra posibilidad se encuentra en la sección Otra nota a continuación.

En mi máquina, el findcomando regresó:

 /etc/openwsman
 /lib/filemanager-actions
 /lib/gnome-commander
 /lib/help2man
 /lib/window-manager-settings
 /share/man
 /usr/man

Para mí, eso significaba que había dos posibilidades: /share/many /usr/man.

Elegí usar /usr/man, que no lo harías, pero necesitaba explorar un poco más.

$ ls -l /usr/man
total 0
drwxr-xr-x+ 1 me Users 0 April 31 17:13 man1

Entonces, donde tenía los nuevos manarchivos en un doc/subdirectorio de mi directorio de trabajo, usé

$ cp -R doc/* /usr/man/man1

Ahora, podría llegar a mi "manual" escribiendo

$ man my_new_executable

Si no ve un candidato probable, puede eliminar esta parte o cambiarla, por ejemplo -maxdepth 3, a , o 4, o 5, lo profundo que sea necesario para encontrar lo que necesita. Cuando lo hice 3, encontré otros dos candidatos /var/cache/many usr/share/man, pero ya había encontrado una solución que funcionaba, así que no me metí con ellos.


Otra nota

Creo que /share/man/man1o /var/cache/manestaría disponible para usuarios no root, como lo solicitó. Por favor, corríjame si estoy equivocado.


La nota prometida al pie

Tenga en cuenta que usé la -maxdepth 2opción con find, porque pensé que el mandirectorio estaría dentro de dos directorios de la raíz del sistema de archivos, y no quería obtener demasiados directorios extraños que de alguna manera tenían la subcadena man, como lo hizo /lib/gnome-comander .

El material adicional alrededor del findestá allí para suprimir cualquier Permission deniederror en caso de que no tenga acceso a suo sudo. Aquí hay una gran descripción de lo que está sucediendo. (Busque la línea que comienza con "gniourf_gniourf").

bballdave025
fuente
0

He instalado algunas aplicaciones que he compilado, con los respectivos configures configurados para instalar en ${HOME}/usr/local.

Ahora encuentro que tengo directorios

~/usr/local/share/man/man1
~/usr/local/share/man/man3
~/usr/local/share/man/man5

con páginas de manual gnuplot.1, gnuplot-ja.1, python3.1, python3.5.1, libpng.3, libpngpf.3, zlib.3, png.5, por lo que supongo (dado mi prefijo) que es un lugar bastante estándar para las aplicaciones instaladas localmente.

Es entonces una ubicación candidata para los casos en que uno tiene que elegir manualmente el mandirectorio local .

Por supuesto, uno puede agregar rutas arbitrarias (y debería hacerlo incluso en el caso habitual mencionado) para manpáginas con

export MANPATH="$HOME/usr/local/share/man${MANPATH:+:${MANPATH}}"

(ver esto )

sancho.s Restablece a Monica
fuente