許多從Windows系統換到Linux的使用者總是會對Windows上的軟體念念不忘,儘管Windows系統不怎麼好用,但Windows上還是有一些在Linux上無法取代的好用軟體,例如Notepad++、Foobar2000、WinRAR,這些軟體的確令人愛不釋手。在任何系統上,都可以藉由安裝虛擬機(Virtual Machine)來模擬出其它環境的系統,執行該系統上的程式。但是一台虛擬機所需要的硬體需求頗大,而且還要花費氣力在虛擬機上安裝系統,不見得是一個很好的解決方案。所幸在Linux上,有一個叫作「Wine」(別懷疑,就是紅酒)的開放原始碼專案,可以在Linux上不透過虛擬機,輕易地執行Windows程式。
Wine的官方網站:
Wine的原理與演進
Wine究竟是如何工作的呢?Wine並不是一個Windows的模擬器,因此開發團隊必須將Windows上的函式庫(WinAPI)從底層開始慢慢地重新移植到Unix-like的環境下,而且由於兩個系統上本身實作Process或Thread等Kernel Mode端的系統功能方式不同,Wine必須要提供另一個介面來協助這兩個平台內部的溝通。因此,使用Wine執行Windows的程式時,必須再經由Wine來進行API轉換,等於多了一道手續,會讓程式執行效率稍微下降一些,但在大部分的情況下會比使用虛擬機還要來得有效率。
筆者在剛踏入Linux的世界的時候,當時的Wine所能支援的Windows程式非常的少,而且如果遇到中文的程式,還會出現方格亂碼,需要進行一連串的設定才能調整到能正常顯示,並不是一般使用者可以輕易使用的軟體。但隨著Wine的版本演進,已經可以支援愈來愈多的Windows程式了,而且效能也有愈來愈好的趨勢,已經算是一個好用而且十分便利的軟體了。
Wine的安裝方法
各個Linux發行版的Wine安裝方法可以直接在Wine的官方網站上找到。
如果是Ubuntu 18.04或是Ubuntu 18.04衍生出來的Linux發行版,可以直接使用以下指令來安裝最新穩定版本的Wine:
sudo dpkg --add-architecture i386 && curl -fsSL https://dl.winehq.org/wine-builds/winehq.key | sudo gpg --dearmor -o /usr/share/keyrings/winehq-archive.key && sudo apt-add-repository "deb [signed-by=/usr/share/keyrings/winehq-archive.key] https://dl.winehq.org/wine-builds/ubuntu/ $(cat /etc/os-release | grep UBUNTU_CODENAME | cut -d '=' -f 2) main" && sudo apt update && sudo apt install --install-recommends winehq-stable
接著執行以下指令來初始化:
Wine的路徑
在Wine的環境中,也是有「C磁碟機」或稱「C槽」(C:)這樣的東西,它的實體路徑就在~/.wine/dosdevices/c:
下,在這個目錄可以找到安裝軟體時通常會放置的Program Files
目錄,以及系統檔案使用的Windows
目錄。
Wine的「新增/移除程式」
使用Wine來安裝Windows程式很簡單,但是安裝完要如何移除呢?只要輸入以下指令,就可以開啟Wine的「新增/移除程式」。
用Winetricks來強化Wine
Winetricks是一個協助使用者更容易使用Wine的開放原始碼專案,通常會使用Winetricks來替Wine安裝更多的DLL(動態連結函式庫)或是其他元件,讓Wine能支援更多的Windows程式。
如果要安裝Winetricks,只要在終端機執行以下指令即可:
安裝完後,在終端機下輸入以下指令,就可以開啟Winetricks。
Winetricks有許多功能可以用,他能用來快速安裝Windows上的應用程式、跑分軟體甚至是遊戲。
如果要使用Winetricks來安裝DLL或是其他元件,那在Winetricks一開始的選單中先選擇Select the default wine prefix
,按下確定按鈕後,接著再選擇Install a Windows DLL or component
。
接著就可以自己選擇要安裝的項目啦!連.NET Framework和DirectX都能安裝呢!
在Linux上執行Windows程式
將Wine安裝並設定好,且也安裝好執行Windows程式所需的元件後,就可以直接透過Wine來執行Windows程式了!
一般來說,在安裝完Wine之後,就可以直接在桌面環境下用一般執行程式的方式來執行Windows的EXE檔案。不過也可以在終端機內使用wine
指令來傳入一個Windows的EXE檔案路徑來執行。