[目錄] cygwin安裝使用總結(jié).txt (created by TxtBrowser)
  content
    1. 什么是Cygwin?
    2. 什么不是Cygwin?
    3. Cygwin的下載與安裝
    4. cygwin下的一些應(yīng)用
    .   4.1 默認(rèn)的應(yīng)用--也是我選擇cygwin的原因
    .   4.2 可以自己安裝一些好玩的東東
    .   4.3 有一些應(yīng)用需要額外的配置
    .       4.3.1 ssh服務(wù)在cygwin上架設(shè)指南
    5. cygwin的一些問題及解決
    .   5.1 如何改變home目錄
    .   5.2 cygwin顯示中文問題
    .   5.3 cygwin下中文中現(xiàn)亂碼問題
  figures
    figure 1. patch for mplayer on cygwin

對于留戀Linux命令行的用戶, 對于那些不想在你的Windows系統(tǒng)上再安裝一個Linux, 或者
安裝虛擬機, 再在虛擬機上安裝Linux的用戶來說, Cygwin應(yīng)該是一個很好的選擇. cygwin
可以模擬Linux的工作環(huán)境, 命令, 工作方式都跟 Linux一樣.

Windows的命令行的確是不好用, cygwin除了可以執(zhí)行Linux命令外, 還可以直接調(diào)用
Windows的命令行, 不同的是界面更加友好. 如果再配合其它軟件(如console2), 基本上可
以做到類似Linux的 gnome-terminal的多tab了.

所有的試驗都是在cygwin1.5上做的, cygwin1.7盡管發(fā)布很久了, 但是個人感覺還有很多
bug, 所以我在公司里用cygwin1.5, 回到家里用cygwin1.7, 這是個人的感受, 呵呵.

1. 什么是Cygwin?

Cygwin是一個在windows平臺上運行的Linux模擬環(huán)境, 是Cygnus solutions公司開發(fā)的自
由軟件(該公司開發(fā)了很多好東西, 著名的還有eCos, 不過現(xiàn)已被Redhat收購). 它對于學(xué)
習(xí)Unix/linux操作環(huán)境, 或者從unix到windows的應(yīng)用程序移植, 或者進行某些特殊的開發(fā)
工作, 尤其是使用gnu工具集在windows上進行嵌入式系統(tǒng)開發(fā), 非常有用. [1]

Cygwin是一個Windows上的Linux模擬環(huán)境, 它包括兩個部分:

    * 一個作為Linux API仿真層的DLL(Cygwin.dll), 它提供穩(wěn)定的Linux API功能. 
    * 提供看起來且使用起來象Linux的工具集. 

2. 什么不是Cygwin?

Cygwin不是一種在Windows下運行Linux應(yīng)用程序的方式, 如果要做到這一點, 你必須重新
在Windows上編譯你的源程序. 

3. Cygwin的下載與安裝

首先你必須到http://www.cygwin.com先下載一個安裝向?qū)募?setup.exe, 然后運行
setup.exe, 依次會出現(xiàn)下面的對話框:

    (1)選擇安裝方式(選擇Download Without Installing)
    (2)選擇本地存儲路徑
    (3)選擇連接方式
    (4)選擇下載站點(推薦兩個: http://mirrors.kernel.org, ftp.ntu.edu.tw)
    (5)選擇下載包的內(nèi)容: 一共有四類. default只下載最小安裝包, Install則下載所有
    的包, 在1.7版本里, Reinstall在下載的時候好像沒有什么用,不用選, Uninstall
    是刪除安裝包嗎? 沒有試過. 至于窗口頂部那些“Keep”、“Prev”、“Curr”、“
    Exp”等等選項 , 只是用來改變當(dāng)前樹結(jié)構(gòu)的顯示方式的, 對下載沒有什么影響. 用
    戶可以用默認(rèn)的“Exp”. 
    (6)開始下載

如果用戶的運氣足夠好, 也許能夠一次性的下載成功. 若真能這樣, 恭喜恭喜!但如果你
和我一樣不幸, 下到一半網(wǎng)絡(luò)斷了,怎么辦?難道要我全部重新來一遍?幸運的是,Cygwin
的安裝向?qū)С绦蛑С謹(jǐn)帱c續(xù)傳功能: 你可以按照上面的步驟再次運行setup.exe, 把上面的
驟再執(zhí)行一遍就行了, cygwin會記住上次下載的東東的(適用于cygwin1.7, 對于
cygwin1.5, 貌似斷點下載的第5步要選擇Reinstall).

在用戶指定的本地存儲路徑內(nèi), 安裝向?qū)С绦驎深愃七@樣的一個目錄: 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下的一些應(yīng)用

4.1 默認(rèn)的應(yīng)用--也是我選擇cygwin的原因

之所以安裝cygwin, 是因為習(xí)慣于linux下的一些應(yīng)用, 在Windows上沒有, 或者找不到合
適的代替器, 所以在我的日常應(yīng)用中, 基本上cygwin被當(dāng)成是一臺只有命令行的Linux操作
系統(tǒng)使用. 而且因為運行在Windows上, 所以有時候少了和Windows通訊的煩惱.

     * Gcc, Makefie, gdb: 這是最初接觸cygwin的原因. 很多公司在Windows上編譯
    Linux 的東東, 沒有這個的確不行, 后來經(jīng)常自己寫一些驗證性質(zhì)的小程序, 也
    用這個.
    * Vim: vim提供了windows版本, 但是有時候還是習(xí)慣使用命令行版的Vim(不是
    gvim), 盡管windows版本的gvim用的也很多.
    * ls: 盡管Windows提供了類似的命令dir, 但是感覺還是ls信息論習(xí)慣和強大.
    * telnet, ssh: 很多人使用secuCRT登錄設(shè)備, 個人感覺secuCRT有一項功能挺強
    的, 那就是記錄log功能, 其它的挺弱的, 比不了cygwin. 再插上一句, 用cygwin
    telnet 登錄 bbs還是比較好使的, 但是secuCRT和putty顯示中文都會有問題. 沒
    用過 CTerm以及 XTerm之類的bbs終端, 但是我發(fā)現(xiàn)cgywin能實現(xiàn)基本它們聲稱的
    大部分功能.
    * ftp, sftp, lftp, tftp等: 這個也有專門的軟件來實現(xiàn), 好用的如FileZilla
    FTP server和client版, 但是點鼠標(biāo)點的我手疼, 還是習(xí)慣命令行, 而且最近研
    究了一些腳本, 對于經(jīng)常到某個ftp上存取文件使用一個命令就可以實現(xiàn), 不用再
    登錄, 敲密碼, 進入到指定路徑, 上傳下載了, 還是蠻方便的.
    * cvs: 有Windows版本的cvs工具wincvs, 貌似最初我用過好幾年, 但是現(xiàn)在一個
    命令就能搞定的事情不愿意再開一個軟件再點擊好多次鼠標(biāo)了.
    * diff和patch: 經(jīng)常寫代碼和寫文章的人用的著. Windows上暫時沒有發(fā)現(xiàn)替代
    品.
    * 閱讀一些命令的man page, 如man strcpy.
    * 其它常用的Linux命令, 如rm, ping, tar, gzip, cat, echo等.
    * Linux的重定向命令, 用過的人知道, 有時候這個還是很好用的, 呵呵

4.2 可以自己安裝一些好玩的東東

上面的應(yīng)用都是cygwin自帶的, 裝上就能用. 事實上如果你的cygwin是完全安裝的話, 你
對編程小有了解的話, 還可以自己編譯一些好玩的東東, 下面是我實驗過可以使用的:

    * 純文本網(wǎng)頁瀏覽器(lynx, w3m或者elinks), 在命令行里瀏覽網(wǎng)頁.
    * sdcv: 在命令行里查字典, 這個沒有人移植到Windows上.
    * asterisk: 一個眾人皆知的voip server(這個需要修改的地方很多).
    * mplayer: 在命令行里聽音樂, 貌似有人開發(fā)了一個叫cmmusic的東東, 可以同
    步顯示歌詞, 編譯的時候cwygin存在一個叫l(wèi)lrint的問題, 如果遇到這個問題
    (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 有一些應(yīng)用需要額外的配置

還有一些應(yīng)用, 用到的時候需要一些些額外的配置, 一并總結(jié)一下:

4.3.1 ssh服務(wù)在cygwin上架設(shè)指南

sshd服務(wù)在cygwin上默認(rèn)是不開啟的, 可能是出于安全的需要. 但是有些服務(wù)可能需要
cygwin作為一個sshd服務(wù)器. 這時你需要手動打開sshd服務(wù).[4]

1) 先確認(rèn)一下cygrunsrv.exe 已經(jīng)安裝. 

    whereis cygrunsrv

2) 生成ssh_config文件

這時候并不能起動sshd服務(wù)的, 先運行ssh-host-config 會提示你一些信息, 照著做就是
了, 多數(shù)是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服務(wù)用: net start sshd 或 cygrunsrv --start sshd; 停止sshd服務(wù)用:net
stop sshd 或 cygrunsrv --stop sshd


5. cygwin的一些問題及解決

5.1 如何改變home目錄

如果要改變home目錄則要編輯cygwin.bat, 具體如下:在bash命令之前加入set HOME=<用
戶目錄>, 比如:

set HOME=/home/g

此用戶目錄設(shè)置在/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目錄下拷由一個現(xiàn)成的, 稍加改動就可以了.

5.3 cygwin下中文中現(xiàn)亂碼問題

在cygwin下用make編譯程序, 往往會出現(xiàn)亂碼. 這主要是因為cygwin對中文的支持不是很
理想引起的. 解決的辦法是將環(huán)境變量LANG設(shè)成UTF-8, 暫時不用中文, 在~/.bashrc文件
中加入下面的一句話:

    export LANG=UTF-8

[參考資料]:

[1]Cygwin User's Guide, cygwin官方網(wǎng)站,
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服務(wù)的putty自動登錄問題, http://markli.javaeye.com/blog/39661
[5] Cygwin上的ssh服務(wù)的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