[目录] cygwin安装使用总结.txt (created by TxtBrowser)
content
1. 什么是Cygwin?
2. 什么不是Cygwin?
3. Cygwin的下载与安装
4. cygwin下的一些应用
. 4.1 默认的应用--也是我选择cygwin的原因
. 4.2 可以自己安装一些好玩的东东
. 4.3 有一些应用需要额外的配置
. 4.3.1 ssh服务在cygwin上架设指南
5. cygwin的一些问题及解决
. 5.1 如何改变home目录
. 5.2 cygwin显示中文问题
. 5.3 cygwin下中文中现乱码问题
figures
figure 1. patch for mplayer on cygwin
对于留恋Linux命令行的用户, 对于那些不想在你的Windows系统上再安装一个Linux, 或者
安装虚拟机, 再在虚拟机上安装Linux的用户来说, Cygwin应该是一个很好的选择. cygwin
可以模拟Linux的工作环境, 命令, 工作方式都跟 Linux一样.
Windows的命令行的确是不好用, cygwin除了可以执行Linux命令外, 还可以直接调用
Windows的命令行, 不同的是界面更加友好. 如果再配合其它软件(如console2), 基本上可
以做到类似Linux的 gnome-terminal的多tab了.
所有的试验都是在cygwin1.5上做的, cygwin1.7尽管发布很久了, 但是个人感觉还有很多
bug, 所以我在公司里用cygwin1.5, 回到家里用cygwin1.7, 这是个人的感受, 呵呵.
1. 什么是Cygwin?
Cygwin是一个在windows平台上运行的Linux模拟环境, 是Cygnus solutions公司开发的自
由软件(该公司开发了很多好东西, 著名的还有eCos, 不过现已被Redhat收购). 它对于学
习Unix/linux操作环境, 或者从unix到windows的应用程序移植, 或者进行某些特殊的开发
工作, 尤其是使用gnu工具集在windows上进行嵌入式系统开发, 非常有用. [1]
Cygwin是一个Windows上的Linux模拟环境, 它包括两个部分:
* 一个作为Linux API仿真层的DLL(Cygwin.dll), 它提供稳定的Linux API功能.
* 提供看起来且使用起来象Linux的工具集.
2. 什么不是Cygwin?
Cygwin不是一种在Windows下运行Linux应用程序的方式, 如果要做到这一点, 你必须重新
在Windows上编译你的源程序.
3. Cygwin的下载与安装
首先你必须到http://www.cygwin.com先下载一个安装向导文件 setup.exe, 然后运行
setup.exe, 依次会出现下面的对话框:
(1)选择安装方式(选择Download Without Installing)
(2)选择本地存储路径
(3)选择连接方式
(4)选择下载站点(推荐两个: http://mirrors.kernel.org, ftp.ntu.edu.tw)
(5)选择下载包的内容: 一共有四类. default只下载最小安装包, Install则下载所有
的包, 在1.7版本里, Reinstall在下载的时候好像没有什么用,不用选, Uninstall
是删除安装包吗? 没有试过. 至于窗口顶部那些“Keep”、“Prev”、“Curr”、“
Exp”等等选项 , 只是用来改变当前树结构的显示方式的, 对下载没有什么影响. 用
户可以用默认的“Exp”.
(6)开始下载
如果用户的运气足够好, 也许能够一次性的下载成功. 若真能这样, 恭喜恭喜!但如果你
和我一样不幸, 下到一半网络断了,怎么办?难道要我全部重新来一遍?幸运的是,Cygwin
的安装向导程序支持断点续传功能: 你可以按照上面的步骤再次运行setup.exe, 把上面的
骤再执行一遍就行了, cygwin会记住上次下载的东东的(适用于cygwin1.7, 对于
cygwin1.5, 貌似断点下载的第5步要选择Reinstall).
在用户指定的本地存储路径内, 安装向导程序会生成类似这样的一个目录: http%3a%2f
%2fmirrors.kernel.org%2fsources.redhat.com%2fcygwin, 这就是你下载文件的真正所在
目录. 还会生成两个日志文件:setup.log和setup.log.full, 用户感兴趣的活, 可以打
开来看看, 对了解Cygwin的下载机制有不少帮助.
至于如何安装, 其实就是再运行一次setup.exe, 不同的是, 在上述的第1步里选择
Install from local, 在第5步里, 四个选项有不同的含义, Install代表安装而不是下载
, Reinstall代表重新安装而不是重新下载. 用户可以在这里选择要安装的包, 不过我还是
建议选择安装所有的程序包, 免的以后麻烦.
4. cygwin下的一些应用
4.1 默认的应用--也是我选择cygwin的原因
之所以安装cygwin, 是因为习惯于linux下的一些应用, 在Windows上没有, 或者找不到合
适的代替器, 所以在我的日常应用中, 基本上cygwin被当成是一台只有命令行的Linux操作
系统使用. 而且因为运行在Windows上, 所以有时候少了和Windows通讯的烦恼.
* Gcc, Makefie, gdb: 这是最初接触cygwin的原因. 很多公司在Windows上编译
Linux 的东东, 没有这个的确不行, 后来经常自己写一些验证性质的小程序, 也
用这个.
* Vim: vim提供了windows版本, 但是有时候还是习惯使用命令行版的Vim(不是
gvim), 尽管windows版本的gvim用的也很多.
* ls: 尽管Windows提供了类似的命令dir, 但是感觉还是ls信息论习惯和强大.
* telnet, ssh: 很多人使用secuCRT登录设备, 个人感觉secuCRT有一项功能挺强
的, 那就是记录log功能, 其它的挺弱的, 比不了cygwin. 再插上一句, 用cygwin
telnet 登录 bbs还是比较好使的, 但是secuCRT和putty显示中文都会有问题. 没
用过 CTerm以及 XTerm之类的bbs终端, 但是我发现cgywin能实现基本它们声称的
大部分功能.
* ftp, sftp, lftp, tftp等: 这个也有专门的软件来实现, 好用的如FileZilla
FTP server和client版, 但是点鼠标点的我手疼, 还是习惯命令行, 而且最近研
究了一些脚本, 对于经常到某个ftp上存取文件使用一个命令就可以实现, 不用再
登录, 敲密码, 进入到指定路径, 上传下载了, 还是蛮方便的.
* cvs: 有Windows版本的cvs工具wincvs, 貌似最初我用过好几年, 但是现在一个
命令就能搞定的事情不愿意再开一个软件再点击好多次鼠标了.
* diff和patch: 经常写代码和写文章的人用的着. Windows上暂时没有发现替代
品.
* 阅读一些命令的man page, 如man strcpy.
* 其它常用的Linux命令, 如rm, ping, tar, gzip, cat, echo等.
* Linux的重定向命令, 用过的人知道, 有时候这个还是很好用的, 呵呵
4.2 可以自己安装一些好玩的东东
上面的应用都是cygwin自带的, 装上就能用. 事实上如果你的cygwin是完全安装的话, 你
对编程小有了解的话, 还可以自己编译一些好玩的东东, 下面是我实验过可以使用的:
* 纯文本网页浏览器(lynx, w3m或者elinks), 在命令行里浏览网页.
* sdcv: 在命令行里查字典, 这个没有人移植到Windows上.
* asterisk: 一个众人皆知的voip server(这个需要修改的地方很多).
* mplayer: 在命令行里听音乐, 貌似有人开发了一个叫cmmusic的东东, 可以同
步显示歌词, 编译的时候cwygin存在一个叫llrint的问题, 如果遇到这个问题
(undefined reference to `_llrint'), 下面的 patch可以解决这个问题:
|
|===================================================================
|--- ffmpeg/libavcodec/i386/mathops.h (revision 6329)
|+++ ffmpeg/libavcodec/i386/mathops.h (working copy)
|@@ -37,3 +37,13 @@
| asm ("imull %2\n\t" : "=A"(rt) : "a" (ra), "g" (rb));\
| rt; })
|
|+#ifndef llrint
|+inline long long int llrint (double x)
|+{
|+ long long int llrintres;
|+ asm
|+ ("fistpll %0"
|+ : "=m" (llrintres) : "t" (x) : "st");
|+ return llrintres;
|+}
|+#endif
figure 1. patch for mplayer on cygwin
4.3 有一些应用需要额外的配置
还有一些应用, 用到的时候需要一些些额外的配置, 一并总结一下:
4.3.1 ssh服务在cygwin上架设指南
sshd服务在cygwin上默认是不开启的, 可能是出于安全的需要. 但是有些服务可能需要
cygwin作为一个sshd服务器. 这时你需要手动打开sshd服务.[4]
1) 先确认一下cygrunsrv.exe 已经安装.
whereis cygrunsrv
2) 生成ssh_config文件
这时候并不能起动sshd服务的, 先运行ssh-host-config 会提示你一些信息, 照着做就是
了, 多数是yes, 在选择是否加载为service的时候小心一点, 这里的service是指windows
的service, 即使cygwin不启动, sshd也会在开机的时候启动起来.
3) 启动或停止sshd
net start sshd (cygrunsrv -S sshd)
net stop sshd
4) 实施过程
打开cygwin控制台, 输入ssh-host-config, 一路yes, 提示CYGWIN值时, 输入netsec tty.
启动sshd服务用: net start sshd 或 cygrunsrv --start sshd; 停止sshd服务用:net
stop sshd 或 cygrunsrv --stop sshd
5. cygwin的一些问题及解决
5.1 如何改变home目录
如果要改变home目录则要编辑cygwin.bat, 具体如下:在bash命令之前加入set HOME=<用
户目录>, 比如:
set HOME=/home/g
此用户目录设置在/home/g.
5.2 cygwin显示中文问题
/etc/skel/.bashrc
让bash命令行可以输入汉字, 编辑~/.inputrc, 添加:
set meta-flag on
set convert-meta off
set input-meta on
set output-meta on
让ls命令显示汉字, 在~\.bashrc中加入:
export LESSCHARSET=latin1
让ls命令显示汉字文件和目录名, 在~\.bashrc中加入:
alias ls='ls -hF --show-control-chars --file-type'
一般的HOME目录下第一次使用的时候没有.inputrc和.bashrc文件的, 你可以自己新建一个
, 也可以从/etc/skel目录下拷由一个现成的, 稍加改动就可以了.
5.3 cygwin下中文中现乱码问题
在cygwin下用make编译程序, 往往会出现乱码. 这主要是因为cygwin对中文的支持不是很
理想引起的. 解决的办法是将环境变量LANG设成UTF-8, 暂时不用中文, 在~/.bashrc文件
中加入下面的一句话:
export LANG=UTF-8
[参考资料]:
[1]Cygwin User's Guide, cygwin官方网站,
http://cygwin.com/cygwin-ug-net/cygwin-ug-net.html
[2] 大冬瓜的博客, Cygwin安装图记, http://lostu.blogbus.com/logs/10765519.html
[3] OoNiceDream的博客, 如何配置cygwin,
http://oonicedream.itpub.net/post/36905/457409
[4] Cygwin上的ssh服务的putty自动登录问题, http://markli.javaeye.com/blog/39661
[5] Cygwin上的ssh服务的putty自动登录问题,
http://hi.baidu.com/%BB%D4%B8%E7/blog/item/51a7bf3ef17f1eff828b13aa.html
[6] cygwin & putty, http://blog.chinaunix.net/u/31756/showart_416440.html