Paketleme-2

Milis Linux’ta paketler talimat dizininde belirtilen verilere göre derlenir, yüklenir ve paketlenir. Bu belge sıfırdan bir paketin nasıl oluşturulduğunu göstermek için hazırlanmıştır.

Talimat’ın hazırlanması

Bir paketin talimatının hazırlanması için yapılacak şey gerekli bilgilerin doğru bir şekilde doldurulmasıdır. Talimat dosyasının yapısı için lütfen Talimat Sistemi belgesini inceleyin. Bu belgede talimatını hazırlayacağımız paket ‘htop’ adı verilen bir işlem monitorü.

Paket bilgileri

Paket için gerekli bilgiler toplandıktan sonra, talimatın ilk formu aşağıdaki gibi olacaktır:

[paket]
tanim       = Interaktif işlem izleyici
paketci     = milispaketci
grup        = sistem
url         = https://hisham.hm/htop

Gerekler

Sırada paketin derlenmesi ve çalışması için gerekliliklerin bulunması var. Bunlar belirli kaynaklardan araştırılarak veya manuel olarak bulunabilir. Paketlenecek olan ‘htop’ın derlenmesi için ‘python’a, çalışması için ise ‘ncurses’e ihtiyacı var.

Burada bilinmesi gereken nokta, temel sistemde bulunan paketler talimatlara gereklilik olarak eklenmeyebilir. Bu örnek için zaten ‘ncurses’ temel sistemde yer almaktadır.

[gerek]
derleme = python
calisma =

Kaynaklar

Paketin derlenmesi veya paketlenmesi için kaynak kodlara ve yamalara ihtiyacı var. Bunun yanında eğer büyüyen bir derleme veya paketleme betiğiniz varsa bunu derle.sh veya pakur.sh adı altında talimat dizininde tutmak istiyebilirsiniz. Bunları talimat dosyanızda kullanırken kaynak altında mutlaka belirtmelisiniz.

[kaynak]
gz          = $url/releases/$surum

Dosya hashleri

İndirilen kaynak dosyalarının bozulma ihtimaline karşın talimatınızda dosyaların hashlerini bulundurmak her zaman için iyi bir fikirdir. Bunlar mps tarafından otomatik olarak algılanır ve kontrol edilir. Hashlerinizin hangi dosyaya ait oluduğunu belirtmek için dosyanın kaynak altındaki sırasını kullanınız. Paketlediğimiz ‘htop’ uygulamasında kullandığımız kaynak için gerekli hashi ekleyelim.

[sha256]
1           = d9d6826f10ce3887950d709b53ee1d8c1849a70fa38e91d5896ad8cbc6ba3c57

Derleme bilgileri

Şimdi paketin nasıl derleneceğini belirtmemiz gerekiyor, ‘htop’ standart bir C programı gibi derlendiğinden talimat sisteminde önceden tanımlı tipleri kullanacağız. Yukarıda belirtilen kaynak arşiv dosyaları indirildikten sonra arşiv dosyaları otomatik olarak $SRC dizini altına açılacaktır. MPS otomatik olarak $isim-$surum dizini varsa içine girer. Sonra derleme işlemlerini başlatır. Eğer arşiv dosyasının açılmış dizin ismi $isim-$surum biçiminde değilse derleme işleminin başında derleme için hazır olunması gereken dizin ‘betik = cd arsiv_dizin’ şeklinde belirtilmelidir.

[derle]
tip         = gnu

Bazen programlar derlenmeye gerek duyamayabilir, böyle durumlarda şablanu boş bırakmamak ve durumu belirtmek adına derle bölümünü şu şekilde doldurabiliriz:

[derle]
betik       = echo "Derleme yapılmayacak!"

Paketleme bilgileri

Programımızın kurulumu da standart bir C programı kurulumuna eşdeğer, burada tekrar hazır tipleri kullanarak işimizi hızlandıracağız. Eğer arşiv dosyasının açılmış dizin ismi $isim-$surum biçiminde değilse paketleme işleminin başında pakur için hazır olunması gereken dizin ‘betik = cd arsiv_dizin’ şeklinde belirtilmelidir.

[pakur]
tip         = gnu

Her ne kadar bu örnekte tipleri kullanmış olsak da, yapılan her işlem için muhtemelen bir tip bulunmayacaktır. Eğer yapılcak işlemler bir kaç satır betiği aşmıyorsa, bunları betik anahtarları ile talimat içinde, diğer durumlarda ise derle.sh ve pakur.sh dosyları ile yapılır.

Talimat dizininin oluşturulması

Talimat dosyası hazırlandıktan sonra yapılacak ilk iş, paket için gerekli talimat dizinin oluşturulmasıdır. Talimat dizininin ismi belirli bir kural çerçevesinde verilir. Talimat dizini ismi paketin ismi ile başlar, ‘#’ ile devam eder ve arkasından sürüm numarası gelir, hemen ardından ‘-‘ ve son olarak paketin devir numarası ile biter. Örneğin paketlenen ‘htop’ paketinin 2.2.0’ıncı sürümünü kullandık, ve bu paketi aynı sürümde ilk paketleyişimiz olduğundan devir numaramız da 1. Bu durumda talimat dizininin ismi ‘htop#2.2.0-1’ olacaktır. Sürümde herhangi bir değişiklik yok yama vs işlemler yapılacaksa devir numarası bir artırılarak talimat dizini oluşturulur.

Hazırladığımız talimat dosyasını bu dizine yerleştiriyoruz.

Talimat’ın repoya eklenmesi

Şimdi ise sıra hazırladığımız talimatı kullanmaya geldi. Bunun için talimat dizinini bir kaynağa yüklemeli ve mps’yi bu kaynağı tanıyacak şekilde konfigüre etmeliyiz. Bunun için en etkili yol bir git reposu kullanmaktır. Bu belgede hazırlanan ‘htop’ talimat dizinine buradaki git reposundan ulaşılabilir.

Talimat dizinini bir kaynağa yükledikten sonra ise MPS için gerekli ayar /usr/milis/mps/conf/conf.lua dosyasında yapılır. Dosyayı açtıktan sonra ‘talimatdepo’ altına kendi dizinimizi ekliyoruz:

...
[3]={["https://notabug.org/gysddn/mpsrepo"]="talimatname"},
...

Burada anahtar değeri olan 3, talimat dizinlerinin aktarılacağı talimatname düzeyini belirtir. Değerdeki ilk parametre repomuzun adresi, ikinci ise reponun altında ilgili talimat dizinlerini belirtir.

Yaptığımız değişikliklerin MPS’e etki etmesi için git repolarını güncelliyoruz:

mps gun -G

Talimat’ın test edilmesi (mpsdo)

Talimatımız artık hazır ve sistem tarfından tanınıyor. Bu adımda çalışan bir Milis dağıtımında, talimatımızı test edebiliriz. Ancak sağlıklı bir test için her zaman stabil bir ortam gerekir. Bunun için yalıtılmış bir derleme ortamı olan mpsdo’yu kullanabilirsiniz.

Kurulum

mpsdo’yu kurmak için mps’yi güncellemeniz gerekmektedir:

mps gun -H

Kullanım

mpsdo’nun ortamına giriş yapmak için:

sudo mpsdo2

Bu adımdan sonra yapacağınız işlemler yalıtılmış derleme ortamında gerçekleşecektir.

Not

mpsdo derlemeler için ana sisteme bağlanmış birkaç dizin hariç ortamı her zaman sıfırlayacaktır. Bunlar /opt, /sources, /var/cache’tir. Aynı dizinler ana sitemde sırası ile /mnt/paketler, /sources, /mnt/milis2/pktdepo_onbellek’e bağlanır. Bu dosyaların ana sisteme bağlanma amacı aynı işlemlerin sürekli yapılmasının önüne geçmektir.

Not

Ortama her girişinizde sıfırlanacağı için mps’yi her girişinizde güncellemeniz gerekmektedir.

Ortamda paket derlemek için konak bilgisayarın /mnt/milis2/ortam2/usr/milis/talimatname altındaki sayısal dizinler kullanılır. Bu aşamada ‘conf.lua’ dosyanızı kontrol edip herşeyin doğru oduğunundan emin olmakta fayda vardır.

Paketi derlediğimizde mps o an bulunulan dizinde gerekli paketin ‘.mps.lz’ uzantılı olan kurulma dosyasını oluşturacaktır. Dosyayı oluşturmak istediğiniz klasöre geçtikten sonra:

  • Gerekli değişiklikleri yaptıktan sonra tekil (bağımlılıklar olmadan) derleme için:

mps der -t htop
  • Sıralı derle-kur-paketle işlemleri için:

mps der htop

Paketi kurmak için(paketi konak sisteme kopyalanacak):

mps kur htop#2.2.0-1-x86_64.mps.lz

Milis Linux’ta ilk paketinizi oluşturdunuz. Bu adımdan sonra paketleyip kurduğunuz uygulamayı test edebilirsiniz.

Daha fazlası için dökümanları, kaynak kodlarını ve talimat dosyalarını inceleyebilirsiniz.

Ortamdan çıkmak için:

exit