LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1611|回复: 15

大家有没注意过,现在还不能中文的man,是 less 的问题。

[复制链接]
发表于 2009-6-9 14:46:57 | 显示全部楼层 |阅读模式
Gentoo 系统的 locale 是 zh_CN.UTF-8,已经 emerge 中文的 man 了,但用 man 出来是乱码。所以就跑去 /usr/share/man/zh_CN.UTF-8 把其中一个 man 包解压,用 cat 或其它工具查看解压后的 man 文件都能显示中文,而用 less 出来的中文却是乱码。但用 less 查看非 man 格式,编码为 UTF-8 的中文文件却能正常显示,这样说明 less 不能很好支持现在的 man 文件混合中文格式。
发表于 2009-6-9 16:19:40 | 显示全部楼层
以下内容摘自bones7465的博客:
http://bones7456.blog.ubuntu.org.cn/2008/09/19/gentoo_man/

  1. 解决了gentoo的man乱码问题

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

  6. cd /usr/local/portage 之前我就建过这个目录,没的话,参考这里
  7. mkdir -pv app-text/groff-utf8
  8. wget “http://gentoo-china-overlay.googlecode.com/svn/trunk/app-text/groff-utf8/groff-utf8-0.ebuild”
  9. ebuild groff-utf8-0.ebuild manifest
  10. emerge groff-utf8 -av
  11. 完了之后,按提示
  12. vim /etc/man.conf 将里面的 NROFF 那行改为 NROFF /usr/bin/groff-utf8 -Tutf8 -c -mandoc

  13. 完成了。
复制代码


其实论坛已有相关帖子:
http://www.linuxsir.cn/bbs/thread317843.html

建议发问前看看搜索看看前人有无留下可参考文章什么的
回复 支持 反对

使用道具 举报

发表于 2009-6-9 16:31:19 | 显示全部楼层
Post by YaoM
其实论坛已有相关帖子:
http://www.linuxsir.cn/bbs/thread317843.html

建议发问前看看搜索看看前人有无留下可参考文章什么的  
也许楼主是想从另一个方向来讨论和解决这个问题,不代表楼主没找到groff-utf8的方法。
用groff-utf8的方式我个人认为不怎么好。之前的groff-1.18版本是没中文问题的,但这个版本现在都已经从portage撤下去了。于是告诉自己,好好看E文吧。

ps,YaoM,姚明?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-6-9 19:28:42 | 显示全部楼层
其实我还是新手,楼上的说得对,groff 是没放在 portage 上,不喜欢用。并且2楼你所说的 groff-utf8,我提问前都不知找了多少资料了。
回复 支持 反对

使用道具 举报

发表于 2009-6-9 21:52:09 | 显示全部楼层
Post by zhou3345;1995861
也许楼主是想从另一个方向来讨论和解决这个问题,不代表楼主没找到groff-utf8的方法。
用groff-utf8的方式我个人认为不怎么好。之前的groff-1.18版本是没中文问题的,但这个版本现在都已经从portage撤下去了。于是告诉自己,好好看E文吧。

ps,YaoM,姚明?


可能吧 我没有别的意思, 只是以为lz没有找到好的解决方法于是给他提供参考, 如果他已经找到并希望从另一个方向解决问题的话那就更好了

to ps:YaoM for 姚明
回复 支持 反对

使用道具 举报

发表于 2009-6-9 21:53:33 | 显示全部楼层
Post by kelvin_tmq;1995940
其实我还是新手,楼上的说得对,groff 是没放在 portage 上,不喜欢用。并且2楼你所说的 groff-utf8,我提问前都不知找了多少资料了。


好吧, 我错了:》
回复 支持 反对

使用道具 举报

发表于 2009-6-9 23:13:01 | 显示全部楼层
Post by zhou3345;1995861
也许楼主是想从另一个方向来讨论和解决这个问题,不代表楼主没找到groff-utf8的方法。
用groff-utf8的方式我个人认为不怎么好。之前的groff-1.18版本是没中文问题的,但这个版本现在都已经从portage撤下去了。于是告诉自己,好好看E文吧。

ps,YaoM,姚明?


用groff-utf8的方式我个人认为不怎么好。 这个为什么不好呢?
回复 支持 反对

使用道具 举报

发表于 2009-6-10 07:56:48 | 显示全部楼层
Post by health_kxy;1995990
用groff-utf8的方式我个人认为不怎么好。 这个为什么不好呢?


个人感觉,没有实证。

我收回这句话,以免误导他人。
回复 支持 反对

使用道具 举报

发表于 2009-6-10 14:56:41 | 显示全部楼层
  1. lee@lab ~ $ locale
  2. LANG=en_US.UTF-8
  3. LC_CTYPE=zh_CN.UTF-8
  4. LC_NUMERIC="en_US.UTF-8"
  5. LC_TIME="en_US.UTF-8"
  6. LC_COLLATE=zh_CN.UTF-8
  7. LC_MONETARY="en_US.UTF-8"
  8. LC_MESSAGES="en_US.UTF-8"
  9. LC_PAPER="en_US.UTF-8"
  10. LC_NAME="en_US.UTF-8"
  11. LC_ADDRESS="en_US.UTF-8"
  12. LC_TELEPHONE="en_US.UTF-8"
  13. LC_MEASUREMENT="en_US.UTF-8"
  14. LC_IDENTIFICATION="en_US.UTF-8"
  15. LC_ALL=
  16. lee@lab ~ $ alias  |grep cman
  17. alias cman='man -M /usr/share/man/zh_CN.UTF-8/ '
  18. lee@lab ~ $ eix groff-utf8
  19. [i] app-text/groff-utf8 [1]
  20.      Available versions:  0!m
  21.      Installed versions:  0!m(02:42:01 AM 03/27/2009)
  22.      Homepage:            http://www.haible.de/bruno/packages-groff-utf8.html
  23.      Description:         GNU groff wrapper allowing UTF-8 input
  24. [1] "china" /usr/local/portage/layman/gentoo-china
  25. lee@lab ~ $
复制代码

一、任何utf8 locale都是可以看中文man
二、设置一下,您可以在任何utf8 locale下,随意看中文或英文man
二、看中文man,使用groff-utf8+设置/etc/man.conf最简单方便

安装
app-i18n/man-pages-zh_CN

(从china-overlay)安装
app-text/groff-utf8

设置man
主要是改/etc/man.conf,把groff-utf8替换掉troff/nroff
  1. lee@lab ~ $ cat /etc/man.conf | grep -v '#' | grep utf8
  2. TROFF           /usr/bin/groff-utf8 -Tutf8 -mandoc
  3. NROFF           /usr/bin/groff-utf8 -Tutf8 -mandoc
复制代码

设置~/.bashrc
把下面的追加进去
  1. alias cman='man -M /usr/share/man/zh_CN.UTF-8/ '                 
  2. alias ugroff='groff-utf8 -Tutf8 -man '   
复制代码

重启X


现在,
man printf 看printf的英文man
cman printf 看printf的中文man
回复 支持 反对

使用道具 举报

发表于 2009-6-10 15:00:38 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表