# Milis’te Paket Üretimi

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 eklenmez. Bizim durumumuzda ‘ncurses’ temel sistemde bulunan bir program olduğundan bu gerekliliği eklemeyceğiz.

    [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.

    [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.

    [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.

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’in bunu görmesi için /usr/milis/mps/conf/conf.lua dosyasını değiştirmemiz gerekiyor. Dosyayı açtıktan sonra ‘talimatdepo’ altına kendi dizinimizi ekliyoruz:

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

Burada ilk parametre repomuzun adresi, ikinci ise reponun altında talimat dizinlerinin bulunacağı yer.

Yaptığımız değişikliklerin mps’ye 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 mpsdo

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/milis/ortam/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:

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

Tebrikler!!! Milis’te ilk paketinizi oluşturdunuz. Bu adımda sisteminizde htop’un kurulu ve çalışabilir bir durumda olması gerekiyor.

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

Ortamdan çıkmak için:

    exit