ymp paket yapma uygulamasıdır. Detayları https://gitlab.com/sulix/ adresinden öğrenebilirsiniz.
Bu paket sistemi ile kaynak koddan paketler oluşturabiliyoruz. Bir paket oluşturmak için aşağıdaki adımları uygulamalıyız.
0-Docker Kurulumu
sudo apt update
sudo apt install docker
sudo apt install docker.io
sudo apt install docker-compose
1- İmaj İndirme
sudo docker pull registry.gitlab.com/turkman/devel/assets/docker-images docker indirilir..
2-İmaj Çalıştırma
sudo docker run -it registry.gitlab.com/turkman/devel/assets/docker-images /bin/sh çalıştırılır..
burada volume bağlanmak istenebilir. Bunun için;
sudo docker run -it -v /home/by/depo:/bay/ registry.gitlab.com/turkman/devel/assets/docker-images /bin/sh
mevcut çalışan sistemin home/by/depo konumunu docker içinde /bay adındaki konumuna bağladık..
Dikkat edilmesi gereken nokta run -it parametresinden sonra -v /home/by/depo:/bay/ yazılmalıdır.
Bu işlemden sonra exit yapın çıkın.
Daha Sonra;
sudo docker ps -a
çıkan id değeri: 5cca49321aa3
sudo docker start 5cca49321aa3
sudo docker attach 5cca49321aa3 şeklinde çalıştırınız..
3-Güncellemeler yapılır.
ymp repo --update --ignore-gpg
sorun olursa(meb hattında ssl kaynaklıdır..) --ignore-ssl eklenmeli yani;
ymp repo --update --ignore-ssl --ignore-gpg komutu kullanılmalı...
4- Gerekli Paketler Kuruluyor..
ymp it @sys.devel @dev.util bash --no-emerge ERROR: Quarantine validation failed hatasını veririrse
ymp it @sys.devel @dev.util bash --no-emerge --ignore-quarantineEğer ssl(meb hattından dolayı) hata verirse
ymp it @sys.devel @dev.util bash nano coreutils --no-emerge --ignore-quarantine --ignore-ssl komutunu vermemiz gerekmektedir...
@sys.devel sisteme ait paketler
@dev.util geliştirme paketleri toplu paketlerin önünde @ var
sonra bash nano coretuils kurduk hepsini tek satırda
5-Paket Yapımı
https://gitlab.com/sulix/devel/sources/ymp/-/blob/master/doc/ympbuild.rst adresinden paket yapımı aşamaları öğrenilebilir.
Şimdi basit bir paket yapalım...
Paket yapımı için ymp template komutu kulllanılmalı
ymp template komutunda name source output zorunlu;
Komut detayı için ymp temlate --help komutunu kullanabilirsiniz...
6-Hello Paketi Şablonu Oluşturma
https://ftp.gnu.org/gnu/hello/hello-2.11.tar.gz adresteki hello paketini yapalım...
Bunun için;
burada
abc adında bir klasör oluşturacak ve içine paket için paket şablonu oluşturacak..
7-Paket Yapımı
Eğer bir önceki adım hatasız oluşmuşsa sonraki komutumuzu verelim..
ymp build abc bu komut paketi oluşturacaktır...
meb hattındaysanız
ymp build abc --ignore-ssl komutunu vermelisiniz.. komut sonucunda aşağıdaki gibi bir çıktı alırsınız..
Burada Reveiced:3b25*******2930 değeri /abc/ympbuild dosyasının içerisineki md5sums içeriğine yazmalıyız...
Aşağıdaki gibi
md5sums kısmını düzeltmeliyiz...
Önceki hali;
Dosyayı kaydedip çıktıktan sonra tekrar
ymp build abc --ignore-ssl komutunu vermeliyiz... Aşağıda hatasız bir şekilde paketin oluştuğunu görüyoruz..
Ayrıca dikkat edilmesi gerekenler;
Bunlar;
-version='2.11' olmalı
-name='hello' olmalı
Eğer hatasız işlemler tamamlanırsa /abc dizini altına ymp uzantılı dosyalar oluşturacaktır..
8-Paket Kurulumu
:ymp it /abc/hello_2.11_1_x86_64.ymp komutuyla paket kurulabilir.. Aşağıdaki resimde abc altındaki hello paketini kuruyoruz..
Eğer paket kurulumu hatasız olmuşsa; İşte mutlu son...
Paketi tekrar kurmak istersek
ymp it /abc/hello_2.11_1_x86_64.ymp --reinstall komutunu kullanmalıyız..
9-Paket Yaparken Diğer Yapacağımız Ayarlar
Bu örneğimizde hello projesini kullanmıştık. Şimdi hello projesinin paket şablonu abc/ympbuild dosyasında bazı ayarlamalar yapmamız gerekmektedir.
Bu ayarlar aşağıda mavi renkte gözüken satırları önceki hali ve sonraki hali olan dosya ayarlarını aşağıda verilmiştir.
Önceki hali;
#!/usr/bin/env bash
name='hello'
release='1'
version='2.11'
url='https://example.org'
description='Package description missing'
email='bk@gmail.com'
maintainer='bk'
license=('GPLv3')
source=('https://ftp.gnu.org/gnu/hello/hello-2.11.tar.gz')
depends=()
makedepends=()
md5sums=('3b2508b671581c47f4eb5b131bc22930')
group=()
uses=()
arch=('x86_64')
cd $name-$version
setup(){
./configure --prefix=/usr \
--libdir=/usr/lib64/
}
build(){
make -j`nproc`
}
package(){
make install -j`nproc`
}
Sonraki halini kırmızı olarak gösterilmiştir.
#!/usr/bin/env bash
name='hello'
release='1'
version='2.11'
url='https://example.org'
description='simple c code project'
email='bk@gmail.com'
maintainer='bk'
license=('GPLv3')
source=("https://ftp.gnu.org/gnu/hello/hello-$version.tar.gz")
depends=()
makedepends=()
md5sums=('3b2508b671581c47f4eb5b131bc22930')
group=(app.shell)
uses=()
arch=('x86_64')
cd $name-$version
setup(){
./configure --prefix=/usr \
--libdir=/usr/lib64/
}
build(){
make -j`nproc`
}
package(){
make install -j`nproc`
}
* description kısmına paketi tanıtan basit bir ifade.
* source kısmında $version kullanıldı. $ ifadesiyle başlayan değişkenlerin yazılabilmesi için tek tırnak yerine çift tırnak kullanılmalı.
* group kısmına ise paketin hangi kategoride olacağını ifade eden bilgiler yazılmalıdır. Yukarıdaki örnekte paket app klasörünün altındaki shell klasörü altına hello adında bir klasör yapılıp abc/ympbuild konumundaki dosya main/app/shell/hello/ympbuild şeklinde ayarlanmalıdır.
10-Paketin Bağımlı Oolduğu Kütüphaneleri Listeleme
detect-dep hello komutuyla hello uygulamasının bağımlılıkları listelenebilir.