मुझे उपयोगकर्ता निर्देशिका में मैनुअल पेज कहां स्थापित करना चाहिए?


13

मैं एक छोटी सी पर्ल उपयोगिता के लिए मेकफाइल बनाने की कोशिश कर रहा हूं जिसे मैंने लिखा था, और मैं makeएक गैर-रूट उपयोगकर्ता के रूप में चलने पर अपने मैन पेज को स्थापित करने का तरीका खोजने के लिए संघर्ष कर रहा हूं ।

मैं वर्तमान manpathमें $HOMEनिर्देशिका में पहला रास्ता खोजने के लिए आउटपुट पार्स कर रहा हूं ... और यह लगभग ठीक है।

मुझे मिले रास्ते ~/manऔर हैं~/share/man

एकमात्र समस्या यह है कि यदि उन निर्देशिकाओं में पहली जगह manpathनहीं है , तो उनमें से कोई भी आउटपुट नहीं करता है।

प्रशन

  • क्या यह पता लगाने का एक पोर्टेबल तरीका है कि मुझे उपयोगकर्ता की $ HOME निर्देशिका में मैन पेज कहां स्थापित करना चाहिए?
  • यदि नहीं, तो उनमें से किसे प्राथमिकता दी जानी चाहिए?

जवाबों:


13

आप इस निर्देशिका में मैन पेज डाल सकते हैं:

$HOME/.local/share/man

सीधे पहुंच

और फिर आप उन्हें सीधे उपयोग कर सकते हैं man:

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

$ MANPATH

आप जांच सकते हैं $MANPATHकि कमांड के साथ क्या है manpath, या पर्यावरण चर को प्रतिध्वनित करें $MANPATH

उदाहरण

$ 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 में चीजें जोड़ सकते हैं:

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

यदि आप इसे स्थायी बनाना चाहते हैं, तो अपनी /etc/profile.d/निर्देशिका में एक फ़ाइल जोड़ें myman.bash, जिसमें ऊपर दी गई MANPATH=पंक्ति है। यह सभी के लिए उठाया हुआ सिस्टम चौड़ा मिलेगा। यदि आप चाहते हैं कि यह आपके लिए ही हो, तो इसे अपने में जोड़ें $HOME/.bash_profileया $HOME/.bashrc


2
सेट होने के manpathबारे में चेतावनी को दबाने के लिए MANPATH, आप -qविकल्प को पारित कर सकते हैं ।
जोसफ आर।

2
हां, मुझे पता है कि मैं बता सकता हूं कि manकहां देखना है। मैं जेनेरिक इंस्टॉलेशन के लिए एक सामान्य, पोर्टेबल तरीके की तलाश कर रहा हूं (यानी: जहां manएक मानक विन्यास देख रहा हूं )
रोमुआल्ड ब्रूनेट

एक करो echo $MANPATHऔर देखो कि क्या दिखाता है। वे अच्छे स्थान हैं जो manpathमेरे उत्तर में दिखाए गए अनुसार शुरू करने या देखने के लिए उपयोग करते हैं ।
SLM

0

हताशा के साथ जवाब दें

मैं विंडोज 7 पर साइगविन चला रहा हूं। जब मैं कोशिश करता हूं

echo $MANPATH

मुझे कुछ नहीं मिलता। यहाँ नए manपृष्ठ लगाने के लिए खोजने का मेरा पोर्टेबल तरीका है ।

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

(उस पागल आदेश पर एक नोट इस उत्तर के निचले भाग पर है।)

आप बस के /साथ बदल सकते हैं ~नीचे एक और नोट अनुभाग के तहत एक और संभावना है ।

मेरी मशीन पर, findकमांड वापस आ गई:

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

मेरे लिए, इसका मतलब था कि दो संभावनाएँ थीं: /share/manऔर /usr/man

मैंने उपयोग करने के लिए चुना /usr/man, जिसे आप नहीं करेंगे, लेकिन मुझे कुछ और खोज करने की आवश्यकता है।

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

इसलिए, जहां मेरे पास अपनी वर्किंग डायरेक्टरी की उप-निर्देशिका manमें नई फाइलें थीं doc/, मैंने उपयोग किया

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

अब, मैं टाइप करके अपने "मैनुअल" पर पहुँच सकता हूँ

$ man my_new_executable

आप एक संभावित उम्मीदवार नहीं दिख रहा है, तो आप इस भाग को हटा सकते हैं या इसे करने के लिए बदलने के लिए, उदाहरण के लिए -maxdepth 3, या 4, या 5, या फिर भी गहरे यह तुम क्या जरूरत है खोजने के लिए ले जाता है। जब मैंने ऐसा किया 3, तो मुझे दो अन्य उम्मीदवार मिले, /var/cache/manऔर usr/share/man, लेकिन मुझे पहले से ही एक काम करने वाला समाधान मिल गया था, इसलिए मैंने उनके साथ कोई गड़बड़ नहीं की।


एक और नोट

मेरा मानना ​​है कि /share/man/man1या /var/cache/manगैर-रूट उपयोगकर्ताओं के लिए उपलब्ध होगा, जैसा आपने अनुरोध किया था। यदि मैं गलत हूं तो मुझे बताएं।


तल पर वादा किया गया नोट

ध्यान दें कि मैंने -maxdepth 2विकल्प का उपयोग किया था find, क्योंकि मुझे लगा कि manनिर्देशिका फाइल सिस्टम रूट के दो निर्देशिकाओं के भीतर होगी, और मैं बहुत अधिक बाहरी निर्देशिकाओं को प्राप्त नहीं करना चाहता था जो किसी भी तरह से सबस्ट्रिंग थे man, जैसा कि /lib/gnome-coआदमी ने किया थाder

चारों ओर अतिरिक्त सामान findकिसी भी दबाने के लिए नहीं है Permission deniedके मामले में आप के लिए पहुँच नहीं है त्रुटियों suया sudoयहाँ क्या हो रहा है की एक महान विवरण है। ("Gniourf_gniourf" से शुरू होने वाली लाइन को देखें।)


0

मैंने कुछ एप्लिकेशन इंस्टॉल किए हैं जिन्हें मैंने संकलित किया है, जिसमें configureस्थापित करने के लिए संबंधित सेट है ${HOME}/usr/local

मुझे अब लगता है कि मेरे पास निर्देशिकाएं हैं

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

manpages साथ gnuplot.1, gnuplot-ja.1, python3.1, python3.5.1, libpng.3, libpngpf.3, zlib.3, png.5, तो मैं (मेरे उपसर्ग दिया गया है) लगता है कि स्थानीय स्तर पर इंस्टॉल किए गए एप्लिकेशन के लिए एक सुंदर मानक स्थान है।

यह उन मामलों के लिए एक उम्मीदवार स्थान है जहां किसी को मैन्युअल रूप से स्थानीय manनिर्देशिका को चुनना पड़ता है ।

बेशक, एक मनमाना पथ जोड़ सकते हैं (और यहां तक कि हमेशा की तरह सिर्फ मामले का उल्लेख में यह करना चाहिए) के लिए manके साथ पृष्ठों

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

( यह देखें )।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.