MSYS2 簡單教學

簡單介紹 MSYS 2 與其使用方法。

MSYS2 是一套在 Windows 下模擬 Linux 環境的開發工具,它使用 Linux 的 Shell 環境進行操作,由 Pacman 來管理套件集合了許多好用的開發套件。

在 MSYS2 中可以安裝許多軟體如: Git、OpenSSL、Perl、SSH、Python等等,你單純可以把它當作這些工具的管理系統。不過最廣泛的用途還是拿來搭建C/C++的編譯環境。

安裝

官網

首先到官網下載 MSYS2 的安裝檔

官網下載

下載完後執行安裝檔(一直 Next 就行了)

選擇安裝位置,沒有特殊需求可以直接略過

開始功能表設置,一樣 Next

等待安裝

安裝完成, Next

Finish

如果有勾選 Run MSYS2 64bit now 就可以看到 MSYS2 的執行視窗囉

MSYS2 Environment

MSYS2 中有三大種類套件:msys、mingw32、mingw64

msys2: 全體環境皆能使用
mingw32: 只能在 MINGW32 環境下使用
mingw64: 只能在 MINGW64 環境下使用

打開 MSYS2 的安裝目錄(預設是 C:\msys64),裡面有三種不同的執行環境。

也就是說
msys2.exe 可以執行 msys2 種類的套件
mingw32.exe 可以執行 msys2 和 mingw32 種類的套件
mingw64.exe 可以執行 msys2 和 mingw64 種類的套件

不清楚沒關係,其實只需要知道:

  • 編譯或使用32位元的程式需要開啟 mingw32.exe 和安裝 mingw32 類型的套件
  • 編譯或使用64位元的程式需要開啟 mingw64.exe 和安裝 mingw64 類型的套件

至於 pacman 要在哪個環境下執行都可以

Linux like 的環境系統

MSYS2 的終端環境與 Windows 的 CMD 環境有些區別,這裡列出一些我覺得比較需要注意的差異。

絕對路徑表達方式

  • 在 windows 中絕對路徑的開頭為 <磁碟機代號>:\ ,而在 MSYS2 中要改成 /<磁碟機代號>/,例如:

    C:\Windows\System32 -> /c/Windows/System32

環境變數

  • 在 windows 中環境變數的表達方式為 %<變數名稱>%, 在 MSYS2 中要改成 $<變數名稱>。例如:

    echo %PATH% -> echo $PATH

  • 在 windows 中設定環境變數是用 set,在 MSYS2 中要用 export,例如:

    set test=123456 -> export test=123456

  • 在 windows 中設定分隔 PATH 路徑是用 ;,在 MSYS2 中要用 :,例如:

    set PATH=C:\Python27;%PATH% -> export PATH=/c/Python27:$PATH

Pacman套件管理系統

pacman 是 Arch Linux 的預設套件管理器,也被 MSYS2 用來最為管理系統,接下來會示範一些常用的基本功能。

套件庫更新

pacman -Syu

第一次執行 MSYS2 通常都會先更新套件至最新版本,y 代表的是更新軟體資料庫 u 代表的是更新套件,執行這行的意思有點像 Ubuntu 裡 apt update 再 apt upgrade。

輸入 y 按 Enter 開始更新

如果有看到如上圖底下的字樣,需要關閉目前的終端並重新啟動。
(沒有遇到的話到這裡就更新完成了)
輸入 y 按 Enter 或是 直接關閉終端都可以。

關閉完後再重新啟動,並重新執行 pacman -Syu 即可完成更新。

pacman -Syu

套件庫搜尋

pacman -Ss <搜尋字串>

<搜尋字串> 支援正規表達式

搜尋的結果通常都會很多,建議先到網路上查詢需要安裝那些套件會比較快。

使用 pacman 搜尋 git

搜尋列表結構:
以 pacman -Ss git 第一筆搜尋結果為例

套件種類即為上面提到的 MSYS2 三種環境: msys2、mingw32、mingw64

安裝套件

pacman -S --needed <套件名稱>

在使用時建議加上 needed 參數,加上該參數後會自動跳過已安裝的套件。

同樣在已安裝 git 的情況下

加上參數 –needed

沒有加上參數 –needed

上面兩張圖是同樣在已安裝 git 的情況下再安裝 git 和 python,可以看到如果沒有加上參數 pacman 會選擇重新安裝套件而不是跳過,沒有特殊需求的話只是多此一舉而已。

  • 發現安裝的套件比自己輸入的還要多是正常的(上圖多安裝了 mpdecimal),很多程式依賴其他套件才能正常運作,這些被需要的套件稱為依賴套件,pacman 會幫我們一並把這些依賴套件安裝好。

查詢已安裝套件

列出所有已安裝套件

pacman -Q

pacman -Q

查詢特定套件

pacman -Qi

pacman -Qi

解除安裝套件

單純解除安裝指定套件

pacman -R <套件名稱>

pacman -R <套件名稱>

一同移除依賴套件

pacman -Rs <套件名稱>

pacman -Rs <套件名稱>

  • 要注意如果解除安裝的套件被其他套件依賴,在解除安裝時會一並把依賴它的套件一起移除(因為缺少依賴套件就不能正常運作了)
Built with Hugo
Theme Stack designed by Jimmy