有時(shí)候免不了要使用Windows應(yīng)用程序,于是在本教程中,我們將使用Wine教你如何在Linux上順暢地運(yùn)行Windows應(yīng)用程序。
縱然Linux軟件品種繁多,但有時(shí)候你還是覺得缺少了與Windows版對(duì)應(yīng)的某個(gè)應(yīng)用程序。需要那一個(gè)應(yīng)用程序可能有好多原因,最常見的原因恐怕是Linux不支持某一種文件格式或?qū)嶋H使用的某個(gè)應(yīng)用程序。幸好,有好多辦法可以在Linux系統(tǒng)上使用Windows應(yīng)用程序。
Wine的介紹
Wine是Wine Is Not an Emulator(Wine不是模擬器)的縮寫,其實(shí)是一個(gè)轉(zhuǎn)換層(或程序裝入器),能夠在Linux及與POSIX兼容的其他類似操作系統(tǒng)上運(yùn)行Windows應(yīng)用程序。Wine在Linux上無法模擬Windows應(yīng)用程序,而是提供了另外的方法來實(shí)施DLL(典型的Windows應(yīng)用程序可以調(diào)用這些DLL)和代替Windows NT內(nèi)核的進(jìn)程。Wine完全由非微軟代碼組成。
Wine支持?jǐn)?shù)量眾多的應(yīng)用程序,但并非全部都得到同樣的支持。可以訪問Wine應(yīng)用數(shù)據(jù)庫(AppDB, http://appdb.winehq.org),看看你常用的Windows應(yīng)用程序與Wine之間的兼容性有多好。AppDB由社區(qū)維護(hù);你也可以添加自己發(fā)現(xiàn)的應(yīng)用程序。AppDB定義了如下幾種級(jí)別類型:
白金:如果某應(yīng)用程序在“即開即用”狀態(tài)下可以順暢無阻地安裝和運(yùn)行,它可以被評(píng)為白金級(jí)。Wine配置文件不需要進(jìn)行更改。
黃金:應(yīng)用程序與一些DLL覆蓋文件、其他設(shè)置或第三方軟件可以順暢無阻地協(xié)同運(yùn)行。
白銀:就“平常”使用而言,應(yīng)用程序可以出色地運(yùn)行。比如說,游戲在單人玩家模式下運(yùn)行很好,但在多人玩家模式下不行;Windows Media Player作為插件和獨(dú)立播放器運(yùn)行很好,但無法處理數(shù)字版權(quán)管理(DRM)等。
青銅:應(yīng)用程序可以運(yùn)行,但存在一些問題,哪怕是平常使用。比如說,游戲無法正確地重新繪圖或者用錯(cuò)誤的顏色顯示字體,速度比平常慢得多,等等。
垃圾:如果應(yīng)用程序無法用于原本的用途,就會(huì)得到這個(gè)評(píng)級(jí)。如果這樣,通用軟件缺陷跟蹤系統(tǒng)Bugzilla中應(yīng)該至少有一個(gè)軟件缺陷報(bào)告。應(yīng)用程序無法安裝、無法啟動(dòng),或者就算能啟動(dòng),也有好多錯(cuò)誤,以至于幾乎沒法使用。
一. 安裝Wine
Wine適應(yīng)于所有流行的UNIX操作系統(tǒng),包括Ubuntu、Debian、Red Hat、SUSE、Mandriva、FreeBSD、Solaris和Mac OS X。
在Ubuntu上:
1. 打開Applications(應(yīng)用程序)>Ubuntu Software Center(Unbuntu軟件中心),打開Ubuntu軟件中心。
2. 然后點(diǎn)擊Edit(編輯)>Software Sources(軟件源)。選擇Other Software(其他軟件)選項(xiàng)卡,點(diǎn)擊Add(添加)。然后輸入下列apt行:
ppa:ubuntu-wine/ppa
3. 從左邊的Get Software(取得軟件)部分中選擇“PPA for Ubuntu Wine Team”,然后選擇Microsoft Windows Compatibility Layer(Development files) – wine1.3-dev。點(diǎn)擊Install(安裝)。這會(huì)安裝最新的Wine軟件包,包括開發(fā)庫。
提示:卸載現(xiàn)有的Wine軟件包,以確保最大的兼容性。另外,如果想干凈安裝,你可以刪除Wine用戶目錄,為此可以從主目錄中使用命令rm -r -v .wine。
4.在 64 位 Ubuntu 15.10 中編譯最新版 32 位 Wine
Wine 發(fā)布了最新的1.7.53版本。此版本帶來的大量性能提升,包括XAudio,Direct3D代碼清理,改善OLE對(duì)象嵌入技術(shù),更好的 Web Services DLL的實(shí)現(xiàn),還有其他大量更新。
雖然有一個(gè)官方 Wine PPA,但目前只提供1.7.44版本,所以安裝最新版本可以從源碼編譯安裝。
下載源碼包(直接下載地址在此)并解壓 tar -xf wine-1.7.53。然后,安裝如下依賴。
sudo apt-get install build-essential gcc-multilib libx11-dev:i386 libfreetype6-dev:i386 libxcursor-dev:i386 libxi-dev:i386 libxshmfence-dev:i386 libxxf86vm-dev:i386 libxrandr-dev:i386 libxinerama-dev:i386 libxcomposite-dev:i386 libglu1-mesa-dev:i386 libosmesa6-dev:i386 libpcap0.8-dev:i386 libdbus-1-dev:i386 libncurses5-dev:i386 libsane-dev:i386 libv4l-dev:i386 libgphoto2-dev:i386 liblcms2-dev:i386 gstreamer0.10-plugins-base:i386 libcapi20-dev:i386 libcups2-dev:i386 libfontconfig1-dev:i386 libgsm1-dev:i386 libtiff5-dev:i386 libmpg123-dev:i386 libopenal-dev:i386 libldap2-dev:i386 libgnutls-dev:i386 libjpeg-dev:i386
現(xiàn)在切換到 wine-1.7.53 解壓后的文件夾,并輸入:
./configure
make
sudo make install
同樣地,你也可以給配置腳本指定 prefix 參數(shù)。以普通用戶安裝 wine:
./configure --prefix=$HOME/usr/bin
make
make install
二. 安裝Wine支持包
現(xiàn)在,我們需要安裝非開源(但免費(fèi))的支持包。這包括微軟Core Fonts、Visual C++運(yùn)行時(shí)環(huán)境等軟件包。
不妨繼續(xù)深入介紹。
安裝Cabextract:
需要該軟件包來解壓縮微軟.cab文件。
$ sudo apt-get install cabextract
下載winetricks腳本:
現(xiàn)在我們需要下載一個(gè)很棒的腳本,名為winetricks,它會(huì)自動(dòng)下載和安裝必要的支持包。
$ wget http://winetricks.org/winetricks
現(xiàn)在輸入下列命令,安裝必要的支持包:
$ sh winetricks corefonts Tahoma
提示:你還可以不用任何命令行參數(shù)來運(yùn)行winetricks,那樣就能從漂亮的GUI界面選擇需要安裝的軟件包。
三. 安裝微軟Office
在本例中,我們將安裝微軟Office 2007。插入微軟Office 2007光盤,鼠標(biāo)右擊setup.exe,選擇“Open With Windows Program Loader”。這應(yīng)該會(huì)啟動(dòng)微軟Office安裝程序。以平常的方式來安裝,就像你在任何Windows系統(tǒng)上安裝那樣。
四. 建立庫
鑒于已安裝好了微軟Office 2007,我們要確保Wine已經(jīng)過配置,可以順利使用該應(yīng)用軟件。你也看到,Wine以自己的方法實(shí)施了各種Windows庫,但我們可以直接使用原生的Windows庫,確保應(yīng)用程序有最大的兼容性。Wine隨帶自己的配置工具:winecfg。除了其他功能外,該工具還讓我們可以在內(nèi)置版本的庫與原生版本的庫之間切換。
輸入命令winecfg,即可打開Wine配置工具。進(jìn)入到Libraries(庫)選項(xiàng)卡,把riched20和usp10添加到“native, builtin”。這表明,Wine應(yīng)該先試著裝入原生的Windows庫;要是沒有這些庫,它會(huì)試著裝入內(nèi)置的庫。
五. 運(yùn)行微軟Office
微軟Office現(xiàn)在應(yīng)該已出現(xiàn)在Ubuntu程序菜單中??梢韵群筮M(jìn)入到Application(應(yīng)用程序)> Programs(程序)>Microsoft Office(微軟Office)來訪問它。
這個(gè)過程確實(shí)相當(dāng)簡單。如果你只想臨時(shí)運(yùn)行某個(gè)Windows程序,假設(shè)兼容性很好,那么全都妥當(dāng)了;但是高級(jí)用戶想要再深入一步的話,需要繼續(xù)讀下去。[NextPage]
使用Winelib構(gòu)建Windows應(yīng)用程序
如果你想不受微軟的約束,Wine確實(shí)大有幫助。這年頭,連第三方的Windows應(yīng)用開發(fā)人員都要受微軟的支配。比如說,Windows多媒體應(yīng)用開發(fā)人員處理最簡單的任務(wù)都要依賴DirectX。DirectX是微軟的專屬財(cái)產(chǎn),別人誰也無法訪問不了源代碼。有一天,微軟可能會(huì)開發(fā)DirectX的一些獨(dú)特功能,由于這些功能沒有列入文檔,獨(dú)立軟件開發(fā)商訪問不了這些功能。那樣的話,Windows Media Player將是該平臺(tái)上最好的多媒體播放器,因?yàn)槠渌シ牌鞅黄纫蕾嘍irectX,又無法完全控制它。
歡迎來到Linux社區(qū):在這里,沒有什么是不可能的。
不妨再以DirectX為例。Wine以自己的方法實(shí)施了DirectX(借助Transgaming Technologies而實(shí)現(xiàn))。Wine實(shí)施了常見的多媒體應(yīng)用編程接口(API),比如Direct3D、DirectInput、DirectSound、DirectShow及其他許多API,實(shí)施的辦法就是將它們與功能強(qiáng)大的、開放的Linux對(duì)應(yīng)API聯(lián)系起來,如OpenGL、X11和ALSA/OSS API。因而,將DirectX應(yīng)用程序移植到Linux時(shí),你可以使用所有這些開放的技術(shù)。Winelib可以用作將應(yīng)用程序從Windows平臺(tái)取出來放到Linux系統(tǒng)上的第一步。然后,可以逐漸充分利用Linux提供的所有功能。
Winelib能夠在Linux上運(yùn)行和編譯Windows應(yīng)用程序,不需要Windows。Winelib是Wine項(xiàng)目的一部分。它以開源的方式實(shí)施了Win32 API,基于Linux和X Window System(如今常稱為Xorg)而建。Winelib的代碼與Wine完全共享,能夠編譯控制臺(tái)應(yīng)用程序和GUI應(yīng)用程序。它還能編譯DLL(動(dòng)態(tài)鏈接庫)等庫文件。Wine通過下列兩種方式來處理Windows源代碼。
•提供二進(jìn)制級(jí)的兼容性
二進(jìn)制級(jí)的兼容性可通過Wine本身來獲得。在此過程中,應(yīng)用程序的源代碼在Windows平臺(tái)上編譯,然后二進(jìn)制文件被移到Linux系統(tǒng)上,通過Wine來運(yùn)行。應(yīng)用程序在二進(jìn)制兼容的情況下運(yùn)行時(shí),它可以使用所有現(xiàn)有的.dll文件。這個(gè)過程相當(dāng)簡單,但無法釋放Wine子系統(tǒng)的全部功能。這與我們使用Wine來運(yùn)行微軟Office 2007的方式一模一樣。
•提供源碼級(jí)的兼容性
在該方法中,源代碼文件被移到Linux系統(tǒng)上,然后使用GCC對(duì)照Winelib庫來進(jìn)行編譯。這樣一來,應(yīng)用程序還能夠與UNIX API調(diào)用兼容,以便充分利用UNIX的全部功能。Winelib隨帶一款名為winemaker的工具,該工具可以通過VC++項(xiàng)目創(chuàng)建基于GNU標(biāo)準(zhǔn)autoconf的makefile文件。Winemaker是一個(gè)Perl腳本,負(fù)責(zé)處理轉(zhuǎn)換源代碼、使源代碼專門用于UNIX、清空用例問題及其他眾多方面的所有繁重任務(wù)。