Kullanıcı dizinine manuel sayfaları nereye yüklemeliyim?


13

Yazdığım küçük bir Perl yardımcı programı için bir Makefile oluşturmaya çalışıyorum ve kök olmayanmake bir kullanıcı olarak çalıştırıldığında adam sayfamı nereye yükleyeceğimi bulmanın bir yolunu bulmaya çalışıyorum .

Şu anda dizinde manpathilk yolu bulmak için çıktı ayrıştırıyorum $HOME... ve neredeyse iyi çalışıyor.

Bulduğum yollar ~/manve~/share/man

Tek sorun, eğer bu dizinler ilk etapta manpathmevcut değilse, bunların hiçbirini çıkarmaz.

Sorular

  • Man sayfalarını kullanıcının $ HOME dizinine nereye yüklemem gerektiğini öğrenmenin taşınabilir bir yolu var mı?
  • Değilse, hangisi tercih edilmelidir?

Yanıtlar:


13

Man sayfalarını bu dizine koyabilirsiniz:

$HOME/.local/share/man

Doğrudan erişim

Ve sonra bunlara doğrudan kullanarak erişebilirsiniz man:

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

$ MANPATH

$MANPATHKomut ile ne olduğunu kontrol edebilir manpathveya ortam değişkenini yankılayabilirsiniz $MANPATH.

Örnekler

$ 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

MANPATH'a geçici olarak bir şeyler ekleyebilirsiniz:

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

Bunu kalıcı yapmak istiyorsanız, /etc/profile.d/dizininize myman.bashyukarıdaki MANPATH=satırın bulunduğu bir dosya ekleyin . Bu herkes için geniş bir sistem alacak. Eğer sadece sizin için olmasını istiyorsanız, o zaman senin eklemek $HOME/.bash_profileveya $HOME/.bashrc.


2
Belirlenmeyle manpathilgili uyarıları bastırmak MANPATHiçin -qseçeneği geçebilirsiniz .
Joseph R.

2
Evet, mannereye bakacağımı söyleyebileceğimi biliyorum . Ben genel bir kurulum için genel, taşınabilir bir yol manarıyorum (yani: nerede standart bir yapılandırma arıyor)
Romuald Brunet

Bir yapın echo $MANPATHve bunun ne olduğunu görün. Bunlar aramaya başlamak için iyi yerlerdir veya manpathcevabımda gösterdiğim gibi komutu kullanmak .
slm

0

Açıklama ile cevap

Windows 7'de Cygwin kullanıyorum.

echo $MANPATH

Hiçbir şey almıyorum. İşte yeni mansayfaların nereye yerleştirileceğini bulmak için taşınabilir yolum .

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

(Bu çılgın komuta ilişkin bir not bu cevabın altındadır.)

Sadece yerini alabilir /ile ~. Başka bir olasılık, aşağıdaki Başka not bölümünün altındadır.

Makinemde findkomut geri döndü:

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

Benim için bu, iki olasılık olduğu anlamına geliyordu: /share/manve /usr/man.

Kullanmayı seçtim /usr/man, istemezdim, ama biraz daha araştırmam gerekiyordu.

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

Böylece, çalışma dizinimin manbir doc/alt dizinindeki yeni dosyaları bulduğumda,

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

Şimdi "el kitabım"

$ man my_new_executable

Eğer muhtemel bir aday görmüyorsanız, bu bölümü kaldırabilir veya örneğin, bunu değiştirmek -maxdepth 3veya 4veya 5veya ancak derin ihtiyacınız olanı bulmak için sürer. Öyle yaptığım zaman 3, ben diğer iki adayı buldum, /var/cache/manve usr/share/man, ama onlarla karışıklık vermedi bu yüzden zaten bir çalışma çözümünü bulmuştu.


Başka bir not

Ben inanıyorum /share/man/man1ya /var/cache/mansiz istendiği gibi, kök olmayan kullanıcılar tarafından kullanılabilir olacaktır. Yanlışım varsa lütfen düzelt.


Altta vaat edilen not

Ben kullanılan Not -maxdepth 2ile seçeneği findben düşündüm, çünkü mandizin dosya sistemi kökünün iki dizinleri içinde olacaktır ve bir şekilde alt dize vardı çok fazla gereksiz dizinleri almak istemiyordu manolarak yaptığımız /lib/gnome-coadamıder .

Etrafında ekstra şeyler , erişiminiz yoksa veya findherhangi bir Permission deniedhatayı bastırmak için var . İşte neler olduğuna dair harika bir açıklama. ("Gniourf_gniourf" ile başlayan satırı bulun.)susudo


0

Yüklemek için ilgili configuresetler ile derlediğim birkaç uygulama yükledim ${HOME}/usr/local.

Şimdi dizinlerim olduğunu görüyorum

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

man sayfalarını ile gnuplot.1, gnuplot-ja.1, python3.1, python3.5.1, libpng.3, libpngpf.3, zlib.3, png.5, yerel olarak yüklü uygulamalar için oldukça standart bir konumdur (benim önek verilen) sanırım bu yüzden.

Bu durumda, yerel mandizini manuel olarak seçmek zorunda olduğu durumlar için aday bir konumdur .

Tabii ki, mansayfalar için rastgele yollar eklenebilir (ve belirtilen her zamanki durumda bile yapılmalıdır)

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

(bkz bu ).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.