我应该将手册页安装在用户目录中的哪个位置?

我应该将手册页安装在用户目录中的哪个位置?

我正在尝试为我编写的一个小型 Perl 实用程序创建一个 Makefile,并且我正在努力寻找一种方法来找到在make作为运行时安装我的手册页的位置非根用户。

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

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

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

问题

  • 有没有一种可移植的方法来找出我应该在用户的 $HOME 目录中安装手册页的位置?
  • 如果不是,应该优先选择哪一个?

答案1

您可以将手册页放在此目录中:

$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

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

我发现现在我有目录

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

带有手册页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}}"

(参见Appending/Prepending 的防弹方式用于处理):中的冒号PATH

答案3

回答并附上描述

我在 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目录将位于文件系统根目录的两个目录内,并且我不想获得太多以某种方式具有子字符串的无关目录man,就像那样/lib/gnome-co男人der

周围的额外内容是为了在您无权访问或 的情况下find抑制任何错误。Permission deniedsusudo这里是对正在发生的事情的一个很好的描述。 (查找以“gniourf_gniourf”开头的行。)

相关内容