Picture

Hi, I'm Ertuğrul Erata.

Pardus and PisiLinux ex-packager

Pisi build in Docker - I

Pisi paketlerini chroot içinde derleyerek bağımlılıkları düzeltmek ve dağıtık bir farm için altyapı hazırlamak için docker kullanmayı planladık.

Bunun için İlker Manap @ilkermanap, pisi-chroot-build uygulamasını yazdı.

Bu uygulama ile kolayca pisilinux için pisi çalıştıran base hazırlayabiliyoruz. bu şekilde hazırlamış olduğum içerisinde 75 tane pisi paketinin olduğu 190Mb civarında büyüklüğü olan base imajı burada.

Bu imajın üzerine derleme için gereken make, gcc ve diğer uygulamaların da dahil olduğu bir imaj hazırladım. Bu imajın inşa dosyaları burada, kendisi de burada.

Tamam da bunları nasıl kullanacağız? ilk önce docker kurmalısınız. Docker PisiLinux ana deposunda mevcut. Bu yazıyı yazdığımda henüz derlenmemişti farm depodaki pisi paketini

pisi it docker

ile kurun.

Docker için gereken çekirdek desteği PisiLinux’ta açık ancak henüz /etc/fstab da cgroup ile satırı olmadığı için cgroup u elle bağlıyor ve docker servisini çalıştırıyoruz.

bunun mutlaka tamamlanması gerek. ( cgroupfs-mount konusu mudur içinde halloldu, docker servis olarak başlatılırken hata veriyor. )

sudo docker -d

Şimdi kota probleminiz olmadığını varsayıyorum farm veya base imajı çekebilir, paket derleyebilirsiniz.

pisi-chroot-base ve farm da kullanılan pisi dosyaları yeni binutils ve glibc ile derlenmiştir. Bu nedenle bu sistemde oluşan pisi’lerin kullanmakta olduğunuz sistem ile uyumlu olmadığı ve problem çıkartabileceği varsayılır.

pisi-chroot-build ve pisi-chroot-farm kodlarını incelerseniz öncelikli paketler deposunun manap.se/pisi ve kaynak deposunun https://github.com/ertugerata/PisiLinux/tree/Pisi-2.0 dalı olduğu görülür.

ilk olarak base imajı veya farm imajını çekmelisiniz.

sudo docker pull ertugerata/pisi-chroot-farm

işlem tamamlandığında

Pulling repository ertugerata/pisi-chroot-farm
5599ec6d57ca: Download complete 
3290615324f4: Download complete 
2b691f7e1007: Download complete 
b725b4624bd4: Download complete 
f78c43205c91: Download complete 
4c7038edae83: Download complete 
0bb137624718: Download complete 
a50d8f5355d8: Download complete 
Status: Image is up to date for ertugerata/pisi-chroot-farm:latest

görececeksiniz. docker servisinin çalıştığı terminalde de

INFO[1041] +job log(pull, ertugerata/pisi-chroot-farm:latest, ) 
INFO[1041] -job log(pull, ertugerata/pisi-chroot-farm:latest, ) = OK (0) 
INFO[1041] -job pull(ertugerata/pisi-chroot-farm, latest) = OK (0)

benzer satırlarını görmelisiniz, görüyorsanız artık hazırsınız.

Ben şöyle yapıyorum; derleyeceğim paketin adı acl olsun, ilk önce bir dizin oluşturuyorum d_acl, ve içine bir Dockerfile hazırlıyorum.

mkdir d_acl
vim Dockerfile

cat d_acl/Dockerfile 
#ertugerata/d-acl
FROM ertugerata/pisi-chroot-farm
MAINTAINER Ertuğrul Erata <ertugrulerata@gmail.com>
VOLUME /var/cache/pisi/packages
VOLUME /var/cache/pisi/archives
RUN service dbus start && pisi bi acl --ignore-safety -y && service dbus stop

sonra o dizinin içine giriyor ve

docker build . 

ile imaj dosyasını oluşturmaya çalışıyorum. aşağıdakine benzer bir log ile tamamlanmasını gerekir.

gmake[2]: Leaving directory '/var/pisi/acl-2.2.52-5/work/acl-2.2.52/man/man3'
gmake[1]: Leaving directory '/var/pisi/acl-2.2.52-5/work/acl-2.2.52/man'
DEBUG: return value for "make -j5 DESTDIR=/var/pisi/acl-2.2.52-5/install install install-lib install-dev" is 0
DEBUG: return value for "install -m0644 "README" /var/pisi/acl-2.2.52-5/install/usr/share/doc/acl" is 0
DEBUG: /bin/setfacl [stripped]
DEBUG: /bin/chacl [stripped]
DEBUG: /bin/getfacl [stripped]
DEBUG: Removing special libtool file: /var/pisi/acl-2.2.52-5/install/lib/libacl.la
DEBUG: /lib/libacl.so.1.1.0 [stripped]
DEBUG: Path /usr/share/man/man3 belongs in multiple packages
Building package: acl
Creating acl-2.2.52-5-p01-x86_64.pisi...
Building package: acl-devel
Creating acl-devel-2.2.52-5-p01-x86_64.pisi...
Keeping build directory
Stopping DBus
 ---> 8c4755d5fb24
 Removing intermediate container 8dfa9c6b7903

Paket normal olarak oluşmuş ve docker imajının root dizini altındadır. Oluşmaz ise ne olur, ne yapmak lazımdır, hatalar nasıl bulunur ve giderilir, bunlar yazılarımızın devamında gelecek.