概述

gentoo下,装了 app-i18n/man-pages-zh_CN ,但是man
ls,就是一堆地乱码,虽说大家都推荐看英文的man,但对于我这种文盲来说,有个中文的man页,还是有必要的,即使做为辅助也好。
在gentoo论坛里,其实很久以前就有人提过此问题,虽然有解决办法,但是比较麻烦,而且有点小郁闷的是,居然过了这么久,此问题的包还没有正式进入gentoo的源。
从上面那帖子里,可以知道,问题的原因就是man用的 groff/nroff
不支持utf8.解决办法也就是换一个nroff而已。照着做估计也没问题,但是后来发现gentoo-china-overlay里面其实是有groff-utf8的。所以就找了个更简单的办法:
我不想用layman把整个overlay都下载下来,所以用了如下命令:

cd /usr/local/portage 之前我就建过这个目录,没的话,参考这里
mkdir -pv app-text/groff-utf8
wget “http://gentoo-china-overlay.googlecode.com/svn/trunk/app-text/groff-utf8/groff-utf8-0.ebuild”
ebuild groff-utf8-0.ebuild manifest
emerge groff-utf8 -av

完了之后,按提示vim /etc/man.conf将里面的 NROFF 那行改为NROFF /usr/bin/groff-utf8 -Tutf8 -c -mandoc,就完成了。

相关链接

解决man乱码问题
http://www.oceanboo.cn/read.php/272.htm
http://li2z.cn/2008/09/19/gentoo_man/
见上面的二个帖子,我最终的解决方法如下
安装groff_utf8

emerge groff_utf8

修改/etc/man.conf里NROFF行为

NROFF       /usr/bin/groff-utf8 -Tutf8 -c -mandoc

再在.bashrc里增加

alias man="LANG="en_US.UTF-8" man"
alias manzh="LANG="zh_CN.UTF-8" /usr/bin/man"

这样一般情况下看的就是英文,需要看中文的时候就使用manzh命令

我的操作系统:Gentoo 2.6.27-r7
情况是这样的:我在/etc/make.conf中加了LINGUAS="zh_CN en"在USE里加了unicode,然后在我一次升级系统后,man就变成乱码了……
我发现是系统为我emerge了一个叫做app-i18n/man-pages-zh_CN的包造成的。
在网上查了几天都没结果,后来看了gentoo的本地化手册,说是要在/etc/man.conf里该一行数据,把NROFF /usr/bin/nroff -Tascii -c -mandoc改成NROFF
/usr/bin/nroff -mandoc -c我改了,结果还是没效果,也就没管了,今天我在终端输入man page看到结果提示:Cannot open the message catalog “man” for locale

"zh_CN.UTF-8"
(NLSPATH="")

在网上搜了下,有人说是locale没设置正确,我又输入locale -a看了下,结果如下:

C
en_US
en_US.iso88591
en_US.utf8
POSIX
zh_CN.gb18030
zh_CN.gb2312
zh_CN.gbk
zh_CN.utf8

完全没错啊……
后来不知道在哪里看到一篇帖子,说是groff的问题。
于是按照它的提示,我先emerge了一个叫做groff-utf8的包,然后修改/usr/bin/nroff文件。
这是个shell脚本,用nano打开就行了,在最后几行里找到PATH="$GROFF_RUNTIME$PATH" groff -mtty-char $T $opts ${1+"$@"}
把其中的groff改为groff-utf8就行了!
如果你还不行,提示:/usr/bin/groff-utf8: unsupported device ‘ascii’
那就是你的/etc/man.conf没有修改,把NROFF /usr/bin/nroff -Tascii -c -mandoc改成NROFF /usr/bin/nroff -mandoc -c。再看看应该就好了。有中文的man文档就会优先选择中文的,如果没有中文的man文档,系统会为我们选择英文的。