ฉันควรติดตั้งหน้าคู่มือในไดเรกทอรีผู้ใช้ที่ไหน?


13

ฉันพยายามสร้าง Makefile สำหรับยูทิลิตี้ Perl ขนาดเล็กที่ฉันเขียนและฉันพยายามหาวิธีที่จะติดตั้ง man page ของฉันเมื่อmakeเรียกใช้ในฐานะผู้ใช้ที่ไม่ใช่รู

ขณะนี้ฉันกำลังแยกวิเคราะห์ผลลัพธ์ของmanpathการค้นหาเส้นทางแรกใน$HOMEไดเรกทอรี ... และมันเกือบจะทำงานได้ดี

เส้นทางที่ฉันพบคือ~/manและ~/share/man

ปัญหาเดียวคือถ้าไดเรกทอรีเหล่านั้นไม่อยู่ในสถานที่แรกmanpathไม่ส่งออกใด ๆ ของพวกเขา

คำถาม

  • มีวิธีพกพาเพื่อค้นหาตำแหน่งที่ฉันควรติดตั้ง man pages ในไดเร็กทอรี $ HOME ของผู้ใช้หรือไม่?
  • ถ้าไม่ควรเลือกอันใดอันหนึ่ง

คำตอบ:


13

คุณสามารถใส่ man pages ในไดเร็กทอรีนี้:

$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มองในการกำหนดค่ามาตรฐาน)
Romuald Brunet

ทำecho $MANPATHและดูสิ่งที่แสดง นั่นเป็นจุดเริ่มต้นที่ดีในการมองหรือใช้manpathคำสั่งตามที่ฉันแสดงในคำตอบของฉัน
slm

0

ตอบด้วย desciption

ฉันใช้ Cygwin บน Windows 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-coder

สิ่งที่พิเศษรอบfindจะมีการปราบปรามใด ๆPermission deniedข้อผิดพลาดในกรณีที่คุณไม่สามารถเข้าถึงหรือsu นี่คือคำอธิบายที่ดีของสิ่งที่เกิดขึ้น (มองหาบรรทัดที่ขึ้นต้นด้วย "gniourf_gniourf")sudo


0

ผมได้ติดตั้งไม่กี่ปพลิเคชันที่ผมรวบรวมกับแต่ละconfigures ${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}}"

(ดูสิ่งนี้ )

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.