許多從Windows系統換到Linux的使用者總是會對Windows上的軟體念念不忘,儘管Windows系統不怎麼好用,但Windows上還是有一些在Linux上無法取代的好用軟體,例如Notepad++、Foobar2000、WinRAR,這些軟體的確令人愛不釋手。在任何系統上,都可以藉由安裝虛擬機(Virtual Machine)來模擬出其它環境的系統,執行該系統上的程式。但是一台虛擬機所需要的硬體需求頗大,而且還要花費氣力在虛擬機上安裝系統,不見得是一個很好的解決方案。所幸在Linux上,有一個叫作「Wine」(別懷疑,就是紅酒)的開放原始碼專案,可以在Linux上不透過虛擬機,輕易地執行Windows程式。



Wine的官方網站:

https://www.winehq.org/

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 && wget -O - https://dl.winehq.org/wine-builds/winehq.key | sudo apt-key add - && sudo apt-add-repository "deb 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的路徑

在Wine的環境中,也是有「C磁碟機」或稱「C槽」(C:)這樣的東西,它的實體路徑就在「~/.wine/dosdevices/c:」下,在這個目錄可以找到安裝軟體時通常會放置的「Program Files」目錄,以及系統檔案使用的「Windows」目錄。

如果您並未找到這個路徑下的目錄,可能是因為Wine尚未配置Windows環境,只要隨便執行一個Windows程式就可以自動配置了。

Wine的「新增/移除程式」

使用Wine來安裝Windows程式很簡單,但是安裝完要如何移除呢?只要輸入以下指令,就可以開啟Wine的「新增/移除程式」。

wine uninstaller

用Winetricks來強化Wine

Winetricks是一個協助使用者更容易使用Wine的開放原始碼專案,通常會使用Winetricks來替Wine安裝更多的DLL(動態連結函式庫)或是其他元件,讓Wine能支援更多的Windows程式。

Winetricks已包含在「ubuntu-wine/ppa」內,如果要安裝Winetricks,只要輸入以下指令即可:

sudo apt-get install winetricks

安裝完後,在終端機下輸入以下指令,就可以開啟Winetricks。

winetricks

Winetricks有許多功能可以用,他能用來快速安裝Windows上的應用程式、跑分軟體甚至是遊戲,但是筆者不是很建議直接使用Winetricks來裝這些軟體。因為會有語言不合以及版本過舊的問題。

如果要使用Winetricks來安裝DLL或是其他元件,那在Winetricks一開始的選單中先選擇「Select the default wine prefix」,按下確定按鈕後,接著再選擇「Install a Windows DLL or component」。

接著就可以自己選擇要安裝的項目啦!連.NET Framework和DirectX都能安裝呢!

在Linux上執行Windows程式

將Wine安裝並設定好,且也安裝好執行Windows程式所需的元件後,就可以直接透過Wine來執行Windows程式了!

wine

一般來說,在安裝完Wine之後,就可以直接在桌面環境下用一般執行程式的方式來執行Windows的EXE檔案。不過也可以在終端機內使用「wine」指令來傳入一個Windows的EXE檔案路徑來執行。

在Windows上執行Linux程式

既然Linux系統或是其他Unix Like的系統可以靠Wine來輕鬆執行Windows的程式,那Windows有沒有辦法也不透過虛擬機來輕易執行Linux程式呢?目前還是不太行的,只能等待Cygwin的後續發展。