? 本文共4400餘字,閱讀約需12分鐘,本文知乎鏈接Cygwin系列(四):一步一步搭建Cygwin最小系統:本文同步發佈於微信公眾號。


經過前面連續4篇文章對Cygwin的充分介紹,相信你對Cygwin也有了準確認識,本文將帶你一步一步搭建Cygwin最小系統環境。

軟體包和包管理器

UNIX/Linux系統上,二進位程序文件、函數庫、文檔、源代碼等通常是按照軟體包(Package)的形式組織,一個軟體包是一個或多個應用程序、函數庫、幫助手冊頁、文檔組成的壓縮檔。Cygwin繼承了先輩UNIX/Linux系統的優良傳統,也採用這種方式。

Cygwin由核心的Cygwin DLL(被包裝在cygwin包中)和基於Cygwin DLL移植GNU、BSD等開源項目的海量軟體包組成。那麼,怎麼有效管理這些軟體包呢?一股腦全部一起打包發布不是一個明智的選擇,不僅要消耗很大的網路流量和硬碟空間,而且用戶也不是所有的軟體包都需要用到。Cygwin系列(二):初窺Cygwin背後 中說過,2000年4月,項目宣布了新的發布方式:額外提供一個不依賴於Cygwin的Windows原生程序——setup.exe,與Cygwin DLL獨立,用於安裝、更新、卸載軟體包。從功能角度講,setup有點「名不符實」,或許叫「Package Manager」更恰當。

Cygwin發展到支持64位,包管理器、軟體包也自然分成32位和64位兩套。32位的包管理器程序為setup-x86.exe,64位的為setup-x86_64.exe,x86和x86_64分別是32位和64位指令集代稱。以下未明確32/64位硬體平台時,setup泛指其中一個。

為特別區別於Windows程序安裝卸載習慣,在此再強調,setup不是一次性的安裝卸載程序,而是可用於安裝、更新、卸載軟體包的包管理器,負責軟體包在本地從生到死!後期對軟體包的所有管理操作都可以通過setup完成。

Step 0:事前準備工作

進入Cygwin官網找到「Installing Cygwin」,下方文字介紹中有setup-x86.exe和setup-x86_64.exe鏈接,按自己需求選擇其中一個下載即可,建議選擇64位版本。

Cygwin官網setup下載頁面

為使文件不顯得雜亂,在d盤新建一個文件夾Cygwin64,把setup-x86_64.exe也放入其中,當然你也可以把文件放在任何其他的地方,路徑最好不含空格。為方便描述,以下稱「d:Cygwin64」為CYG_ROOT,$CYG_ROOT表示對字元串「d:Cygwin64」的引用。

Step 1:選擇安裝方式

雙擊運行setup,可以看到setup自身的版本是「2.895(64 bit)」。

setup信息展示

點擊「下一步」,如圖顯示3種安裝方式:

①「Install from Internet」是指從Internet下載並安裝,下載的安裝包同時也保留在硬碟中並不刪除;

②「Download Without Installing」意思是僅下載,供後期再安裝;

③「Install Local Directory」是指從本地安裝,如果前期選擇了②,現在選擇③即可。

Step1:選擇安裝方式

把②和③兩步合併,效果就是①;此處由於是從零開始,選擇①。

Step 2:路徑設置

點擊「下一步」之後進入Step2,選擇安裝頂層路徑——Root Directory。setup可以探測到自己所處的路徑,即$CYG_ROOT,一般不用再更改;默認勾選為所有用戶安裝(Install for All Users)。

Step2:選擇頂層目錄

點擊下一步,選擇本地軟體包存放路徑,同樣可按照默認設置為$CYG_ROOT。

Step2:選擇軟體包本地存放目錄

Step 3:選擇網路連接方式

點擊「下一步」之後進入Step3,網路連接類型按默認選擇,即直接連接(Direct Connection)即可。

Step3:選擇網路連接類型

Step 4:添加/選擇下載站點

點擊「下一步」之後進入Step4,選擇下載站點,除了Cygwin官方網站,還有很多站點提供了軟體倉庫(repository)的鏡像,分布於世界各地,setup內部記錄了很多已有的站點,但沒有大陸地區。用戶還可以自行添加,下面的Add按鈕就是用來添加新站點的。僅列出國內幾個比較常用、速度較快、連接較穩定的Cygwin鏡像站點:

  • 網易開源鏡像站 mirrors.163.com/cygwin/
  • 阿里巴巴開源鏡像站 mirrors.aliyun.com/cygw
  • 華為開源鏡像站 mirrors.huaweicloud.com
  • 清華大學開源鏡像站 mirrors.tuna.tsinghua.edu.cn
  • 中科大開源鏡像站 mirrors.ustc.edu.cn/cyg
  • 華中科技大學開源鏡像站 mirror.hust.edu.cn/cygw
  • 東軟開源鏡像站 mirrors.neusoft.edu.cn/

將鏡像站點URL地址填入編輯框,點擊「Add」按鈕,鏡像站名稱即出現在選擇列表中,下一次再來直接選擇就行,注意到列表顯示內容移除了URL路徑,只保留了協議和主機名。此時發現,setup建立了$CYG_ROOTvarlog路徑,用於記錄本次安裝過程相關日誌。

Step4:添加/選擇下載站點

點擊「下一步」,setup開始下載站點的setup.ini文件,這個文件最終保存在$CYG_ROOThttps%3a%2f%2fmirrors.aliyun.com%2fcygwin%2fx86_64路徑下,其中https%3a%2f%2fmirrors.aliyun.com%2fcygwin%2f是按照站點主機名建立的路徑。

每個站點上同時有x86(32位)和x86_64(64位)兩套軟體倉庫,所以在站點名後面有繼續建立x86_64文件夾。setup.ini記錄著軟體包功能描述、版本、依賴等信息,可看做是一個軟體包索引資料庫。

Step 5:篩選軟體包及操作

點擊「下一步」之後進入Step5,篩選軟體包及操作。Cygwin軟體包被按照用分類組織,點擊「View」旁邊下來框,選擇「Category」,看到有Accessibility、Admin、Base、Devel、Doc等多個類別,一個軟體包可以屬於一個或多個類別。點擊類別前的「+」,可展開查看下面的各個軟體包。

Step5:篩選軟體包及操作

軟體包信息分成了幾欄展示:

  • Package欄是軟體包名稱;
  • Current欄是軟體包版本;
  • New欄表示要執行的動作,包括Install(安裝)、Reinstall(重新安裝和升級)、Uninstall(卸載)、Skip(忽略)、Keep(保持不變)、特定版本號,動作可以針對整個類別,也可以針對單個軟體包進行;對於未安裝的軟體包,setup默認動作是Skip,對於已安裝過的軟體包,默認動作是keep;老版本的setup將Current、New兩欄合併在一起,通過單擊雙箭頭圖標切換要執行的動作
  • Bin欄表示二進位文件、Src欄表示源代碼,老版本的setup界面上Bin和Src欄中間「x」表示選中、空表示不選、「n/a」表示沒有(not available),新版本setup不用管這兩欄;
  • Categories欄描述軟體包所屬功能類別;
  • Size欄是軟體包文件大小;
  • Description是對軟體包的簡要描述。

為構建最小系統,這裡選中Base(基本)類別,執行動作為Install,看到Base類別中包含了alternatives、base-cygwin、base-files、bash、coreutils、cygwin、mintty、util-linux等等最36個軟體包。點擊「下一步」,setup開始針對軟體包進行依賴解析(這些信息就存儲在setup.ini文件中),並把軟體包依賴的所有軟體包也全部添加進來,可以看到「依賴」中有大量以「lib」開頭的庫文件。

Step 6:執行安裝

點擊「下一步」之後進入Step6,執行安裝。setup開始下載軟體包,並在左上角顯示整體進度百分比。可以看到$CYG_ROOT https%3a%2f%2fmirrors.aliyun.com%2fcygwin%2fx86_64
elease目錄下多了很多子目錄,子目錄按照軟體包獨立組織,裡面就存放著軟體包的壓縮文件。

Step6:執行安裝

setup自動進行下載、安裝,安裝完成後自動跳轉至最後一步,選擇是否創建快捷方式和添加到開始菜單,可以都勾選上,最小系統的整個安裝過程就此結束。

安裝結束後,可以看到在$CYG_ROOT目錄下,增加了bin、dev、etc、home、lib、tmp、usr子目錄,軟體包主要安裝到bin、lib、usr中,配置文件安裝到dev、etc中,home存放用戶個人文件。

讓系統跑起來

安裝完成後,桌面上多了一個名為「Cygwin Terminal」的快捷方式,雙擊運行,看到一個黑色框框裡面輸出一些已創建文件的信息,並列印提示符,等待用戶鍵入命令。這個黑框框便是終端模擬器——mintty,mintty啟動了shell與用戶交互。輸入「help」並回車看看得到什麼,再輸入「ls /」並回車看看得到什麼,如果沒有報錯說明最小系統已經能跑起來。

第一次使用時,home目錄下創建了一個以Windows登陸用戶命名的文件夾,被稱為用戶個人目錄($HOME),個人文件都默認放在這裡,Cygwin的shell啟動後默認進入的工作路徑也是這裡。

後記

從整個安裝過程也看出,setup本質是一個軟體包的管理工具,亦即「包管理器」,用戶通過圖形界面可以方便地進行安裝、卸載、重裝、升級等工作。setup也支持在命令行中運行。

最小系統跑起來以後,後期還想安裝其他的軟體包,重複Step 1至6的過程,中間注意選擇要安裝的軟體包即可。

最小系統經過壓縮,其大小不過約幾十MB。Cygwin技術交流群(374791536)共享文件中同時提供64位和32位最小系統,解壓即可用。

UNIX/Linux/Cygwin上的邏輯、操作習慣與Windows有著巨大差異,在Cygwin中要培養以shell命令行為中心的操作習慣,暫時拋開Windows下的慣性思維。

參考

  • http://www.cygwin.com

更多閱讀

silaoA:Cygwin前傳:從割據到互補?

zhuanlan.zhihu.com
圖標
silaoA:Cygwin系列(一):Cygwin是什麼?

zhuanlan.zhihu.com
圖標
silaoA:Cygwin系列(二):初窺Cygwin背後?

zhuanlan.zhihu.com
圖標
silaoA:Cygwin系列(三):盤點與Cygwin相似和相反的項目?

zhuanlan.zhihu.com
圖標

如本文內容引起極度舒適,請轉發分享,歡迎關注與留言交流。

?本文為原創文章,如需轉載請私信知乎賬號silaoA或聯繫公眾號偽碼人(We_Coder)。

都看這裡了,不妨點個贊再走唄


推薦閱讀:
相关文章