Wine Nedir? Nasıl Kullanılır?
macOS ortamında, kimi durumlarda çoklu platform desteği olmayan ve dolayısıyla macOS’a uygun olmayan uygulamalara ihtiyaç duyabilmekteyiz. Bu gibi durumlarda disk bölümlendirerek farklı işletim sistemlerini kullanmak (Boot Camp) mümkün olsa da pratik olduğu söylenemez.
Sıklıkla kullanımın söz konusu olmadığı durumlarda gereksiz alan harcanmasını önlemek maksadıyla sanal makine (virtual machine) uygulamalarından faydalanılabilmekte. Parallels Desktop1 ve VMware Player2 gibi uygulamalar bu sayede pek çok işlemi gerçekleştirme imkanı sunabilmekte. Ancak sanal makine oluşturmak amacıyla kullanılan bu uygulamalar içerisinde de işletim sistemleri barındırılmakta. 1-2 defa ya da çok sık olmayan, geniş zaman gereksiniminde söz konusu olan durumlarda daha farklı çözümler (öykünücüler ve diğer) değerlendirilebilmekte. İşte Wine bu çözümlerden biri ve amacı ihtiyaç duyulan uygulamaları çalışmaya yarayan bir uyumluluk katmanıdır.
Wine
Wine (WineHQ) uygulaması isim olarak Wine Is Not an Emulator (Wine Bir Öykünücü Değildir) kelimelerinin kısaltılmasından almaktadır. macOS, Android, Linux (işletim sistemi çekirdeği) türevleri, FreeBSD ve benzeri POSIX uyumlu işletim sistemlerinde Windows uygulamalarının çalıştırılabilmesini mümkün kılmaktadır. Adından da anlaşılacağı üzere Wine3 bir öykünücü değil bir uyumluluk katmanıdır. Yani, Windows mantığındaki sanal makine veya öykünücü yerine Windows API istemlerini POSIX (UNIX için taşınabilir işletim sistemi arabirimi) istemlerine dönüştürür. Bu sayede performans ve bellek kayıplarının da önüne geçilmiş olunur. Uygulamanın dezavantajı bu anlamda sınırlı bir uygulama erişimi sunmasıdır. Uygulamaların listesini Wine Application Database (AppDB)4 üzerinden takip edebilirsiniz. Winetricks5 gibi ek kütüphanelerle desteklenen uygulamaların sayısını artırabilirsiniz6. Ücretsiz, açık kaynağa sahip Wine uygulamasını indirmek için Download7 sayfasındaki güncel sürüm ve paketleri inceleyebilir, geliştirme veya stabil paketlerden sizin için uygun olanı kolaylıkla indirebilirsiniz.
Wine Kullanımı
Öncelikle indirme ve kurulum işlemlerini gerçekleştirelim. Bu amaçla uygulamanın Download sayfasından ilgili işletim sistemi ve dağıtımdaki güncel sürüm üzerinden paket seçimini yapabilirsiniz. Ya da daha pratik bir işlem olarak paket yöneticisi kullanarak yükleme işlemini komut vasıtasıyla gerçekleştirebilirsiniz8. macOs için homebrew paket yöneticisini kullanarak indirme adımlarını tamamlayalım. Öncelikle paket yöneticisine ait kütüphanede tanımlı stabil ve geliştirme paketlerine bakalım.
brew info wine
Uygulamanın kütüphanede tanımlı olduğunu ve güncel sürüm bilgilerini görüntülediğimize göre yükleme işlemini başlatabiliriz.
brew install wine
Ubuntu için ise aşağıdaki komut ile indirme işlemini gerçekleştirebiliriz.
sudo apt-get install --install-recommends winehq-stable
Yapılandırma işlemlerinin tamamlanmasının ardından Wine ile Windows uygulamalarını çalıştırmaya başlayabiliriz. Öncelikle go ile basit bir işlem tanımlayıp hello.go
olarak kayıt ettim.
package main
import (
"fmt"
)
func main() {
fmt.Println("Hello World!")
}
Bu kodun temel amacı ekrana Hello World! yazdırmak. Ardından, Windows için exe
olarak hello
adıyla build ettim9.
GOOS=windows GOARCH=386 go build -o hello.exe hello.go
Bu işlemlerin ardından elimde Windows işletim sisteminde çalıştırılabilen hello.exe
adında basit bir uygulama oldu. Artık Wine ile bu dosyamı çalıştırabilirim10. Bunun için wine
komutundan sonra ilgili uygulamanın yolunu tanımlamalıyım.
wine ./hello.exe
Evet, hepsi bu kadar. Komutu onayladığımda ekranımda Hello World! yazısı çıkmakta. Daha detaylı bir işlem gerçekleştirelim ve bu defa Visual Studio Code uygulamasının Windows pakedini indirelim11. İndirilen kurulum dosyasını (VSCodeSetup-ia32-1.23.1.exe
ve benzeri bir isim olarak indirilecektir) Wine ile başlatalım.
wine ./VSCodeSetup-ia32-1.23.1.exe
Komutu uygulamanızın ardından terminal ekranında aşağıdaki gibi bir dizi işlem bildirimi görüntülenecektir.
wine ./VSCodeSetup-ia32-1.23.1.exe
0009:fixme:actctx:parse_depend_manifests Could not find dependent assembly L"Microsoft.Windows.Common-Controls" (6.0.0.0)
0009:fixme:process:SetProcessDEPPolicy (1): stub
0033:fixme:actctx:parse_depend_manifests Could not find dependent assembly L"Microsoft.Windows.Common-Controls" (6.0.0.0)
0033:fixme:process:SetProcessDEPPolicy (1): stub
0033:fixme:win:DisableProcessWindowsGhosting : stub
0033:fixme:graphics:ShutdownBlockReasonDestroy (0x10086): stub
0033:fixme:graphics:ShutdownBlockReasonCreate (0x10086, L"Installing"): stub
0033:fixme:rstrtmgr:RmStartSession 0x50b00c, 0, 0x50b010 stub!
0033:fixme:graphics:ShutdownBlockReasonDestroy (0x10086): stub
0033:fixme:graphics:ShutdownBlockReasonCreate (0x10086, L"Installing Visual Studio Code."): stub
0033:fixme:msg:ChangeWindowMessageFilterEx 0x10094 c057 1 0x0
0033:fixme:msg:ChangeWindowMessageFilterEx 0x20094 c057 1 0x0
0033:fixme:msg:ChangeWindowMessageFilterEx 0x1009c c057 1 0x0
0033:fixme:msg:ChangeWindowMessageFilterEx 0x2009c c057 1 0x0
0033:fixme:shell:SHAutoComplete stub
0033:fixme:win:WINNLSEnableIME hwnd 0x100ba enable 0: stub!
0033:fixme:win:WINNLSEnableIME hwnd 0x100ba enable -1: stub!
Bildirimlerin hemen ardından da kurulum ekranı karşınıza çıkacaktır.

Bu pencere üzerinden Windows işlerim sisteminde olduğu gibi kurulum işlemlerini devam ettirerek sonlandırabilirsiniz. Görüldüğü üzere işlemler oldukça hızlı bir şekilde gerçekleştirilebilmekte. Bu aşamada unutulmaması gereken kullanmak istediğiniz Windows tabanlı uygulamanın destekleniyor olması. Peki, kullanım sıklığına bağlı olarak bu işlemleri bir kısayol oluşturarak gerçekleştirmek isterseniz?
Dock Icon Oluşturmak (Uygulama Kısayolu)
Windows uygulamasını her kullanım gereksiniminde, tekrar tekrar kod yazmadan Wine üzerinden hızlı bir şekilde başlatmak istediğinizi varsayalım. Bu durumda elbette uygulama kısayolu oluşturmak, dock bar alanında bu kısayolu barındırmak işimizi çözecektir. Bu işlem için AppleScript bize yardımcı olacak. Öncelikle Script Editor (Applications > Utilities > Script Editor.app) isimli uygulamayı açmamız gerekmekte. Uygulamayı açtıktan sonra aşağıdaki AppleScript kodunu dosya alanına yapıştırabilirsiniz.
tell application "Terminal"
do script "/usr/local/bin/wine /$DOSYA_YOLU.exe"
end tell
$DOSYA_YOLU
alanına otomatik olarak çalıştırılmasını istediğiniz dosya yolunu yazmalısınız. Örneğin Desktop
alanındaki hello.exe
dosyasını çağırmak için kodu şu şekilde düzenlemem yeterli olacaktır.
tell application "Terminal"
do script "/usr/local/bin/wine /Users/kullaniciadi/Desktop/1.exe"
end tell
Bu editör üzerinden uygulama erişimlerini yönetmeye de devam edebilirsiniz. Ancak amacımız kısayol oluşturmak olduğu için devam edelim. Editörde düzenlediğimiz kodu Kayıt Et (Save) seçeneği ile kayıt edelim. Bu aşamada File Format olarak Application seçeneğini belirtmeniz durumunda kodunuz uygulama gibi davranacaktır ve çift tıkladığınızda belirttiğiniz kodu işleme alacaktır. Kayıt ettiğiniz dosyası Dock Bar‘a taşıyarak kısayol haline getirebilirsiniz.
- Parallels Desktop. Virtual Machine for Mac ↩
- VMware. Delivering a Digital Foundation for Business ↩
- David Baumgold. Installing Wine on Mac ↩
- WineHQ. Wine Application Database ↩
- Winetricks. WineHQ Wiki ↩
- Winetricks. Ubuntu Wiki ↩
- WinwHQ. Linux, BSD, Solaris ve macOS üzerinde Windows uygulamaları çalıştırın ↩
- Polat Buyukarslan. (2017). WineHQ Nedir? Nasıl Kurulur? (Ubuntu/Linux Mint) ↩
- WindowsCrossCompiling. Building Windows Go programs on Linux. golang/go. GitHub ↩
- Wine Nedir? Nasıl Kurulur?. Ubuntu Forum ↩
- Download Visual Studio Code ↩