talimat sistemi

talimat dosyaları mps’in paketleri kurması için gerekli bilgileri içeren bir .ini dosyasıdır.

Talimat dizini

Talimat dizinleri paket ile ilişkili talimat dosyasını ve kurulum aşamasında gerekebilecek bir çok ayrı dosyayı barındırır.

gcc#9.1.0-1/
├── derle.sh
├── kurkos.sh
├── pakur.sh
└── talimat

*.sh dosyaları

Talimat işlemleri için ayrı script dosyları hazırlanıp bunlar talimat dosyası içinden ‘dosya’ anahtar kelimesi ile çağırılabilir.

[derle]
dosya = derle.sh

[pakur]
dosya = pakur.sh

Bu dosyların ‘derle’ ve ‘pakur’ altında kullanılması halinde önerilen isimlendirme ‘derle’ için ‘derle.sh’, ‘pakur’ için ise ‘pakur.sh’ şeklindedir.

Koşuk betikleri

Koşuk betikleri talimat dizininde saklanabilir. Bunlar mps tarafından otomatik olarak algılanır ve kullanılır.

kurkos.sh
Paket kurulduktan sonra çalışacak betik.
koskur.sh
Paket kurulmadan önce çalışacak betik.
silkos.sh
Paket silindikten sonra çalışacak betik.
kossil.sh
Paket silinmeden önce çalışacak betik.

Yama dosyaları

Yama dosyaları talimat dizininde saklanabilir. Bu durumda yapılması gereken ‘dosya’ anahtarı ile dosyayı talimat’a eklemek ve ‘yama’ anahtarı ile ilişkili yamayı belirtmektir. Daha fazla bilgi için dosya formatını inceleyin.

lua#5.3.5-1/
├── derle.sh
├── liblua.so.patch
├── lua.pc
├── pakur.sh
└── talimat
[kaynak]
gz      = https://www.lua.org/ftp
dosya   = liblua.so.patch
dosya   = lua.pc

[derle]
yama    = 2
...

libgerekler ve pktlibler

libgerekler dosyası, paketin hangi kütüphanelere ihtiyacı olduğunu belirtir.

Örneğin aşağıda python paketinin 3.7.3’üncü sürümü için gereken kütüphaneler listelenmiştir. Bunlar libgerekler dosyasında saklanır.

libdl.so.2
libpython3.7m.so.1.0
libpthread.so.0
libc.so.6
libuuid.so.1
libm.so.6
libexpat.so.1
liblzma.so.5
libbz2.so.1.0
libz.so.1
libpanelw.so.6
libncursesw.so.6
libgdbm.so.6
libgdbm_compat.so.4
libsqlite3.so.0
libssl.so.1.1
libcrypto.so.1.1
libcrypt.so.1
libreadline.so.8
libutil.so.1

pktlibler ise paketin sisteme sunduguğu kütüphaneleri belirtir.

Aşağıda ise aynı paketinin sisteme sunduğu kütüphanler listelenmiştir. Bunlar da pktlibler dosyasında saklanır.

libpython3.so
libpython3.7m.so.1.0
libpython3.7m.so

Dosya formatı

[paket]

tanim
Paketin açıklaması.
paketci
Paketçilerin isimleri.
grup
Paketin grubu.
Gruplarlar belirlenirken sistemde önceden tanımlanan gruplar kullanılmalıdır, bunlar ‘mps gruplar’ komutu ile öğrenilebilir.
url
Paketin web sayfası

[gerek]

derleme
Paketin derlenmesi için gerekenler
calisma
Paketin çalışması için gerekenler

[kaynak]

github
Verilen kaynak GitHub için ‘kullanıcıadı/repoismi’ olmalıdır. Bu durumda mps’nin kullandığı tam url ise ‘github.com/kullanıcıadı/repoismi’ olacaktır.
gz,xz,bz2
Verilen kaynağın sonuna paket ismini belirli bir formata çevirerek ekler ve kullanır.
Kullanılan tam format, girdi ‘url’ ise ‘url/$isim-surum.tar.[gz|xz|bz2]’ olacaktır.
dosya
Paketin talimat dizinindeki bir betik dosyası.
Bunların dışında herhangi bir alfanumerik kelime kullanılabilir. Ancak önerilen kullanım herhangi bir pozitif sayı veya ‘url’ anahtar kelimesidir.

[sha256] ve [sha512]

1,2,3,4…
Kaynak dosyaları için sha anahtarlarını belirtir.
Numara, kaynağın [kaynak] altındaki sırasını belirtir.

[derle]

dosya
Paketin talimat dizinindeki bir betik dosyası.
tip
Paketin derlenme tipi.
betik
Çalıştırılacak betik komutu.
yama
Yama dosyasının [kaynak] altındaki sırası.

[pakur]

dosya
Paketin talimat dizinindeki bir betik dosyası.
tip
Paketin kurulma tipi.
betik
Çalıştırılacak betik komutu.
yama
Yama dosyasının [kaynak] altındaki sırası.
servis
Paketin içine kurulacak servis.
Bu dosya /usr/milis/ayarlar altında bulunmak zorundadır.

Değişkenler

Talimat dizininde paketler belirli bir formata göre isimlendirilir, bu format
‘isim#sürüm-devir’
şeklindedir ve buradaki değerler değişkenler olarak kullanılabilir.
$isim
Paketin ismi.
$surum
Paketin sürümü.
$devir
Paketin devri.

[paket] bloğunun altındaki her anahtar değişken olarak kullanılabilir.

Tipler

Tipler, betik yazmak yerine daha sade bir talimat için kullanılabilir.

Derleme tipleri

gnu

gnu tipi derleme aşağıdaki komutları çalıştırır.

./configure $confopt && make

Ek konfigürasyon yapmak için ‘tip’ anahtarından önce ‘ekconf’ anahtarı kullanılabilir. Anahtarın değeri gerekli komutlar çağrılımadan önce $confopt değerine atanacaktır.

cmake

cmake tipi derleme aşağıdaki komutları çalıştırır.

cmake ./ && make

Paket kurma tipleri

gnu

gnu tipi paket kurma aşağıdaki komutları çalıştırır.

make DESTDIR=$PKG install