Làm cách nào để tự cài đặt tệp trang man?


44

Làm cách nào để cài đặt một tập tin trang man toàn hệ thống?

Ví dụ: nếu tôi có tệp man page examplecommand.1, làm cách nào để cài đặt nó để tôi chỉ cần gõ man examplecommandđể xem?

Câu trả lời:


53
  1. Đầu tiên, tìm ra phần người đàn ông của bạn thuộc về. Nếu đó là một lệnh, nó có thể thuộc về phần 1. Bạn có thể đọc manpage cho manlệnhBiểu tượng trang để xem mô tả về các phần khác nhau và các số tương ứng của chúng.

  2. Sao chép trang người đàn ông của bạn vào /usr/local/share/man/man1/(thay đổi 1số phần của bạn nếu cần). Bạn cũng có thể cài đặt nó /usr/share/man/man1/, nhưng cách tốt nhất là sử dụng localthư mục cho các tệp được cài đặt mà không cần sử dụng trình quản lý gói APT:

    sudo cp examplecommand.1 /usr/local/share/man/man1/
    
  3. Chạy mandblệnh. Điều này sẽ cập nhật mancơ sở dữ liệu nội bộ:

    sudo mandb
    
  4. Đó là nó! Bạn sẽ có thể xem trang người đàn ông bằng cách chạy:

    man 1 examplecommand
    

Người giới thiệu:


1
Có một lựa chọn hoặc thực hành được đề xuất khi bạn muốn tránh sử dụng là sudogì?
Jorge Bucaran 7/12/2015

@JorgeBucaran Xem câu trả lời bên dưới về cách đặt MANPATH, cho phép bạn đặt các trang thủ công vào chỗ trống bạn có thể viết vào, ví dụ $ HOME / lib / share / man hoặc ở đâu đó như thế
nealmcb

Tôi nghĩ rằng bạn có thể lưu trữ các trang người đàn ông bên dưới /usr/local/mancũng như được đề xuất trong ánh xạ PATH sang MANPATH trong /etc/manpath.config.
jarno

10

Nếu bạn chỉ cần cài đặt trang man cục bộ :

Nếu MANPATHlà unset, hoặc bao gồm một thành phần rỗng (tức là bắt đầu với :, kết thúc với :, hoặc chứa ::), sau đó <path>/share/mansẽ tự động được tìm kiếm các trang man bất cứ khi nào <path>/binlà một phần của PATH, cho tất cả các giá trị của<path> .

Điều này cung cấp một cách rất đơn giản để thêm các trang man cho phần mềm được cài đặt cục bộ. Có một số chi tiết trong man manpath/etc/manpath.config, nhưng tôi không thấy bất kỳ đề cập nào về ánh xạ chung từ <path>/binđến <path>/share/man.


Tôi nối MANPATH=<local path to the man pages>:$MANPATHđể bạn ${HOME}/.bashrc(phiên không đăng nhập) hoặc ${HOME}/.profile(phiên đăng nhập). Trong trường hợp của tôi, tôi đã thiết lập một thư mục cục bộ cho các trang man ${HOME}/share/man/, trong đó bắt chước hệ thống tệp Linux cổ điển. Tôi đã tạo ${HOME}/share/man/man.1, sau đó chứa một liên kết tượng trưng đến vị trí tới tệp examplecommand.1bất cứ nơi nào trình cài đặt chương trình đã đặt nó (cấu hình 'tiền tố'). Ra mắt man examplecommandtìm thấy các trang người đàn ông tại điểm. Theo cách này, cài đặt là cục bộ, mặc dù, không phải toàn hệ thống.
XavierStuvw

Đây là một nhận xét rất thú vị và nó cung cấp một đường dẫn cho mọi người chỉ cần thiết lập PATH của họ (mà họ đã mong đợi) cho các nhị phân địa phương. Tuy nhiên, tôi không nghĩ rằng ánh xạ chung <path>/bin-> <path>/share/mantồn tại. Khi thực hiện strace (1) trên manvới MANPATH=:/nonexistingdir, tôi thấy những điều sau đây: - <path>/bin-> <path>/man Đây là trên một hệ thống Debain Buster.
Aktau

1

Câu trả lời của @ ntc2 ở trên là câu hỏi mà mọi người nên xem qua. Tôi muốn thêm một số bình luận bổ sung không phù hợp trong phần bình luận:

Cách tiếp cận của @ ntc2 cung cấp một đường dẫn cho những người chỉ cần thiết lập PATH của họ (mà họ đã mong đợi) cho các nhị phân cục bộ.

Tuy nhiên, tôi không nghĩ ánh xạ chung <path>/bin-> <path>/share/mantồn tại cho tất cả các đường dẫn trong $PATH. Có vẻ như ánh xạ cụ thể này được tránh khi có $PATHcâu hỏi $HOME/bin. Khi thực hiện strace (1) trên manvới MANPATH=:/nonexistingdir, tôi thấy các tra cứu sau:

Đối với bất kỳ yếu tố nào trong $PATHđó không phải là$HOME/bin

  • <path>/bin -> <path>/man
  • <path>/bin -> <path>/bin/man
  • <path>/bin -> <path>/share/man
  • <path>/bin -> <path>/bin/share/man

Dành cho $HOME/bin

  • $HOME/bin -> $HOME/man

Tôi không biết tại sao nó bỏ qua những người khác. Đây là trên hệ thống Debian Buster. Nó có thể khác nhau trên các hệ thống khác.

Đối với tôi, điều này có nghĩa là con đường an toàn nhất để cài đặt trang con người là <path>/man, vì nó được đảm bảo sẽ được tìm thấy nếu nó nằm trong $PATH.

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.