我应该在用户目录的哪里安装手册页?


13

我试图为我写的一个小的Perl实用程序创建一个Makefile,并且我正在努力寻找一种方法来找到以非root用户make身份运行我的手册页的位置。

我目前正在解析输出,manpath以查找$HOME目录中的第一个路径……并且它几乎可以正常工作。

我找到的路径是~/man~/share/man

唯一的问题是,如果这些目录最初不存在,manpath则不会输出任何目录。

问题

  • 有没有一种便携式的方法来找出我应该在用户的$ HOME目录中安装手册页的位置?
  • 如果不是,应该选择其中之一?

Answers:


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选项。
Joseph R.

2
是的,我知道我可以告诉man哪里去。我正在寻找用于通用安装的通用,便携式方法(即:在哪里man寻找标准配置)
Romuald Brunet

做一个echo $MANPATH,看看那显示。这些是开始查找或使用manpath我在答案中显示的命令的好地方。
slm

0

坚定地回答

我在Windows 7上运行Cygwin。

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将按您的要求提供给非root用户。请纠正我,如果我错了。


底部的承诺票据

请注意,我将该-maxdepth 2选项与一起使用find,因为我认为该man目录将位于文件系统根目录的两个目录中,并且我不想像manman那样获得太多以某种方式具有子字符串的无关目录。/lib/gnome-coder

如果您无法访问或,find则周围的多余内容可以消除任何Permission denied错误。是对正在发生的事情的很好描述。(查找以“ gniourf_gniourf”开头的行。)susudo


0

我已经安装了一些我编译的应用程序,并分别configure安装了${HOME}/usr/local

我现在发现我有目录

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

与联机帮助gnuplot.1gnuplot-ja.1python3.1python3.5.1libpng.3libpngpf.3zlib.3png.5,所以我想(给我的前缀)它是本地安装的应用程序一个漂亮的标准位置。

在必须手动选择本地man目录的情况下,它是候选位置。

当然,您可以为man具有以下内容的页面添加任意路径(即使在上述通常情况下也应该这样做)

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

(请参阅)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.