Tôi nên cài đặt các trang hướng dẫn trong thư mục người dùng ở đâu?


13

Tôi đang cố gắng tạo Makefile cho một tiện ích Perl nhỏ mà tôi đã viết, và tôi đang loay hoay tìm cách cài đặt trang man của mình khi makeđược chạy với tư cách là người dùng không root .

Tôi hiện đang phân tích cú pháp đầu ra manpathđể tìm ra đường dẫn đầu tiên trong $HOMEthư mục Cấm và nó gần như hoạt động tốt.

Con đường tôi đã tìm thấy ~/man~/share/man

Vấn đề duy nhất là nếu những thư mục đó không tồn tại ở nơi đầu tiên, manpaththì không xuất ra bất kỳ thư mục nào.

Câu hỏi

  • Có cách nào di động để tìm ra nơi tôi nên cài đặt các trang man trong thư mục $ HOME của người dùng không?
  • Nếu không, một trong số họ nên được ưu tiên?

Câu trả lời:


13

Bạn có thể đặt các trang man trong thư mục này:

$HOME/.local/share/man

Truy cập trực tiếp

Và sau đó bạn có thể truy cập chúng trực tiếp bằng cách sử dụng man:

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

$ MANPATH

Bạn có thể kiểm tra xem đó là gì $MANPATHvới lệnh manpathhoặc lặp lại biến môi trường $MANPATH.

Ví dụ

$ 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

Bạn có thể thêm mọi thứ vào MANPATH tạm thời:

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

Nếu bạn muốn làm điều này vĩnh viễn thì hãy thêm một tệp trong /etc/profile.d/thư mục của bạn được gọi myman.bashvới MANPATH=dòng trên trong đó. Điều này sẽ được chọn hệ thống rộng cho tất cả mọi người. Nếu bạn muốn nó chỉ dành cho bạn, sau đó thêm nó vào $HOME/.bash_profilehoặc $HOME/.bashrc.


2
Để loại bỏ manpathcác cảnh báo về việc MANPATHđược đặt, bạn có thể vượt qua -qtùy chọn.
Joseph R.

2
Vâng, tôi biết rằng tôi có thể nói đến mannơi để tìm. Tôi đang tìm kiếm một cách chung, di động cho một cài đặt chung (ví dụ: nơi đang mantìm kiếm một cấu hình tiêu chuẩn)
Romuald Brunet

Làm một echo $MANPATHvà xem những gì cho thấy. Đó là những nơi tốt để bắt đầu tìm kiếm, hoặc sử dụng manpathlệnh như tôi đã trình bày trong câu trả lời của mình.
slm

0

Trả lời với sự tuyệt vọng

Tôi đang chạy Cygwin trên Windows 7. Khi tôi thử

echo $MANPATH

Tôi không có gì cả. Đây là cách di động của tôi để tìm nơi đặt các mantrang mới .

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

(Một lưu ý về lệnh điên đó nằm ở cuối câu trả lời này.)

Bạn chỉ có thể thay thế /bằng ~. Một khả năng khác là dưới phần Ghi chú khác bên dưới.

Trên máy của tôi, findlệnh trả về:

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

Đối với tôi, điều đó có nghĩa là có hai khả năng: /share/man/usr/man.

Tôi đã chọn để sử dụng /usr/man, mà bạn sẽ không, nhưng tôi cần phải khám phá thêm.

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

Vì vậy, nơi tôi có các mantệp mới trong một doc/thư mục con của thư mục làm việc của mình, tôi đã sử dụng

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

Bây giờ, tôi có thể vào "hướng dẫn" của mình bằng cách gõ

$ man my_new_executable

Nếu bạn không thấy một ứng cử viên có khả năng, bạn có thể xóa phần này hoặc thay đổi nó, ví dụ -maxdepth 3, hoặc 4, hoặc 5, tuy nhiên, cần phải tìm ra thứ bạn cần. Khi tôi làm như vậy với 3, tôi đã tìm thấy hai ứng cử viên khác, /var/cache/manusr/share/man, nhưng tôi đã tìm thấy một giải pháp làm việc, vì vậy tôi đã không gây rối với họ.


Một lưu ý khác

Tôi tin rằng /share/man/man1hoặc /var/cache/mansẽ có sẵn cho người dùng không root, như bạn đã yêu cầu. Xin vui lòng, sửa chữa cho tôi nếu tôi sai.


Ghi chú hứa ở phía dưới

Lưu ý rằng tôi đã sử dụng -maxdepth 2tùy chọn này find, vì tôi đoán rằng manthư mục sẽ nằm trong hai thư mục gốc của hệ thống tệp và tôi không muốn nhận quá nhiều thư mục không liên quan mà bằng cách nào đó có chuỗi con man, cũng như /lib/gnome-cocon ngườider .

Các công cụ bổ sung xung quanh findlà có để khắc phục bất kỳ Permission deniedlỗi nào trong trường hợp bạn không có quyền truy cập suhoặc sudo. Dưới đây là một mô tả tuyệt vời về những gì đang xảy ra. (Tìm dòng bắt đầu bằng "gniourf_gniourf".)


0

Tôi đã cài đặt một vài ứng dụng mà tôi đã biên dịch, với bộ configures tương ứng để cài đặt ${HOME}/usr/local.

Tôi thấy bây giờ tôi có thư mục

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

với trang man gnuplot.1, gnuplot-ja.1, python3.1, python3.5.1, libpng.3, libpngpf.3, zlib.3, png.5, vì vậy tôi đoán (cho tiền tố của tôi) nó là một vị trí khá tiêu chuẩn cho các ứng dụng được cài đặt tại địa phương.

Sau đó, nó là một vị trí ứng cử viên cho các trường hợp người ta phải chọn thủ công manthư mục địa phương .

Tất nhiên, người ta có thể thêm các đường dẫn tùy ý (và nên thực hiện ngay cả trong trường hợp chỉ được đề cập thông thường) cho mancác trang có

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

(xem cái này ).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.