123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203 |
- <html >
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <link rel="stylesheet" href="gitlike-markdown.css">
- <meta http-equiv="content-type" contentType="text/html; charset=UTF-8">
- <meta charset="UTF-8">
- <style>
- .markdown-body {
- box-sizing: border-box;
- min-width: 200px;
- max-width: 980px;
- margin: 0 auto;
- padding: 45px;
- }
- @media (max-width: 767px) {
- .markdown-body {
- padding: 15px;
- }
- }
- </style>
- <article class="markdown-body">
- <h2 class="title">Milis Linux Talimatname Bilgi</h2>
- <b>Talimat dosyası nedir ?</b><br>
- Milis Linux’ta paket üretmek oldukça kolaylaştırılmıştır.
- Milis Linux’ta paketler talimat dosyaları sayesinde üretilir.
- Talimat dosyası bir paketin nasıl derleneceğini,paketleneceği, gerekli olan bağımlılıkları,
- paketçinin adı, paketin adı açıklaması ve versiyon numarası gibi bilgileri barındırır.
- Mps paket yöneticisi de bu talimat dosyasını kullanarak paketi oluşturur.
- <br><br>
- <b>Talimat dosyası nasıl oluşturulur?</b><br>
- /root dizini altında “talimatname” adında bir dizin vardır. (Derleme ortamında ortamın /root dizini altına bakılmalıdır.)
- Bu dizin içerisinde ise genel, onsistem, temel adında dizinler vardır.
- Genel olarak sonradan oluşturacağımız talimat dosyaları, genel dizininin içindeki paket adı yazılı olan
- dizinlerin içinde yer almaktadır.
- Bu talimat dosyalarını örnek alarak kendi istediğiniz bir paketin talimat dosyasını oluşturabilirsiniz.
- Sıfırdan bir talimat oluşturmadan önce mevcut dağıtımlarda nasıl oluşturulmuş olmasına bakılması sağlıklı bir yoldur.
- Milis Linux talimat yapısına benzer dağıtımların üretimleri incelenerek talimat oluşturalabilinir.
- Ancak burada dikkat edilmesi gereken hususlar vardır.
- Örneğin diğer dağıtımlardaki bağımlılıklar Milis Linux deposunda farklı bir isimde oluşturulmuş olabilir
- veya bağımlılıklar depoda olmayabilir. Bu durumda olmayan bağımlılıkların da talimat oluşturularak paketlenmesi gerekir.
- Talimat dosyası oluşturulurken hangi paketi üreteceksek ilgili paketin web sitesinde yada indirdiğimiz
- kaynak kodunda genelde gerekli olan bağımlılıklar, paketin nasıl derleneceği vs. bilgiler çoğu zaman verilmektedir.
- Bunlardan yararlanarak da sıfırdan talimat dosyası oluşturabiliriz.
- <h2 class="title">Milis Linux Derleme Ortamı Kurulumu</h2>
- Milis Linux'ta paketleme yapmak ve paket deposuna katkıda bulunmak için öncelikle paketleri derleyebileceğiniz derleme ortamını oluşturmanız gerekmektedir.
- Derleme ortamını paketlerin yalıtılmış bir ortamda derlendiği <u>chroot</u> ortamı olarak düşünebiliriz.
- Daha önceki ortam kurulumlarımız elle adımlara dayanmakta iken artık tek komutla ortamı indirip kurabiliriz.
- <p>
- <pre>$ mps guncelle </pre>
- <pre>$ sudo mpsdo</pre>
- <p>
- Bu adımdan sonraki işlemler ortam içinde olacaktır.
- <p>
- Paketleme ortamından çıkıldığında tüm dosyalar sıfırlandığından dolayı ortama girdiğimizde /opt dizini altında işlemlerimizi gerçekleştiririz.
- Bu dizinde üretilen paketler ana sistem de /mnt/paketler altında kalıcı olmaktadır.
- <pre># cd /opt</pre>
- Ortama her girişimizde ortam sıfırlanacağı için ortamı güncellemek zorundayız.
- <pre># mps guncelle</pre>
- Ortamda paket derlemek için konak bilgisayarın <b>/mnt/lfs/root/talimatname/genel</b> altındaki dizinleri kullanırız.
- Gerekli değişiklikleri yaptıktan sonra tekil derleme için
- <pre># mps -d paket_ismi</pre>
- Sıralı derle-kur-paketle işlemleri için
- <pre># mps odkp paket_ismi</pre>
- komutlarını veriririz.
- Ortamdan çıkmak için
- <pre># exit</pre>
- <br><h2 class="title">Talimat Dosyası Standartları ve Talimat Hazırlama</h2>
- Talimat hazırlamak Milis içerisinde kullanılacak uygulamayı veya dosyaları paketlemek için gerekli komutları yazmak / hazırlamak demektir.
- Talimatta işlem sırası şu şekildedir:<br>
- <ol>
- <li>Kaynak kodları içeren dosyaların $SRC (/tmp/work/src/) klasörüne indirilmesi ve açılması</li>
- <li>Derleme yapılacak ise kaynak kodun derlenmesi</li>
- <li>İşlemleri tamamlanan ve/veya derlenen uygulamanın $PKG klasörüne hiyerarşisi bozulmadan alınması</li>
- <li>Son olarak da $PKG (/tmp/work/pkg/) klasörünün sıkıştırılarak paketin oluşturulması (xxx.mps.lz)</li>
- </ol>
-
- Talimatlar https://notabug.org/milislinux/milis/src/master/talimatname/ adresinde 3 ana kategoride tutulmaktadır. Kullanıcılar tarafından hazırlanan
- talimatlar "genel" kategorisinde yer alır. Mevcut tüm uygulamaların nasıl paketlendiğini yani talimat dosyalarını bu adresten inceleyebilirsiniz.
- <br><br>
- Örnek talimat dosyası:
- <pre>
- # Tanım: Ses dosyalarını düzenlemek için gelişmiş bir araç.
- # URL: http://web.audacityteam.org/
- # Paketçi: milisarge
- # Gerekler: libvorbis libmad libid3tag wxgtk28 lame hicolor-icon-theme ffmpeg shared-mime-info desktop-file-utils redland jack soundtouch cmake zip python
- # Grup: medya
- isim=audacity
- surum=2.1.1
- devir=1
- kaynak=("https://github.com/audacity/audacity/archive/Audacity-${surum}.tar.gz"
- "ffmpeg.patch")
- derle() {
- cd "${SRC}/${isim}-Audacity-${surum}"
- patch -p1 -i "${SRC}/ffmpeg.patch"
- WX_CONFIG=/usr/bin/wx-config-2.8 \
- ./configure --prefix=/usr --enable-unicode --with-wx-config=$WX_CONFIG
- make
-
- make DESTDIR="${PKG}" install
- }
- </pre>
- Linux dağıtımlarda popüler bir uygulama olan ses düzenleme uygulaması <b>Audacity</b>'nin paketlenmesi işlemlerini adım adım inceleyelim.
- <br><br>
- Talimat dosyaları birer bash script dosyalarıdır fakat belirli standartları bulunmaktadır.
- Talimat dosyasının # ile başlayan ve bash scriptte yorum kabul edilen kısımları talimatın bilgi kısmıdır. Bu bilgilerden <u>Gerekler</u> ve <u>Grup</u> kısımları
- ilgili paketin ihtiyaç duyduğu yani bağımlısı olduğu diğer paketlerin adını ve paketin kategorisini içermelidir. Örneğimiz de gereklerin büyük kısmı ses düzenleme
- özelliğinden dolayı müzik formatlarının dönüştürülmesi ile ilgili fakat paketin derlenmesi için gerekli diğer paketler de yine gerekler de yer almıştır.
- <br><br>
- Talimat içerisinde <b>$isim</b>, <b>$surum</b>, <b>$devir</b> ve <b>$kaynak</b> değişkenleri de ilgili paketin bilgilerini içermektedir.
- $kaynak kısmında görüleceği gibi paketin kaynak kodlarının indirileceği adres ve alt satırda da (bkz: bash dizi değişken)
- ffmpeg için ihtiyaç duyulan bir yama (patch) dosyası görülüyor.
- <br><br>
- Yukarıdaki talimat paketlenmek istendiğinde sırasıyla önce $kaynak adresinden kaynak kodları indirilecek ve $SRC ile belirtilen klasöre açılacak (extract), ffmpeg.patch
- dosyası da $SRC kopyalanacak ve <b>derle()</b> fonksiyonu çalıştırılacaktır. Fonksiyon çalıştırıldığında içerisinde cd, patch vb. bash komutları çalıştırılacaktır. Burada dikkat
- edilmesi gereken 2 sabit değişken <b>$SRC</b> ve <b>$PKG</b>'dir. $SRC yukarıda bahsedildiği gibi sıkıştırılmış dosya ve ek yan dosyaların taşındığı klasörü, $PKG ise paketlenecek
- (sıkıştırılıp mps.lz haline gelecek) klasörü işaret eden değişkendir.
- <br><br>
- xx.mps.lz dosyaları birer sıkıştırılmış dosyasıdır. Derleme sonrası tüm dosyalar kurulduğu sistemde kopyalanacağı klasör hiyerarşisine göre düzenlenir ve sıkıştırılır.
- <br><br>
- Talimat hazırlarken unutulmaması gerken en önemli konu paketin hazırlanması için kullanılan $PKG dizininin tamamen boş olduğudur. Örneğin siz paketinizdeki yani
- $SRC/usr/share/icons/logo.png dosyasını $PKG/usr/share/icons/ altına kopyalamak isterseniz önce mkdir -p $PKG/usr/share/icons/ klasör yapısını oluşturmak zorundasınız.
- <br><br>
- Hata durumunda veya yeni paket için <code>mps odkp {paket}</code> uyguladığımız da $SRC ve $PKG klasörleri boşaltılmaktadır.
-
-
-
- <br><h2 class="title">Talimat'ın Detaylı İncelenmesi</h2>
- <b>Gerekler:</b><br>
- Talimat dosyaları bash script gibi yazılmalı fakat bahsedildiği gibi standartlar işleri kolaylaştırmak ve hızlandırmak için kullanılmaktadır.
- Örneğin <code>Gerekler:</code> kısmına gireceğiniz uygulamaların ya daha önce paketlenmiş olması ya da talimat dosyasının hazırlanmış olması gerekir.
- Eğer gerekleri yani bağımlılıkları fazla bir uygulamayı (örn: kde) paketlemeyi düşünüyorsanız en bağımlılıksız paketinden başlayarak yukarı doğru yani bağımlılığı fazla kısma
- doğru ilerlemelisiniz. Örneği daha da detaylandırmak için Audacity ele alalım. 15 adet gerekliliği mevcut, dolayısı ile Audacity'nin paketlenebilmesi için bu 15 uygulamanın
- paketlenmiş olması gerekir. Gereklerinde python gibi çok temel uygulamalar da bulunmakta. Python uygulamasının nasıl paketlendiğini incelemek için
- <a href="https://www.notabug.org/milislinux/milis/src/master/talimatname/genel/p/python/talimat" target="_blank">https://www.notabug.org/milislinux/milis/src/master/talimatname/genel/p/python/talimat</a> adresini inceleyebilirsiniz.
-
- <br><br>
-
- <b>kaynak:</b><br>
- Kaynak değişkeni bash scripting de dizi değişkendir. Belirtilen dosyanın $SRC klasörüne indirilmesini ve açılmasını (extract) sağlar. Eğer indirilecek dosyanın farklı bir isimle kaydedilmesini
- isterseniz <code>https://dosya.kaynagi.adresi/abc-uygulamasi.tar.gz::abc.tar.gz</code> şeklinde belirtebilirsiniz. Eğer birden fazla dosya var ise yukarıdaki örnekteki gibi alt satıra
- tanımlamanız gerekmektedir. Belirtilen dosyalar lokalde ise direkt dosya adı, indirilecek ise adresini yazabilirsiniz.
- Kaynak kod git sürüm takip sistemi ile edinilecek ise <a href="https://www.notabug.org/milislinux/milis/src/master/talimatname/genel/m/myrddin/talimat" target="_blank">myrddin</a> talimat örneğindeki
- <b>git_indir</b> fonksiyonunu ve kullanımını incelemelisiniz.
- <br><br>
- Kaynak ile ilgili bir diğer önemli konu ise belirtilen dosya <b>/sources</b> klasörüne indirilir. Eğer dosya orada duruyor ise bu durumda sunucudaki dosyada değişiklik olsa bile indirilmez.
- Bu yüzden dosya adının farklı olması gerektiğine (::dosya-$surum.tar.gz) dikkat edilmelidir veya paketleme sırasında /sources klasöründeki dosya silinmelidir.
- <br><br>
-
- <b>Grup:</b><br>
- Mevcut kullanılabilir grupları <code>mps gruplar</code> komutu ile listeleyebilirsiniz. Yazdığınız talimatın hangi
- grupta yer alması gerektiğine emin olamadığınız durumlar da mevcut yayınlanmış paketlerin talimat dosyalarını
- inceleyerek karar verebilirsiniz.
- <br><br>
-
- <b>Paketleme İşlemi öncesi veya sonrasında yapılacak işlemler:</b><br>
- Talimat dosyasının bulunduğu klasöre aşağıdaki gibi dosyalar oluşturularak paketin kurulmasından önce ve sonra, paket silinmeden önce ve sonra yapılması gereken işlemleri tanımlayabilirsiniz:
- <ol>
- <li>paket-adi.<b>kur-kos</b>: Paket kurulduktan sonra çalıştırılacak olan bash işlemleri</li>
- <li>paket-adi.<b>kos-kur</b>: Paket kurulmadan <u>önce</u> çalıştırılacak olan bash işlemleri</li>
- <li>paket-adi.<b>sil-kos</b>: Paket silindikten sonra çalıştırılacak olan bash işlemleri</li>
- <li>paket-adi.<b>kos-sil</b>: Paket silmeden <u>önce</u> çalıştırılacak olan bash işlemleri</li>
- </ol>
- <b>NOT:</b>Arch Linux (-a) ve KaOSx Linux (-k) paket talimatlarının Milis Linux talimatına hızlıca çevrilebilmesi için:
- <br>
- ```
- talimat.py -a <paket-adi> #Arch talimatları için
- talimat.py -k <paket-adi> #KaOSx talimatları için
- ```
- şeklinde kullanabilirsiniz. Paket adları ilgili depolardan öncelikle kontrol edilmelidir.
-
- <br><br>
- <b>NOT2:</b> Talimat dosyasının bulunduğu klasör de talimatı test etmek veya basit paketlerin hızlıca oluşturulmasını sağlamak isteyebilirsiniz. Bunun için <b>mpsd -d</b> komutu ile talimat dosyasını ve bağımlılıklarını kontrol ederek paketi oluşturur.
- <b>mpsd</b> tek başına talimatın olduğu klasörde çalıştırılır ise bağımlılıklarını kontrol etmeden paketi derleyip oluşturur.
- <br><h2 class="title">Talimat ve Güvenlik</h2>
- Talimat dosyalarında kaynak kısımda belirtilen dosyanın değiştirilmediğinden emin olmak için <b>paket-adi.hash</b> dosyasına dosyanın hash değerini (sha256 / sha512 vb.) yanında dosya adı formatıyla (shasum dosya-adi.tar.gz çıktısında olduğu gibi) ve her satıra bir dosya gelecek şekilde belirtilmelidir.
- Böylelikle kaynak kodu indirilen dosya öncelikle hash kontrolünden geçirilecek ve daha sonra paketleme işlemine tabi tutulacaktır.
- <a href="https://www.notabug.org/milislinux/milis/src/master/talimatname/genel/w/wireguard-kernel/" target="_blank">wireguard-kernel</a> paketindeki hash örneği incelenebilir.
- <br><br><br><br>
- Son güncelleme: 25 Ekim 2018 / 15:57
- </article>
- </html>
|