QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2626|回复: 5

cygwin 汉化即其他新特性

[复制链接]
发表于 2005-7-2 20:35:16 | 显示全部楼层 |阅读模式
cygwin 汉化即其他新特性

使用cygwin的原因
最近在研究java的源码,源码官方的编译文档里提到一个unix环境到windows移植的
工具包MKS,在网上百觅不得,于是想起了久违的cygwin,使用之后居然能启动java
那庞大makefile系统,于是觉得有必要写点东西向大家推介推介。

安装
从http://www.cygwin.com/下载网络安装setup.exe,该安装程序会一步步提示,只
是选取安装包的那一节自己注意点,针对自己的需要看看有什么要额外装的。比如
编译java源码时就要多选取几个:perl、gawk、make、binutils(好像就这几个,
反正编译时会有提示找不到那个执行程序,届时用setup.exe到网上再下就可以了。
),另外vim这个包是linux下编辑文本必备的,在windows下的cygwin中也是如此。

cygwin环境汉化
修改三个文件:
1、~/.bashrc BASH的配置文件
# base-files version 3.4-2

# WARNING
#
# IF THIS .bashrc IS MODIFIED IT WILL NOT BE UPDATED BY THE CYGWIN
# SETUP PROGRAM.  IT BECOMES YOUR RESPONSIBILITY.
#
# The latest version as installed by the Cygwin Setup program can
# always be found at /etc/defaults/etc/skel/.bashrc

# User dependent .bashrc file

# See man bash for more options...

# Don't wait for job termination notification
# set -o notify

# Don't use ^D to exit
# set -o ignoreeof


# Don't put duplicate lines in the history.
# export HISTCONTROL=ignoredups

# Ignore some controlling instructions
# export HISTIGNORE="[   ]*:&:bg:fg"


# Some example alias instructions
# If these are enabled they will be used instead of any instructions
# they may mask.  For example, alias rm='rm -i' will mask the rm
# application.  To override the alias instruction use a \ before, ie
# \rm will call the real rm not the alias.

# Interactive operation...
# alias rm='rm -i'
# alias cp='cp -i'
# alias mv='mv -i'

# Default to human readable figures
# alias df='df -h'
# alias du='du -h'

# Misc
# alias less='less -r'                          # raw control characters
# alias whence='type -a'                        # where, of a sort
# alias grep='grep --color'                     # show differences in colour

# Some shortcuts for different directory listings
# alias ls='ls -hF --color=tty'                 # classify files in colour
# alias dir='ls --color=auto --format=vertical'
# alias vdir='ls --color=auto --format=long'
# alias ll='ls -l'                              # long list
# alias la='ls -A'                              # all but . and ..
# alias l='ls -CF'                              #


# Some example functions
# function settitle() { echo -n "^[]2;$@^G^[]1;$@^G"; }

###################### 以下为添加部分 ################################

# cygwin中取\usr\share\locale\zh_CN\LC_MESSAGES中*.mo文件,如果提示信息中
# 的字符集为utf8则会显示有误(不知何解?,magiclinux无类似情况),为gb2312
# 则正常,大概与gettext这个模块有关,这个模块的作用是使linux程序提示信息
# 区域话,即不同地区用不同语言,即常说的i18n;像我们设置的zh_CN.GBK,“.”
# 之前部分“zh_CN”表示地区即“中国大陆”,后面部分“GBK”表示字符集编码,
# 像我们下面的设置,当程序调用时会到\usr\share\locale\目录中查找,发现地
# 区为“zh_CN”则到该目录中查找程序对应的*.mo文件,*.mo文件的名称是在调用
# 的程序中设置了的。然后取该语种的对应提示,然后按编码(在mo文件中指明了)
# 处理该文字。
# 当然这些不是自动处理的,要在程序中调用像setlocale、textdomian、gettext
# 这样的函数处理。
# 在cygwin中有些程序,做了下面的设置,因为对应的mo文件中编码为utf8而无法
# 显示,我是直接将它删除,之后程序会因为找不到mo文件而用默认的英文来显示
# 的。(下面的编码设置并没有错,应该是cygwin程序中的BUG,只是设置了LC_ALL
# 就没必要设LANG了,有的文档上面这样写的
export set LC_ALL=zh_CN.GBK
export set LANG=zh_CN.GBK
#export set LC_CTYPE=zh_CN.UTF-8
#export set CHARSET=UTF-8

# 解决ls中文显示问题
alias ls='ls --show-control-chars'
alias dir='ls --show-control-chars'
alias less='less --raw-control-chars'

# 添加清屏处理
alias clear='clearn'
alias clr='clearn'

# 添加whereis的别名
alias whereis='which'

2、~/.inputrc BASH中命令行输入出控制的配置文件
# base-files version 3.4-2

# WARNING
#
# IF THIS .inputrc IS MODIFIED IT WILL NOT BE UPDATED BY THE CYGWIN
# SETUP PROGRAM.  IT BECOMES YOUR RESPONSIBILITY.
#
# The latest version as installed by the Cygwin Setup program can
# always be found at /etc/defaults/etc/skel/.inputrc

# don't beep at me
# set bell-style visible

# the following line is actually
# equivalent to "\C-?": delete-char
"\e[3~": delete-char

# VT
"\e[1~": beginning-of-line
"\e[4~": end-of-line

# kvt
"\e[H":beginning-of-line
"\e[F":end-of-line

# rxvt and konsole (i.e. the KDE-app...)
"\e[7~":beginning-of-line
"\e[8~":end-of-line

###################### 以下为添加部分 ################################

# 关闭bash命令行8字节字符转义符的转换
set convert-meta off

# 使bash命令行支持8字节字符输入
set input-meta on

# 使bash命令行支持8字节字符输出
set output-meta on

# 让bash的命令行已vi模式执行,屏蔽掉下面一行,BASH的命令行操作
# 就像vi中编辑文本一样,默认为INSERT模式,可以在BASH启动后直接
# 输入:set -o vi,来启动该开关,set +o vi关闭该模式,但在cygwin
# 中调用set +o vi关闭时会出现一些乱码,估计也是一个BUG
#set editing-mode vi

3、~/.vimrc vim的资源控制文件
" 显示语法高亮度
:syntax on

" 设置字符编码,可使显示中文光标移动和字符删除操作变为双字节
:set encoding=cp936

" 设置vim中TAB缩进为4个空格
:set ts=4


cygwin的新特性

windows驱动器的管理
cygwin启动后,windows中驱动器自动挂接到cygdrive目录。
比如:

wj@wj-server1 ~
$ ls /cygdrive
c  d  e

cygdrive是一个虚拟目录,它在注册表中设置。
看看这个:

wj@wj-server1 ~
$ regtool get '\HKLM\software\Cygnus Solutions\Cygwin\mounts v2\cygdrive prefix'
/cygdrive

regtool是cygwin中注册表的操作工具,get选项会把上面注册表项的值显示出来。
我们把/cygdrive该成/media试试。

wj@wj-server1 ~
$ regtool set '\HKLM\software\Cygnus Solutions\Cygwin\mounts v2\cygdrive prefix' '/media'

重启cygwin

wj@wj-server1 ~
$ ls /media
c  d  e

在cygwin中也可以这样操作驱动器,比如我们要进入到E盘

wj@wj-server1 ~
$ cd e:

wj@wj-server1 /media/e
$

wj@wj-server1 /media/e
$ ls
DZSW20050606.rar   EDUMS20050606.rar  cvs    ftp.txt  music    temp
Downloads          Recycled           ebook  job      oracle   work
EDUMS20050529.rar  ctais              film   linux    rav.rar  全国DNS地址.txt

直接输盘符cd就可以了。等同于下面的操作。

wj@wj-server1 ~
$ cd /media/e

wj@wj-server1 /media/e
$

另外, '\HKLM\software\Cygnus Solutions\Cygwin\mounts v2\'下面的项可以制
定目录的连接关系,比如该项下面有一个项叫‘/’该项中有个值叫‘native’为字
符串‘C:\cygwin’,cygwin启动的时候就会将根目录‘/’指向‘C:\cygwin’本地
目录。所以你无论从那个目录启动bash.exe程序,根目录是不会变的,以前的好像
不是,默认的关联还有‘/usr/bin’指向‘C:\cygwin/bin’所以cygwin中/usr/bin
和/bin其实是同一个目录,因为根目录/为‘C:\cygwin’,‘/usr/lib’指向
‘C:\cygwin/lib’,同理/usr/lib与/lib为同一个目录。
 楼主| 发表于 2005-7-2 21:41:46 | 显示全部楼层
怎么我的文章又受到冷遇,贴贴字节写的{古文}玩

潭州王姓,爱读聊斋,不求甚解,待业于家,百无聊赖乃取源码以读之,会有所得,
则拾而记之,游手好闲,为同侪所不齿,性尤不改,独好破解,谙习此道,今拾掇
箧中,破解软件十之又九也,中有visual slickedit10,与时所行破解版不同,行
tag files之操作而无碍,时时自得,或曰国人非尽为阿斗也,然掣肘于法律所制,
不欲示人,或有百觅而不得者,可于某之邮箱[email protected]得之,或有爱读
源码而无偕行者,可于某之QQ:5672618觅之。
回复

使用道具 举报

发表于 2005-7-2 21:46:58 | 显示全部楼层
因为 Cygwin 不如虚拟计算机方便(对于新手)。

你能告诉我装一个差不多的 X 兼容系统需要哪些包?
要支持 gcc ,可以在上面编译大部分源代码(最好是全部)
回复

使用道具 举报

 楼主| 发表于 2005-7-2 22:51:41 | 显示全部楼层
我目前安装的包如下:
wj@wj-server1 ~
$ ls /etc/setup/*.lst.gz | cut -d/ -f4 | cut -d. -f1
_update-info-dir
alternatives
ash
autoconf
autoconf2
autoconf2
automake1
base-files
base-passwd
bash
binutils
byacc
bzip2
coreutils
crypt
ctags
cvs
cygutils
cygwin-doc
cygwin
diffutils
editrights
expat
file
findutils
flex
gawk
gcc-core
gcc-g++
gcc-mingw-core
gcc-mingw-g++
gdb
gdbm
gettext-devel
gettext
grep
groff
gzip
less
libbz2_1
libcharset1
libdb4
libgdbm-devel
libgdbm
libgdbm3
libgdbm4
libgettextpo0
libiconv
libiconv2
libintl
libintl1
libintl2
libintl3
libltdl3
libncurses5
libncurses6
libncurses7
libncurses8
libpcre
libpcre0
libpopt0
libreadline4
libreadline5
libreadline6
libtool1
login
m4
make
man
mingw-runtime
mktemp
more
ncurses
patch
patchutils
perl
readline
sed
tar
tcltk
termcap
terminfo
texinfo
unzip
vim
w32api
which
zip
zlib

测试gcc编译cygwin源代码:coreutils-5.3.0

wj@wj-server1 ~
$./coreutils-5.3.0-6.sh configure

wj@wj-server1 ~
$./coreutils-5.3.0-6.sh make

wj@wj-server1 ~
$./coreutils-5.3.0-6.sh install

wj@wj-server1 ~
$./coreutils-5.3.0-6.sh pkg

生成包
coreutils-5.3.0-6.tar.bz2

覆盖安装(按我上面提到的路径覆盖)后,一切正常。

至于你所说的X11的东东,等有时间研究出来再向你汇报,去年搞过这个,
先要下xorg这些包,去年应该是下的xfree86这些包,然后到这里:
http://sourceforge.net/projects/kde-cygwin/
下KDE的包,我使用的效果不好,速度太慢,稳定性也不好,不知道现在怎
么样了。
回复

使用道具 举报

 楼主| 发表于 2005-7-2 23:02:02 | 显示全部楼层
coreutils-5.3.0 源代码包是在setup.exe网络安装的程序里制定,哪里有两
个选东西的叉叉,前一个是安装选包,后一个是选代码包,安装完后在/usr/src
目录里有:coreutils-5.3.0-6.sh和coreutils-5.3.0.tar.bz2(源代码包)这
些文件,coreutils-5.3.0-6.sh是编译文件,直接用如我上面,或解压缩
coreutils-5.3.0.tar.bz2到目录,然后:
./configure
./make
./make install
都可以,测试结果是一样的。
回复

使用道具 举报

发表于 2005-7-3 22:51:02 | 显示全部楼层
过去测试翻译和一些脚本,我都是用 cygwin,一直很喜欢。
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-26 06:01 , Processed in 0.038485 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

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