Où dois-je installer les pages de manuel dans le répertoire utilisateur?


13

J'essaie de créer un Makefile pour un petit utilitaire Perl que j'ai écrit, et j'ai du mal à trouver un moyen de trouver où installer ma page de manuel lorsqu'elle makeest exécutée en tant qu'utilisateur non root .

J'analyse actuellement la sortie de manpathpour trouver le premier chemin dans le $HOMErépertoire… et cela fonctionne presque bien.

Les chemins que j'ai trouvés sont ~/manet~/share/man

Le seul problème est que si ces répertoires n'existent pas en premier lieu, manpathn'en génère aucun.

Des questions

  • Existe-t-il un moyen portable de savoir où installer les pages de manuel dans le répertoire $ HOME de l'utilisateur?
  • Sinon, lequel d'entre eux devrait être préféré?

Réponses:


13

Vous pouvez mettre les pages de manuel dans ce répertoire:

$HOME/.local/share/man

Accéder directement

Et puis vous pouvez y accéder directement en utilisant man:

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

$ MANPATH

Vous pouvez vérifier la nature de $MANPATHla commande manpathou faire écho à la variable d'environnement $MANPATH.

Exemples

$ 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

Vous pouvez ajouter des éléments au MANPATH temporairement:

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

Si vous voulez rendre cela permanent, ajoutez un fichier dans votre /etc/profile.d/répertoire appelé myman.bashavec la MANPATH=ligne ci-dessus . Cela sera récupéré dans tout le système pour tout le monde. Si vous voulez que ce soit juste pour vous, ajoutez-le à votre $HOME/.bash_profileou $HOME/.bashrc.


2
Pour supprimer les manpathavertissements concernant la MANPATHdéfinition, vous pouvez passer l' -qoption.
Joseph R.

2
Oui, je sais que je peux dire manoù chercher. Je cherche un moyen générique et portable pour une installation générique (ie: où mancherche une configuration standard)
Romuald Brunet

Faites un echo $MANPATHet voyez ce que cela montre. Ce sont de bons endroits pour commencer à chercher ou utiliser la manpathcommande comme je l'ai montré dans ma réponse.
slm

0

Réponse avec description

J'exécute Cygwin sur Windows 7. Lorsque j'essaie

echo $MANPATH

Je ne reçois rien. Voici ma façon portable de trouver où mettre de nouvelles manpages.

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

(Une note sur cette commande folle est au bas de cette réponse.)

Vous pouvez simplement remplacer /par ~. Une autre possibilité se trouve dans la section Autre note ci-dessous.

Sur ma machine, la findcommande a renvoyé:

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

Pour moi, cela signifiait qu'il y avait deux possibilités: /share/manet /usr/man.

J'ai choisi d'utiliser /usr/man, ce que vous ne feriez pas, mais je devais explorer davantage.

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

Donc, là où j'avais les nouveaux manfichiers dans un doc/sous-répertoire de mon répertoire de travail, j'ai utilisé

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

Maintenant, je pouvais accéder à mon "manuel" en tapant

$ man my_new_executable

Si vous ne voyez pas de candidat probable, vous pouvez supprimer cette partie ou la modifier, par exemple en -maxdepth 3, ou 4, ou 5, ou quelle que soit la profondeur nécessaire pour trouver ce dont vous avez besoin. Quand je l'ai fait avec 3, j'ai trouvé deux autres candidats, /var/cache/manet usr/share/man, mais j'avais déjà trouvé une solution de travail, je n'ai donc pas joué avec eux.


Une autre note

Je crois que /share/man/man1ou /var/cache/manserait disponible pour les utilisateurs non root, comme vous l'aviez demandé. S'il vous plait corrigez moi si je me trompe.


La note promise en bas

Notez que j'ai utilisé l' -maxdepth 2option avec find, car je pensais que le manrépertoire se trouverait dans deux répertoires de la racine du système de fichiers, et je ne voulais pas obtenir trop de répertoires étrangers qui avaient en quelque sorte la sous-chaîne man, comme l'a fait /lib/gnome-comander .

Les éléments supplémentaires autour du findsont là pour supprimer les Permission deniederreurs au cas où vous n'auriez pas accès à suou sudo. Voici une excellente description de ce qui se passe. (Recherchez la ligne qui commence par "gniourf_gniourf".)


0

J'ai installé quelques applications que j'ai compilées, avec les configureparamètres respectifs pour l'installation dans ${HOME}/usr/local.

Je trouve maintenant que j'ai des répertoires

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

avec manpages gnuplot.1, gnuplot-ja.1, python3.1, python3.5.1, libpng.3, libpngpf.3, zlib.3, png.5, donc je suppose que (donné mon préfixe) est un endroit assez standard pour les applications installées localement.

Il s'agit alors d'un emplacement candidat pour les cas où l'on doit choisir manuellement le manrépertoire local .

Bien sûr, on peut ajouter des chemins arbitraires (et devrait le faire même dans le cas habituel juste mentionné) pour les manpages avec

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

(voir ceci ).

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.