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’taki kaynak bölümüne 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
...

Eklenen dosya için aşağıdaki komut çalıştırılıcaktır:

patch -Np1 -i $SRC/dosya_ismi

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ı

Talimat dosyası, paketin kullanılabilmesi ve işlenebilmesi için gerekli bilgileri içeren bölümlerden oluşur. Bunlardan dördü; paket, kaynak, derle ve pakur bu dosyada bulunmak zorundadır. Bunlara ek olarak bir çok bölüm belirli amaçları karşılamak amacıyla kullanılabilir.

[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.
tgz
Verilen kaynağın sonuna paket ismini belirli bir formata çevirerek ekler ve kullanır.
Kullanılan tam format, girdi ‘url’ ise ‘$url/$isim-$surum.tgz’ olacaktır.
dosya
Paketin talimat dizinindeki bir betik dosyası.
Bunların dışında normal http indirmelerine anahtar olarak herhangi bir alfanumerik kelime kullanılabilir. Ancak önerilen kullanım herhangi bir pozitif sayı veya ‘url’ anahtar kelimesidir.

Dosya isimlendirme

İndirilen dosya için kaynak belirtirken ‘::’ postfixi ile yeni bir isim belirtilebilir. Yeni isimde değişkenler de kullanılabilir.

1       = https://github.com/pallets/markupsafe/archive/$surum.tar.gz::$isim-$surum.tar.gz

[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ı veya ismi.

[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ı veya ismi.
servis
Paketin içine kurulacak servis.
Bu dosya /usr/milis/ayarlar altında bulunmak zorundadır.

Not

[derle] ve [pakur] altında hazırlanan anahtarlar yukarıdan aşağıya doğru olacak şekilde kullanılır/çalıştırılı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.

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 $extopt değerine atanacaktır.

Derleme tipleri

Derleme tipleri, derleme anında çalıstırılacak hazır komutlar içerir.

gnu

./configure $confopt $extopt && make

cmake

cmake ./ && make

py3 ve py2

python3 setup.py build
python2 setup.py build

meson

cd $SRC && milis-meson $isim-$surum build $extopt

ninja

mkdir -p build && ninja -C build

Paket kurma tipleri

Paket kurma tipleri, kurulum sırasında çalıstırılacak hazır komutlar içerir.

gnu

make DESTDIR=$PKG install

py3 ve py2

python3 setup.py install --root=${PKG} --optimize=1 --skip-build
python2 setup.py install --root=${PKG} --optimize=1 --skip-build

ninja

DESTDIR=$PKG ninja -C build install

meson

cd $SRC && DESTDIR=$PKG ninja -C build install