PisiLinux için yeni bir altyapı…
Merhaba bugün sizlere PisiLinux için geliştirilen dağıtık derleme çiftliğinden bahsedeceğim biraz. Öncelikle dağıtık derleme çiftliği uygulaması sevgili İlker Manap tarafından geliştirilmektedir. Dağıtık derleme çiftliğinde daha öncekinden farklı olarak docker alt yapısı kullanıldı. Docker içinde ise sevgili Ertuğrul Erata tarafından hazırlanan docker imajı kullanılmaktadır. bu imajı hazırlarken çok emek harcadı ve temel sistemi 75 pakete kadar indirdi.
Peki bu docker nedir ve ne işe yarayacak?
Öncelikle docker ile sanal bir sistem oluşuyor ve hazırlanan docker imajı ile tüm kullanıcılarda aynı derleme ortamı elde ediliyor. Böylece paket derlemede standart bir sistem kullanılmış oluyor ve uygulamaların yanlış kitaplıklara bağlantılanması (linklenmesi) engellenmiş oluyor.
Docker uygulaması PisiLinux deposunda yer almaktadır. Öncelikle docker uygulamasını aşağıdaki komutu kullanarak bilgisayarımıza kuruyoruz.
pisi it docker
docker ı çalıştırmak için ise aşağıdaki komut kullanılıyor
sudo docker -d -s overlay
Docker’ı çalıştırdıktan sonra sıra docker imajının yerele alınmasında. Bunun için ise öncelikle yeni bir konsol açıyoruz ve aşağıdaki komutu kullanıyoruz.
sudo docker pull ertugerata/pisi-chroot-farm
Tüm satırlarda “Download complete” yazdığında docker imajı sistemimizde hazır demektir.
NOT: Eğer docker imajı yenilenirse aynı şekilde sudo docker pull ertugerata/pisi-chroot-farm ile güncellemek gerekir.
Docker bilgisayarınızdaki sistemden izole bir ortam oluşturduğundan derleme için kullanacağımız dizinleri ilk çalıştırma esnasında docker’a bağlamamız gerekmektedir. Örnek olarak aşağıdaki komutta git adı ile PisiLinux_2.0 dizinini, root adıyla build dizinini, archives ve packages adıyla ana sistemin archives ve packages dizinlerini bağlamış oluyoruz docker’a.
sudo docker run -v /home/PisiLinux/Masaüstü/PisiLinux_2.0:/git -v /home/PisiLinux/Masaüstü/Pisi2.0/build:/root -v /var/cache/pisi/archives:/var/cache/pisi/archives -v /var/cache/pisi/packages:/var/cache/pisi/packages -itd ertugerata/pisi-chroot-farm bash
Sonra aşağıdaki komut ile çalışan konteynırları görüyoruz. Her defasında bu şekilde kontrol etmemiz gerekiyor çünkü docker her çalıştırmada yeni bir konteynır ile başlıyor.
sudo docker ps
NOT: Eğer derleme ortamı için aynı konteynırı kullanacaksak
sudo docker ps -a ile tüm konteynırlar listelenir ve kullanmak istediğimiz konteyner aşağıdaki komut ile çalışır hale getirilir.
sudo docker start konteynır_adı
komutlarını kullanıyoruz. Dikkat edilmesi gereken konu her iş bitiminde /var/pisi dizininin temizlenmesi gerekliliğidir. Zamanla orada biriken derleme dosyaları docker imajını doldurabilir. Bunun için
rm -r /var/pisi komutunu kullanıyoruz. Diğer bir önemli nokta ise docker imajı yenilendiğinde konteynırlar değişeceğinden
sudo docker ps ile konteynır ismine bakıyoruz ve daha sonra o konteynırı yukarıda bahsettiğim gibi sürekli bağlayıp kullanabiliyoruz.
Şimdi de çalışlan konteynırımızı docker’a ekleyelim. Bunun için konteyer_adı yazan yere konteynır adını yazarak Enter’a basıyoruz
sudo docker attach konteynır_adı
Şuan itibariyle docker içindeyiz. Pisi paketlerimizi yapmaya başlamadan önce her defasında şu komutu kullanarak dbus servisini başlatıp pisi paket deposunu güncelliyoruz:
service dbus start && pisi ur
Son olarak bağladığımız dizinler yerinde mi bir kontrol edelim.
ls /git
şuanda bu komut ile git dizini olarak bağlamış olduğum PisiLinux_2.0 dizi içindeki dizinleri görüyorum. Dikkat edilirse birden fazla dizin var. Bunun nedeni derlemede kullanacağım kaynak dosya dizinlerini PisiLinux_2.0 dizini altında toplamış olmamdır.
Artık pisi paketlerini derlemeye başlayabiliriz. Aşağıdaki komutta yer alan /git/… alanına derlenecek uygulamanın pspec.xml dosyasının tam adı yazılır ve derleme işlemine başlanır.
pisi bi /git/main/…/pspec.xml -d –ignore-safety
Derleme esnasında eksik bağımlılık söz konusu olunca önce eksik bağımlılık core reposunda varsa kurulur yoksa eksik bağımlılık derlenerek kurulur sonra önceki paketin derleme işleminde devam edilir. Bu arada derleme esnasında tespit edilen eksik *-devel bağımlılıkları pspec.xml dosyasında BuildDependencies altına eklenir. Derleme işlemi bittikten sonra ise
checkelf -s -x *.pisi
komutuyla çalışma zamanı bağımlılıklarını tespit ediyoruz ve bunlarıda RuntimeDependencies altına ekliyoruz.