Gdzie mam zainstalować strony podręcznika w katalogu użytkownika?

13

Próbuję utworzyć plik Makefile dla małego narzędzia Perla, które napisałem, i staram się znaleźć sposób, aby znaleźć miejsce, w którym mogę zainstalować stronę man, gdy makejest uruchamiany jako użytkownik inny niż root .

Obecnie analizuję dane wyjściowe, manpathaby znaleźć pierwszą ścieżkę w $HOMEkatalogu… i prawie działa dobrze.

Ścieżki, które znalazłem, to ~/mani~/share/man

Jedynym problemem jest to, że jeśli te katalogi w ogóle nie istnieją, manpathnie wypisuje żadnego z nich.

pytania

  • Czy istnieje przenośny sposób, aby dowiedzieć się, gdzie powinienem zainstalować strony man w katalogu $ HOME użytkownika?
  • Jeśli nie, który z nich powinien być preferowany?
Romuald Brunet
źródło

Odpowiedzi:

13

Możesz umieścić strony man w tym katalogu:

$HOME/.local/share/man

Bezpośredni dostęp

Następnie możesz uzyskać do nich bezpośredni dostęp za pomocą man:

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

$ MANPATH

Możesz sprawdzić, co to $MANPATHjest za pomocą polecenia manpath, lub wypisać echo zmiennej środowiskowej $MANPATH.

Przykłady

$ 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

Możesz tymczasowo dodać elementy do MANPATH:

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

Jeśli chcesz, aby to było trwałe, dodaj plik do /etc/profile.d/katalogu o nazwie myman.bashz powyższą MANPATH=linią. Zostanie wybrany system dla każdego. Jeśli chcesz, aby był przeznaczony tylko dla Ciebie, dodaj go do swojego $HOME/.bash_profilelub $HOME/.bashrc.

slm
źródło
2
Aby ukryć manpathostrzeżenia o MANPATHustawieniu, możesz przekazać tę -qopcję.
Joseph R.
2
Tak, wiem, że mogę powiedzieć, mangdzie szukać. Szukam ogólnego, przenośnego sposobu na ogólną instalację (tzn. Gdzie manszuka się standardowej konfiguracji)
Romuald Brunet,
Zrób echo $MANPATHi zobacz, co to pokazuje. Są to dobre miejsca, aby zacząć szukać lub użyć manpathpolecenia, jak pokazałem w mojej odpowiedzi.
slm
0

Odpowiedz z opisem

Używam Cygwin na Windows 7. Kiedy próbuję

echo $MANPATH

Nic nie dostaję Oto mój przenośny sposób na znalezienie nowych manstron.

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

(Uwaga na temat tego szalonego polecenia znajduje się na dole tej odpowiedzi).

Można po prostu zastąpić /z ~. Inna możliwość znajduje się w sekcji Kolejna uwaga poniżej.

Na moim komputerze findpolecenie zwróciło:

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

Dla mnie oznaczało to, że były dwie możliwości: /share/mani /usr/man.

Zdecydowałem się użyć /usr/man, czego nie chciałbyś, ale potrzebowałem trochę więcej odkrywania.

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

Tak więc, gdzie miałem nowe manpliki w doc/podkatalogu mojego katalogu roboczego, użyłem

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

Teraz mogę przejść do „instrukcji”, pisząc

$ man my_new_executable

Jeśli nie widzisz prawdopodobnego kandydata, możesz usunąć tę część lub zmienić ją, np. Na -maxdepth 3, lub 4, lub jak 5głęboko potrzeba, aby znaleźć to, czego potrzebujesz. Kiedy to zrobiłem 3, znalazłem dwóch innych kandydatów /var/cache/mani usr/share/man, ale znalazłem już działające rozwiązanie, więc nie zadzwoniłem z nimi.


Kolejna uwaga

Wierzę, że /share/man/man1lub /var/cache/manbędzie dostępny dla użytkowników innych niż root, zgodnie z twoją prośbą. Proszę, popraw mnie jeśli się mylę.


Obiecana notatka na dole

Zauważ, że użyłem tej -maxdepth 2opcji z find, ponieważ pomyślałem, że mankatalog będzie w obrębie dwóch katalogów katalogu głównego systemu plików i nie chciałem uzyskać zbyt wielu katalogów zewnętrznych, które w jakiś sposób miały podłańcuch man, podobnie jak /lib/gnome-comander .

Dodatkowe elementy wokół findsą w celu wyeliminowania Permission deniedbłędów w przypadku, gdy nie masz dostępu do sulub sudo. Oto świetny opis tego, co się dzieje. (Poszukaj linii rozpoczynającej się od „gniourf_gniourf”.)

bballdave025
źródło
0

Zainstalowałem kilka aplikacji, które skompilowałem, wraz z odpowiednim configurezestawem do instalacji ${HOME}/usr/local.

Teraz stwierdzam, że mam katalogi

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

ze strony podręcznika gnuplot.1, gnuplot-ja.1, python3.1, python3.5.1, libpng.3, libpngpf.3, zlib.3, png.5, więc myślę, że (biorąc pod uwagę mój prefiks) jest to dość standardowy lokalizacja dla aplikacji zainstalowanych lokalnie.

Jest to wtedy lokalizacja kandydująca w przypadkach, w których należy ręcznie wybrać mankatalog lokalny .

Oczywiście można dodać dowolne ścieżki (i należy to zrobić nawet w zwykłym, wspomnianym przypadku) dla manstron z

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

(zobacz to ).

sancho.s Przywróć Monikę
źródło