Onde devo instalar as páginas de manual no diretório do usuário?

12

Estou tentando criar um Makefile para um pequeno utilitário Perl que eu escrevi, e estou lutando para encontrar uma maneira de encontrar onde instalar minha página man quando make é executado como um non- usuário root .

No momento, estou analisando a saída de manpath para descobrir o primeiro caminho no diretório $HOME … e ele quase funciona bem.

Os caminhos que encontrei são ~/man e ~/share/man

O único problema é que, se esses diretórios não existirem em primeiro lugar, manpath não produzirá nenhum deles.

Perguntas

  • Existe uma maneira portátil de descobrir onde devo instalar as páginas man no diretório $ HOME do usuário?
  • Se não, qual deles deve ser preferido?
por Romuald Brunet 15.09.2013 / 15:34

3 respostas

13

Você pode colocar as páginas man neste diretório:

$HOME/.local/share/man

Acessando diretamente

E então você pode acessá-los diretamente usando man :

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

$ MANPATH

Você pode verificar o que o $MANPATH está com o comando manpath ou ecoar a variável de ambiente $MANPATH .

Exemplos

$ 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

Você pode adicionar coisas ao MANPATH temporariamente:

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

Se você quiser torná-lo permanente, adicione um arquivo ao diretório /etc/profile.d/ chamado myman.bash com a linha MANPATH= acima. Isso vai pegar todo o sistema para todos. Se você quiser que seja apenas para você, adicione-o ao seu $HOME/.bash_profile ou $HOME/.bashrc .

    
por 15.09.2013 / 16:17
0

Responda com a descrição

Estou executando o Cygwin no Windows 7. Quando tento

echo $MANPATH

Eu não recebo nada. Aqui está a minha maneira portátil de descobrir onde colocar as novas man páginas.

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

(Uma nota sobre esse comando maluco está no final desta resposta.)

Você pode simplesmente substituir / por ~ . Outra possibilidade está na seção Outra nota abaixo.

Na minha máquina, o comando find retornou:

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

Para mim, isso significava que havia duas possibilidades: /share/man e /usr/man .

Eu escolhi usar /usr/man , o que você não faria, mas eu precisava explorar um pouco mais.

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

Então, onde eu tinha os novos arquivos man em um subdiretório doc/ do meu diretório de trabalho, usei

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

Agora, posso acessar meu "manual" digitando

$ man my_new_executable

Se você não encontrar um candidato provável, poderá removê-lo ou alterá-lo, por exemplo, para -maxdepth 3 , ou 4 ou 5 , ou quão profundo é necessário para encontrar o que você precisa. Quando eu fiz isso com 3 , encontrei dois outros candidatos, /var/cache/man e usr/share/man , mas eu já tinha encontrado uma solução de trabalho, então não mexi com eles.

Outra nota

Acredito que /share/man/man1 ou /var/cache/man estaria disponível para usuários não-root, como você havia solicitado. Por favor, corrija-me se estiver errado.

A nota prometida na parte inferior

Note que usei a opção -maxdepth 2 com find , porque imaginei que o diretório man estaria dentro de dois diretórios da raiz do sistema de arquivos, e não queria obter diretórios estranhos demais que de alguma forma tinha a substring man , assim como /lib/gnome-co man der .

O material extra em torno do find está lá para suprimir erros de Permission denied caso você não tenha acesso a su ou sudo . Aqui é uma ótima descrição do que está acontecendo. (Procure a linha que começa com "gniourf_gniourf".)

    
por 07.06.2018 / 01:09
0

Eu instalei alguns aplicativos que eu compilei com o respectivo configure s definido para instalação em ${HOME}/usr/local .

Eu acho agora que tenho diretórios

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

com as páginas de manual gnuplot.1 , gnuplot-ja.1 , python3.1 , python3.5.1 , libpng.3 , libpngpf.3 , zlib.3 , png.5 , então acho que (dado o meu prefixo) é um padrão bastante local para aplicativos instalados localmente.

É então um local candidato para os casos em que é preciso escolher manualmente o diretório local man .

Claro, pode-se adicionar caminhos arbitrários (e deve fazê-lo até mesmo no caso usual mencionado) para man páginas com

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

(veja esta ).

    
por 11.10.2018 / 06:41

Tags