Dove devo installare le pagine di manuale nella directory degli utenti?


13

Sto cercando di creare un Makefile per una piccola utility Perl che ho scritto, e sto lottando per trovare un modo per trovare dove installare la mia pagina man quando makeviene eseguito come utente non root .

Attualmente sto analizzando l'output di manpathper scoprire il primo percorso nella $HOMEdirectory ... e quasi funziona bene.

I percorsi che ho trovato sono ~/mane~/share/man

L'unico problema è che se quelle directory non esistono in primo luogo, manpathnon ne genera nessuna.

Domande

  • C'è un modo portatile per scoprire dove dovrei installare le pagine man nella directory $ HOME dell'utente?
  • In caso contrario, quale di questi dovrebbe essere preferito?

Risposte:


13

Puoi mettere le pagine man in questa directory:

$HOME/.local/share/man

Accesso diretto

E poi puoi accedervi direttamente usando man:

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

$ MANPATH

È possibile verificare ciò che $MANPATHè con il comando manpatho echo fuori la variabile di ambiente $MANPATH.

Esempi

$ 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

Puoi aggiungere temporaneamente oggetti al MANPATH:

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

Se vuoi renderlo permanente, aggiungi un file nella tua /etc/profile.d/directory chiamato myman.bashcon la MANPATH=riga sopra in esso. Questo verrà raccolto a livello di sistema per tutti. Se vuoi che sia solo per te, aggiungilo al tuo $HOME/.bash_profileo $HOME/.bashrc.


2
Per eliminare gli manpathavvisi sull'impostazione MANPATH, è possibile passare l' -qopzione.
Joseph R.,

2
Sì, lo so che posso dire mandove cercare. Sto cercando un modo generico e portatile per un'installazione generica (cioè: dove sta mancercando una configurazione standard)
Romuald Brunet,

Fare un echo $MANPATHe vedere ciò che mostra. Questi sono buoni posti per iniziare a cercare o usare il manpathcomando come ho mostrato nella mia risposta.
slm

0

Rispondi con la descrizione

Sto eseguendo Cygwin su Windows 7. Quando provo

echo $MANPATH

Non ho niente. Ecco il mio modo portatile di trovare dove mettere nuove manpagine.

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

(Una nota su quel folle comando è in fondo a questa risposta.)

Si potrebbe semplicemente sostituire /con ~. Un'altra possibilità è nella sezione Un'altra nota in basso.

Sul mio computer, il findcomando ha restituito:

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

Per me, ciò significava che c'erano due possibilità: /share/mane /usr/man.

Ho scelto di usare /usr/man, cosa che non avresti fatto, ma dovevo fare qualche esplorazione in più.

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

Quindi, dove avevo i nuovi manfile in una doc/sottodirectory della mia directory di lavoro, ho usato

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

Ora, potrei arrivare al mio "manuale" digitando

$ man my_new_executable

Se non vedi un candidato probabile, puoi rimuovere questa parte o cambiarla, ad es. In -maxdepth 3, o 4, o 5, o per quanto profonda ci sia per trovare ciò di cui hai bisogno. Quando l'ho fatto 3, ho trovato altri due candidati /var/cache/mane usr/share/man, ma avevo già trovato una soluzione funzionante, quindi non ho fatto casino con loro.


Un'altra nota

Credo che /share/man/man1o /var/cache/mansarebbe disponibile per gli utenti non root, come da lei richiesto. Perfavore, correggimi se sbaglio.


La nota promessa in fondo

Si noti che ho usato l' -maxdepth 2opzione con find, perché ho pensato che la mandirectory sarebbe all'interno di due directory della radice del file system e non volevo ottenere troppe directory estranee che in qualche modo avevano la sottostringa man, come ha fatto l' /lib/gnome-couomoder .

Le cose extra intorno a findsono lì per eliminare eventuali Permission deniederrori nel caso in cui non si abbia accesso a suo sudo. Ecco una grande descrizione di ciò che sta accadendo. (Cerca la riga che inizia con "gniourf_gniourf".)


0

Ho installato alcune app che ho compilato, con i rispettivi configureset per l'installazione ${HOME}/usr/local.

Ora trovo di avere delle directory

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

con pagine di manuale gnuplot.1, gnuplot-ja.1, python3.1, python3.5.1, libpng.3, libpngpf.3, zlib.3, png.5, quindi credo che (dato il mio prefisso) è una posizione abbastanza standard per le applicazioni installate in locale.

È quindi una posizione candidata per i casi in cui si deve scegliere manualmente la mandirectory locale .

Naturalmente, si possono aggiungere percorsi arbitrari (e lo si dovrebbe fare anche nel solito caso giusto menzionato) per le manpagine con

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

(vedi questo ).

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.