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.

AA

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.

Wine macos windows

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.