Di mana saya harus menginstal halaman manual dalam direktori pengguna?


13

Saya mencoba membuat Makefile untuk utilitas Perl kecil yang saya tulis, Dan saya berjuang untuk menemukan cara untuk menemukan tempat menginstal halaman manual saya ketika makedijalankan sebagai pengguna non-root .

Saat ini saya sedang menguraikan hasil manpathuntuk mengetahui jalur pertama dalam $HOMEdirektori ... dan hampir berfungsi dengan baik.

Jalan yang saya temukan adalah ~/mandan~/share/man

Satu-satunya masalah adalah bahwa jika direktori tersebut tidak ada di tempat pertama, manpathtidak menghasilkan satupun dari mereka.

Pertanyaan

  • Apakah ada cara portabel untuk mengetahui di mana saya harus menginstal halaman manual di direktori $ HOME pengguna?
  • Jika tidak, yang mana yang lebih disukai?

Jawaban:


13

Anda dapat menempatkan halaman manual dalam direktori ini:

$HOME/.local/share/man

Mengakses secara langsung

Dan kemudian Anda dapat mengaksesnya secara langsung menggunakan man:

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

$ MANPATH

Anda dapat memeriksa apa $MANPATHisinya dengan perintah manpath, atau mengulangi variabel lingkungan $MANPATH.

Contohnya

$ 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

Anda dapat menambahkan beberapa hal ke MANPATH untuk sementara:

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

Jika Anda ingin menjadikan ini permanen, tambahkan file di /etc/profile.d/direktori Anda myman.bashdengan MANPATH=baris di atas . Ini akan dijemput sistem secara luas untuk semua orang. Jika Anda menginginkannya hanya untuk Anda, maka tambahkan ke $HOME/.bash_profileatau $HOME/.bashrc.


2
Untuk menekan manpathperingatan tentang MANPATHdisetel, Anda dapat melewati -qopsi.
Joseph R.

2
Ya, saya tahu saya bisa tahu ke manmana harus mencari. Saya mencari cara generik, portabel untuk instalasi generik (yaitu: di mana manmencari pada konfigurasi standar)
Romuald Brunet

Lakukan echo $MANPATHdan lihat apa yang ditampilkan. Itu adalah tempat yang bagus untuk mulai mencari, atau menggunakan manpathperintah seperti yang saya tunjukkan dalam jawaban saya.
slm

0

Jawab dengan desciption

Saya menjalankan Cygwin di Windows 7. Ketika saya mencoba

echo $MANPATH

Saya tidak mendapatkan apa-apa. Ini adalah cara portabel saya untuk menemukan di mana harus meletakkan manhalaman baru .

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

(Catatan tentang perintah gila itu ada di bagian bawah jawaban ini.)

Anda cukup menggantinya /dengan ~. Kemungkinan lain ada di bawah bagian Catatan lain di bawah ini.

Di mesin saya, findperintah kembali:

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

Bagi saya, itu berarti ada dua kemungkinan: /share/mandan /usr/man.

Saya memilih untuk menggunakan /usr/man, yang tidak Anda inginkan, tetapi saya perlu melakukan lebih banyak penjelajahan.

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

Jadi, di mana saya punya manfile baru di doc/sub-direktori direktori kerja saya, saya menggunakan

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

Sekarang, saya bisa membuka "manual" saya dengan mengetik

$ man my_new_executable

Jika Anda tidak melihat kandidat yang memungkinkan, Anda dapat menghapus bagian ini atau mengubahnya, mis. Ke -maxdepth 3, atau 4, atau 5seberapa dalam yang diperlukan untuk menemukan apa yang Anda butuhkan. Ketika saya melakukannya dengan 3, saya menemukan dua kandidat lain, /var/cache/mandan usr/share/man, tetapi saya sudah menemukan solusi kerja, jadi saya tidak mengacaukan mereka.


Catatan lain

Saya percaya bahwa /share/man/man1atau /var/cache/manakan tersedia untuk pengguna non-root, seperti yang Anda minta. Mohon koreksi saya jika saya salah.


Catatan yang dijanjikan di bagian bawah

Perhatikan bahwa saya menggunakan -maxdepth 2opsi ini find, karena saya pikir mandirektori tersebut berada dalam dua direktori dari root sistem file, dan saya tidak ingin mendapatkan terlalu banyak direktori asing yang entah bagaimana memiliki substring man, seperti halnya /lib/gnome-comanusiader .

Hal-hal tambahan di sekitar findada untuk menekan Permission deniedkesalahan jika Anda tidak memiliki akses ke suatau sudo. Berikut ini adalah deskripsi yang bagus tentang apa yang terjadi. (Cari baris yang dimulai dengan "gniourf_gniourf".)


0

Saya telah menginstal beberapa aplikasi yang saya kompilasi, dengan masing-masing configureditetapkan untuk menginstal ${HOME}/usr/local.

Saya menemukan sekarang bahwa saya memiliki direktori

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

dengan manpages gnuplot.1, gnuplot-ja.1, python3.1, python3.5.1, libpng.3, libpngpf.3, zlib.3, png.5, jadi saya kira (diberi awalan saya) itu adalah lokasi yang cukup standar untuk aplikasi diinstal secara lokal.

Ini kemudian menjadi lokasi kandidat untuk kasus-kasus di mana seseorang harus memilih secara manual mandirektori lokal .

Tentu saja, seseorang dapat menambahkan jalur arbitrer (dan harus melakukannya bahkan dalam kasus yang biasa disebutkan) untuk manhalaman dengan

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

(lihat ini ).

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.