Linux中文化之将RedHat7.0的汉化进行到底

发表于:2007-07-04来源:作者:点击数: 标签:
作者:Bigluo 一、机器配置 开始之前,我必须先要自报一下爱机的配置:PIII 450 + 128M Ram + 20G HardDisk + Dimond V770 + Dimond S90。整个配置编译过程足足花了我24个小时,其中编译kernel,整个QT+KDE,Unicon Source花足了起码22个小时。所以,各

  作者:Bigluo
  
  一、机器配置  
    开始之前,我必须先要自报一下爱机的配置:PIII 450 + 128M Ram + 20G
  HardDisk + Dimond V770 + Dimond S90。整个配置编译过程足足花了我24个小时,其中编译kernel,整个QT+KDE,Unicon Source花足了起码22个小时。所以,各位fans的机器如果还低于这个配置的话,应该想象一下编译这些sources所花的时间了。
  二、关于这篇文章
   我是在自己的机器上成功的汉化了RedHat,但我并不保证凡是看完这篇文章的朋友都能。本文只是一个参考。本文所需要的软件包和补丁,你可以到我的主页http://www.linuxorb.net下载。
  三、汉化后的RedHat是个什么样子?
   采用TurboLinux提供的Unicon 3.0加上内核提供的GBK code page,我们能够得到一个支持中文编码的内核,一个彻底的中文终端,还有Xwindows下中文文件名的支持。
   采用glibc-2.2,我们可以得到更好的中文locale支持。
   采用XFree86 4.01,我们可以得到更多显卡的支持和TrueType字体的支持。
   采用Qt-2.2.2 + codec patch + vim patch能够让KDE比较完美的支持中文显示和中文输入。
   采用KDE-2.01,我们能够得到一个比Win 98还漂亮的桌面环境。
   采用cxterm得到中文的xterm。
  四、RedHat 7.0的中文locale的问题
   RedHat 7.0采用的glibc-2.1.96,对中文的支持已经是很好了。我们仅仅需要修改 /usr/lib/gconv/gconv-modules ,加入一行:
  alias GB2312-1980// EUC-CN//
  把LC_ALL环境变量export为Zh_CN,zh_CN.GB2312,zh_CN.GBK都可以支持简体中文。如果你做了上面的修改,启动到Gnome环境,看看Gnome是不是能够支持中文。最明显的是Gnome桌面的时钟变成中文的了。
  五、重新编译内核
   RedHat 7.0所使用的内核是2.2.16,Unicon 3.0有Kernel 2.2.17和kernel 2.4.0test10的补丁,我使用的是kernel 2.2.16 + kernel 2.2.17-patch。如果你采用kernel 2.4test10 + kernel 2.4test10-patch,最后效果可能会更好一点。安装方法和本文介绍的类似。
  1、下载Unicon-3.0release.tar.gz,并解包。
  # cp unicon-3.0release.tar.gz /tmp
  # tar -zxvf unicon-3.0release.tar.gz
  2、确定安装了kernel-source,若没有,安装上。
  # rpm -Uvh kernel-source*
  3、取出其中相应的kernel patch,并给kernel打补丁。
  #cp /tmp/unicon-3.0/kernel-patch/kernel-2.2.17.patch.gz /usr/src
  #cd /usr/src
  #gunzip kernel-2.2.17.patch.gz
  #patch -p0
  4、编译内核
  #cd /usr/src/linux
  #make mrproper
  #make menuconfig
  Code maturity level options
  +-Prompt for development and/or incomplete code/drivers
  Console Driver
  +-Support Frame Buffer Devices
  +-Unicon Support
  +-VESA VGA Graphics Console
  File system->Native language support
  +-Code page 936(GBK)
  大多数情况下,我们的机器都是以单机方式运行的,所以在编译内核时,我建议是够用就好,比如说USB、SCSI、ISDN这些设备如果你没有的话,就可以不选了,Network driver这一项,大多数情况下,我们也只需要把PCI n2k或者是ISA n2k选上就可以了,其他的可以统统不要。
  #make dep
  #make bzImage
  #make modules
  #make modules_install
  如果没有问题的话, /usr/src/linux/arch/i386/boot/下面会产生一个bzImage,这就是新内核了。
  5、使用新内核开机
  #cp /usr/src/linux/arch/i386/boot/bzImage /boot
  编辑/etc/lilo.conf,加入:
  image=/boot/bzImage
  vga=771
  label=zhLinux
  注意:vga=771,771表示使用帧缓冲模式:256色,800x600分辨率。其它的显示模式参见下表:
  640x480 800x600 1024x768 1280x1024
  256 769 771 773 775
  32K 784 787 790 793
  64K 785 788 791 794
  16M 786 789 792 795
  八、TrueType字体的使用
  1、前面已经说过了中文locale的问题,所以就直接开始TrueType字体部分。很抱歉,我仅仅只用过Win98 SE和Win me的simsun.ttf字体。别的字体是不是也可以,我还不知道!据说英文IE5.5中的mssong.ttf也可以很好的被支持。开始前,请先关掉xfs。
  #setup
  #system service->xfs->去掉前面的*
  2、得到TrueType字体
  # mkdir /usr/X11R6/lib/X11/fonts/TrueType
  # cp windows/fonts/simsun.ttf /usr/X11R6/lib/X11/fonts/TrueType
  # cd /usr/X11R6/lib/X11/fonts/TrueType
  # ttfmkfdir>fonts.dir
  我获得的fonts.dir如下:
  4
  simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-p-0-ascii-0
  simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-p-0-fcd8859-15
  simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-p-0-iso8859-15
  simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-p-0-iso8859-1
  修改为:
  simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-p-0-ascii-0
  simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-p-0-fcd8859-15
  simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-p-0-gb2312.1980-0
  simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-p-0-iso8859-1
  #cp fonts.dir fonts.scale
  3、修改/etc/X1/XF86Config-4, 找到Section "Files"段,加入字体搜索路径, 并注释掉FontPath "unix/:7100:
  Section "Files"
  #FontPath "unix/:7100"
  FontPath "/usr/X11R6/lib/X11/fonts/local/"
  FontPath "/usr/X11R6/lib/X11/fonts/misc/"
  FontPath "/usr/X11R6/lib/X11/fonts/75dpi/:unscaled"
  FontPath "/usr/X11R6/lib/X11/fonts/Type1/"
  FontPath "/usr/X11R6/lib/X11/fonts/Speedo/"
  FontPath "/usr/X11R6/lib/X11/fonts/75dpi/"
  FontPath "/usr/X11R6/lib/X11/fonts/TrueType/" <--TrueType字体的路径
  EndSection
  在Section "Module" 段中加入xtt解析:
  Section "Module"
  Load "GLcore" Load "dbe"
  Load "dri" Load "extmod"
  Load "glx" Load "pex5"
  Load "record" Load "xie"
  Load "v4l"
  Load "xtt" <--加入这一行
  EndSection
  4、为了让Gnome支持新的TrueType字体,修改/etc/gtk/gtkrc.zh_CN:
  style "gtk-default-zh-cn" {
  "-misc-SimSun-medium-r-normal--12-0-0-0-p-0-*-*"
  }
  KDE本身提供了字体选择,稍候我们再详细的说。这样的话,当你设定好中文环境变量以后,就可以在Gnome看到TrueType字体了。
  九、Chinput 3.01的安装
  1、为了省略编译出错的麻烦,我们可以尽量采用i386.rpm包,前面我已经介绍了pth包的安装,如果你当时没有安装,安装之。我的网站收录了Wuyulun做的Chinput 3.01的 rpm4软件包,下载回来。安装之。同时请下载unicon2-im.tar.gz
  #rpm -ivh Chinput-3.0.1-1.i386.rpm --nodeps
  #cp unicon2-im.tar.gz /usr/lib
  #cd /usr/lib
  #tar -zxvf unicon2-im.tar.gz
  #rm unicon2-im.tar.gz
  2、安装好上面的这些软件包后,还需要一些修改:
  #cd /usr/lib
  #ln -s libstdc++-2-libc6.1-1-2.9.0.so libstdc++-libc6.1-2.so.3
  并且保证/usr/lib/ZWinPro/Chinput.ad 的相关部分是下面的样子:
  ...
  chinput.gblocale = zh_CN.GBK
  chinput.big5locale = zh_CN.GBK
  ...
  chinput.gbfont = -*-*-medium-r-normal--16-*-*-*-c-*-gb2312.1980-0 chinput.big5font = -*-*-medium-r-normal--16-*-*-*-c-*-gb2312.1980-0
  3、为了让每次登陆的时候都是中文环境,修改 ~/.bashrc 文件,在末尾加上下面的语句:
  export LC_ALL=zh_CN.GBK
  export LANG=zh_CN.GBK
  export XMODIFIERS=@im=Chinput
  把环境变量LC_ALL和LANG设置成zh_CN.GBK是为了让Gnome和KDE都能比较好的支持中文。
  4、重新登陆,看看你的Gnome是不是能够支持中文输入了。(打开gedit,按下Ctrl+空格,看看是不是有输入条出现)。此时,KDE还是不能支持中文显示和输入。     十、KDE 2.01的安装和中文化
  1、KDE 2.0和Gnome 1.2相比,无论是视觉感受还是功能上我都觉得是KDE更好一些,这可能也是国内的Linux发行商一致采用KDE作为桌面环境的原因吧。由于QT的问题,RedHat上KDE的中文化一直没有什么进展,直到最近我才在日本的
  KDE站上找到了中文补丁。我的网站上收录了qt-2.2.1、qt-2.2.2、KDE 2.01的中文补丁。
  2、由于RedHat 7.0采用的是qt-2.2.0和KDE-1.1.2,基本上没有我们用的到的东西,所以我们要自己编译整个qt-2.2.2和KDE-2.01的source。大家如果使用的是RedHat 7.0的标准安装盘的话,应该是2 CD的,其中第二张CD的preview目录下面有KDE-2.0的包,可千万不要安装它!否则它会搞得你的locale一团糟。
  3、为了方便大家安装,我在我的网站上还提供了下载Qt-2.2.2和KDE-2.01的连接。其实上基本的KDE安装只需要下面的几个包:
  qt-x11-2.2.2
  kdeadmin-2.0.1
  kdesupport-2.0.1
  kdebase-2.0.1
  kdelibs-2.0.1
  由于编译Qt+KDE的source需要极长的时间(上面这几个软件包在我的机器上足足编译了8个小时),大家在下载完相关的软件包和中文补丁后,最好是写一个shell来自动编译。
  4、找一个空目录,比如说/tmp,解开qt和kde包,并打补丁
  #cp qt-x11-2.2.2.tar.gz /tmp
  #cp kdeadmin-2.0.1.tar.bz2 /tmp
  #cp kdebase-2.0.1.tar.bz2 /tmp
  #cp kdesupport-2.0.1.tar.bz2 /tmp
  #cp kdelibs-2.0.1.tar.bz2 /tmp
  #cp *.diff /tmp
  #cd /tmp
  #bunzip2 *.bz2
  #tar -zxvf qt-qt-x11-2.2.2.tar.gz
  #tar -xvf kdeadmin-2.0.1.tar
  #tar -xvf kdebase-2.0.1.tar
  #tar -xvf kdesupport-2.0.1.tar
  #tar -xvf kdelibs-2.0.1.tar
  比如说给Qt-2.2.2打vim的补丁(只有打上这个补丁,才能在KDE中使用中文输入法Chinput):
  #cd /tmp
  #patch -p0
  Qt-2.2.2总共有十个补丁,最好都打上。同时也请打上KDE-2.01的相关补丁。然后:
  #mv qt-2.2.2 /usr/lib
  5、为了编译Qt-2.2.2和KDE,我们修改一下~/.bashrc,把下面这段shell加到
  ~/.bashrc的末尾并且重新登陆。
  
  QTDIR=/usr/lib/qt-2.2.2  ## <<---qt-2.2.2的位置##
  KDEDIR=/opt/kde2 ## <<--kde-2.01的安装路径##
  PATH=$KDEDIR/bin:$QTDIR/bin:$PATH MANPATH=$KDEDIR/doc/man:$QTDIR/doc/man:$MANPATH LD_LIBRARY_PATH=$KDEDIR/lib:$QTDIR/lib:$LD_LIBRARY_PATH
  export KDEDIR QTDIR PATH MANPATH LD_LIBRARY_PATH
  6、编译qt source:
  #cd /usr/lib/qt-2.2.2
  #./configure -sm -system-jpeg -gif (可以./configure --help看看选项)
  然后qt会询问你一个版权许可的问题,回答yes即可。
  #make <--需要几个小时
  #make clean
  7、写一个shell来编译kde source
  #/tmp/install.sh
  #! /bin/bash
  #Specify where is your kde orginal codes. /tmp is default!
  INSTALL_DIR=/tmp
  export INSTALL_DIR
  #we must compile kdesupport-2.0.1 first!
  cd $INSTALL_DIR/support-2.0.1
  ./configure
  make
  make install
  make clean
  #and then,we must compile kdelibs-2.0.1!
  cd $INSTALL_DIR/kdelibs-2.0.1
  ./configure
  make
  make install
  make clean
  # then,we must compile kdebase-2.0.1!
  cd $INSTALL_DIR/kdebase-2.0.1
  ./configure
  make
  make install
  make clean
  # after the 3 packages,we can free compile any kde packages!
  cd $INSTALL_DIR/kdeadmin-2.0.1
  ./configure
  make
  make install
  make clean
  #other kde packages can be compiled here!
  #
  #end compiled!
  
  #rm /tmp/* -rf
  #halt your machine!
  halt
  
  这样的话,kde会被安装到/opt/kde2下面。这个过程需要很长的时间,你可以睡觉!
  7、编译完成以后,你可以享受KDE 2.01了,RedHat默认的桌面环境是Gnome,所以我们需要在~/.xinitrc(如果没有,自己建立一个)加入一行
  /opt/kde2/bin/startkde
  同时保证~/.bashrc有下面的语句:
  QTDIR=/usr/lib/qt
  KDEDIR=/opt/kde2
  PATH=$KDEDIR/bin:$QTDIR/bin:$PATH MANPATH=$KDEDIR/doc/man:$QTDIR/doc/man:$MANPATH LD_LIBRARY_PATH=$KDEDIR/lib:$QTDIR/lib:$LD_LIBRARY_PATH
  export KDEDIR QTDIR PATH MANPATH LD_LIBRARY_PATH
  export LC_ALL=zh_CN.GBK
  export LANG=zh_CN.GBK
  export XMODIFIERS=@im=Chinput
  8、中文mo翻译文件
  我在KDE.org的kde-2.01下面没有找到kde-i18n-zh_CN.GB2312相关包,所以就用了RedHat 7.0安装盘上的这个包(在第二张盘的 preview 目录下面)。默认情况下,它会被安装到/usr/lib/kde2下面,我们要把它移动到正确的KDE2安装目录下的相应位置。
  #rpm -ivh kde-i18n-zh_CN*
  #cd /usr/lib/kde2/share/locale
  #cp zh_CN.GB2312 /opt/kde2/share/locale
  #cd ..
  #cd doc/HTML
  #cp zh_CN.GB2312 /opt/kde2/share/doc/HTML
  #cd /opt/kde2/share/doc/HTML
  #ln -s zh_CN.GB2312 default
  注:由于我的记忆力有限,这些文件名和目录名可能不是完全正确,但大概是这个样子的!
  9、这时候startx可以进入中文KDE了,如果没有中文,改一下Control Center
  --> Personalization --> Country&Language,改成与Chinese GB2312相关的就可以了。顺便改一下Control Center --> looks&feels -->fonts,改成我们安装的中文TrueType字体。重新启动KDE。可以看到中文了吧,运行chinput,看看能不能输入中文。下面是我的中文KDE。
  十一、中文文件名
  在前面编译内核的时候,我让大家选择了:
  File system->Native language support
  +-Code page 936(GBK)
  如果你这样做了,尝试一下:
  #mount -t vfat -o iocharset=cp936 /dev/hdxx /mount point
  然后启动KDE,kedit应该可以支持fat32分区上的中文文件名了。但是在中文终端环境下面,那些中文文件名看起来还是乱码。早些版本的2.2内核有一个中文文件名补丁,现在kernel-2.2.16的这种补丁我还没有找到。为了每次不用输入这么长的命令,我们可以修改/etc/fstab,让每次开机的时候系统给我们自动挂上。下面是我的/etc/fstab
  LABEL=/   /      ext2   defaults        1 1
  /dev/cdrom /mnt/cdrom iso9660 iocharset=cp936,noauto 0 0
  /dev/fd0  /mnt/floppy auto  noauto,owner      0 0
  none    /proc    proc  defaults        0 0
  none    /dev/pts   devpts gid=5,mode=620     0 0
  /dev/hda9  swap    swap  defaults        0 0
  /dev/hda6 /mnt/hda6   vfat  iocharset=cp936     1 1
  /dev/hda1 /mnt/hda1   vfat  iocharset=cp936     1 1
  十二、Chinese team
  1、 在console环境下,有很多中文终端,比如说clearcase/" target="_blank" >cce等等,我们有unicon,这些中文终端就不需要了。倒是有一些ctelnet之类的程序我们可以好好利用一下他们。console环境下的中文编辑器,我还没有找到!
  2、在 X 环境下,我们需要一个中文终端,很早开始就有一个cxteam的工具,你几乎在哪个ftp服务器上都能找到。我的网站上也收录了一个。
  十三、GNOME
  Gnome对于中文locale的支持非常好,需要我们做的非常少,差不多是把环境变量LC_ALL设置成为zh_CN.xxx就可以了。而且在前面的文章当中,我几乎全部在介绍Gnome的问题,就不再重复了。
  十四、剩下的问题
  1、大家知道KDE有一个非常好的开发工具Kdevelop,可惜的是这个东西相对于qt的发展是太慢了。最新的Kdevelop-1.3BETA,需要1.44<=qt<2.0,这也是为什么几乎是所有的Linux发行版本都有两个qt的原因了。我有一个qt-1.44的中文补丁,拿它来编译kdevelop时,qt是没有问题了,但是kdevelop又说我的KDE2.01有问题,尝试了好久,也没有成功。
  2、中文终端下中文文件名显示仍然是一个问题,也不知道这个补丁的最新版本什么时候才能找到。可喜的是, KDE环境下已经可以支持中文文件名了。
  3、中文终端下面,vim默认情况下不支持双字节输入,我也不知道该怎么办。
  哪位大虾知道的话,告诉小弟一声,谢了!在很早的时候有一些emacs的中文输入补丁,好久没有留意了。不知道现在怎么样!
  4、使用ghostscript来解析postscript进行中文postscript字体打印的问题我几乎是一无所知,不敢多言。
  
  
  
  

原文转自:http://www.ltesting.net