24 Ocak 2021 Pazar

Deb paket oluşturma (afad-tema.deb)

 Merhabalar,

Kurumunuz veya kendiniz için basit deb paketleri oluşturmadan bahsedeceğim. Basit bir paket yapalım.

Paket Yapısı:

Paket adı olarak ben afad-tema seçiyorum. Bu paket adı ile bir klasör oluşturup, içine gerekli malzemeleri koyacağız.
Paketin için içinde "DEBIAN" isimli klasör zorunlu. İçinde aşağıda bahsettiğim şekilde uygulama bilgileri yer alıyor.
Diğer klasörler ise "/" muş gibi düşünüp koyduğunuz dosyalar, kurulacak makinanın dizinlerine kopyalanıyor. Örnek usr isimli klasör açtınız. Bu klasör altına share isimli klasör açtınız. Altına enes.txt isimli dosya koydunuz. Bu paket kurulursa, kurulan makinanın /user/share altına enes.txt dosyasını kopyalıyor.

cd /home
mkdir afad-tema
cd afad-tema
mkdir DEBIAN

afad-tema

  • DEBIAN
    • control(zorunlu)
    • md5sums(zorunlu)
    • postinst(opsiyonel)
    • preinst(opsiyonel)
    • prerm(opsiyonel)
    • postrm(opsiyonel)
  • /


control paketinizin bilgileri içeriyor. Ben script ile dolduruyorum bu bilgileri. Bakınca anlayacağınıza eminim.

md5sums paketinizin indirme sırasında bozulmuşmu kontrolu sağlayan hash dosyası. Script ile otomatik oluşur. 


Paket kurulurken 4 temel betik dosyası çalışır. Bu dosyalar DEBIAN/ klasörü içerisinde oluşturulur.

  • preinst paket kurulmadan önce çalışır. Paketiniz için oluşturulması gereken dosyalar ya da yapılması gereken kofigürasyonlar varsa burada yapılır.
  • postinst paket kurulduktan sonra çalışır, örneğin uygulamanız kurulduktan sonra servisi enable etmek isteyebilirsiniz.
  • prerm paket kurulmadan önce yapılması gereken işlemler. Paket silinirken içinden çıkan dosya ve dizinleri temizlemek ister. Fakat bu dizinlerde bunun dışında oluşturulanları bunları temizleyemez. Örneğin bu dosyalar paketkaldırılmadan silinebilir ya da çalışan ilgili servisler durdurulabilir.
  • postrm paket kaldırıldıktan sonra yapılmak istenen işlemler burada tanımlanır



Senaryomuz: 

Kurumunuzun arka fon masaüstü resmini yüklemeye, değiştirmeye yarayan bir paket yapalım.  Arka fon resimleri nerede bulunduğunu inceleyelim.
Varsayılan ayarlarda : "/user/share/images/desktop-base/desktop-background" dosyasındaki resim bize arkafonu ayarlıyor. Yani bu dosyayı değiştirirsek (güncellersek) arka fon resmi değiştir. Bu yüzden yukarıdaki formata uygun paket-adı mızın altına gerekli klasörleri oluşturup desktop-background isimli resmimizi atıyoruz. Ben kullanıcı isterse farklı renklede kurumsal resimlerde kullanabilsin diye 5-6 tane daha resim koydum.
Peki, paket kurumundan önce açılmış kullanıcılar arka fon resmini değiştirmiş ise (varsayılan ayarı değişmiş) onlarında resmini nasıl düzeltebiliriz onu araştırmamız lazım.
"/home/afad/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml"
Pardus da oturum açmış her kullanıcının kendi dizini altında ".config" adında ayar klasörü olduğunu gördüm. Yukarıdaki dosya bizim arka fon resim ayarının saklandığı yer olduğunu keşfettim. Nasıl keşfettiniz dersenin internetten araştırma , 1-2 saatlik emek , tecrübe ....
Bende aşağıdaki basit 2 komutu hazırladım. Bu komutlar var olan kullanıcıların ayarlarını düzeltmeye ayarıyor. Kullanıcılar logout-login olduğunda bu ayarlar devreye girecek.

vi /home/afad-tema/DEBIAN/postinst

Pardus custom image hazırlama

Not: bu yöntem eskide kaldı. yeni makalem var.

Merhabalar,

Kurumunuz için pardus kurduğunuzda tüm ayarları yapılmış, tüm istenilen programlar kurulmuş bir şekilde karşınıza gelmesini istemez misiniz?

Hadi size custom pardus isosu hazırlamayı göstereyim.

Öncelikli olarak pardus son sürüm iso sunu indiriyoruz. Ben bu makaleyi yazarken en son sürüm link:

wget https://indir.pardus.org.tr/ISO/Pardus19/Pardus-19.4-1-XFCE-amd64.iso

öncelikli olarak size iso içeriği hakkında bilgi vermek istiyorum



Live klasörü dışındaki diğer klasörler kurulum ekranlarını hazırlıyor. Bizim için önemli yer live klasörü. Zaten boyutuna da bakarsanız anlaşılıyor. Lice cd olarak da açılan yada kurduğumuzda diskimize yüklenen image aslında .squashfs klasörüdür. Yani gün sonunda bu dosyayı güncellemiş olacağız.

Pardusu bir PC ye kurup istediğimiz hale getirdikten sonra image haline alacağız. Ben kolaylık olsun diye sanal makine kullanıyorum. Hatta windowsdaki hyper-v bile olur.

İmage alma:

Ayarları yapılmış pardus makiye aşağıdaki komutlar ile temizleyip kapatıyoruz.

apt clean
rm -rf /tmp/*
history -w
history -c

Ayarları yapılmış pardus makiye kapatıp live iso ile açıyoruz. PC ye 2. disk takıyoruz. Sanal makine ise ben genelde 2. bir disk takıyorum. USB de takabilirsiniz ama boyutu en az 16 GB olsun. Live iso olaraka açtığım için hem PC nin kendi diski hem de 2. diski mount yapmamız lazım. Ben grafik ekrandan yapıyorum. Tabiki komut satırından da yapılabilir.

not: apt install squashfs-tools genisoimage xorriso rsync isolinux

Grafik ekran: başlat - Diskler - play tuşuna bas -- /media altına diskleri bağlayacak.

cd /media/afad
ls -alh
Bu Komut ile bağladığımız 2 diskin adını öğrenelim. Benimkiler disk1 ve disk2.

mksquashfs disk1/ disk2/filesystem.squashfs
printf $(du -sx --block-size=1 disk1/ | cut -f1) > disk2/filesystem.size

evet imagemizi squashfs olarak aldık. Komut mantığı mksquashfs komutu sonra image alınacak diski boşluk dosyanın oluşacağı dizin şeklinde.

Artık live iso olarak kalmamıza gerek kalmadı. İsterseniz kurulu pardusa dönebilirsiniz, isterseniz live ile devam edebilirsiniz.

Custom ise oluşturma:

İndirdiğimiz orjinal pardus isosunu bir klasöre açıp oluşturduğumuz squashfs dosyasını yer değiştirip tekrar iso haline getireceğiz.

apt install squashfs-tools genisoimage xorriso rsync isolinux

Orjinal iso açma:

orjinal pardus isosunun bulunduğu dizine gidelim:

cd /home/afad/indirilenler

xorriso -osirrox on -indev Pardus-19.4-XFCE-amd64.iso -extract / /media/afad/disk2/iso_orj

Custom squashfs yer değiştirme

Açtığımı dosylar içindeli live dizini altında filesystem.squashfs ve filesystem.size dosylarını değiştiriyoruz. Ayrıca kernel güncellemesi yaptıysanız benim gibi initrd ve vmlinuz dosyalarını yeri kurduğunuz pc nin /boot klasörü altındaki dosyalarla güncelliyoruz.

cp /media/afad/disk2/filesystem.squashfs /media/afad/disk2/iso_orj/live/filesystem.squashfs
cp /media/afad/disk2/filesystem.size /media/afad/disk2/iso_orj/live/filesystem.size

sudo cp /boot/vmlinuz* /media/afad/disk2/iso_orj/live/vmlinuz
sudo cp /boot/vmlinuz* /media/afad/disk2/iso_orj/live/
sudo cp /boot/initrd* /media/afad/disk2/iso_orj/live/initrd.img
sudo cp /boot/initrd* /media/afad/disk2/iso_orj/live/

Açılmış dosyaları tekrar iso yapma:

not: apt install squashfs-tools genisoimage xorriso rsync isolinux

cd /media/afad/disk2

xorriso -as mkisofs -R -r -J -joliet-long -l -cache-inodes -iso-level 3 -isohybrid-mbr /usr/lib/ISOLINUX/isohdpfx.bin -partition_offset 16 -A "Pardus" -p "live-build 1:20190311; https://debian-live.alioth.debian.org/live-build" -publisher "Pardus" -V "Pardus 19.4 Canli" --modification-date=2020110310114000 -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot  -e boot/grub/efi.img -no-emul-boot -isohybrid-gpt-basdat -isohybrid-apm-hfsplus -o afad-11012021.iso /media/afad/disk2/iso_orj

Yukarıdaki komut ile klasörümüz tekrar iso oldu. İşlem biraz uzun sürüyor.

basit anlatmaya çalışıyorum. Ayrıntı isteyen olursa yorum yazsın. Yorumda istenilen ayrıntıları ekleyeyim.

Pardus Depo Kurma- Repository

 Merhabalar,

    Bugün sizlere firmanıza veya kendinize özel pardus depo kurmayı elimden geldiğince anlatmak istiyorum. İnternetten bir çok farklı kaynaktan topladığım bilgiler kendi kurumumuz için yaptığımız depo sonrasında edindiğim bilgileri aktarmak , kendim içinde bir not defteri olmasını istiyorum. 

Çalıştığım kurum olan Afad bünyesinde 1000 den fazla pardus client var. Burada kullandığım meteryalleri sizlerle paylaşmaya çalışacağım. Bilgi paylaştıkca çoğalır. Sürekli geçen afad kelimesi de bir nevi reklam olacaktır. İçinde şifre veya keyleri tabiki değiştireceğim.

Orjinal depoların mirror şekilde değilde, daha çok kendinize ait paketlerin bulduğu bir depo şekilde oluşturacağız. Amacımız kendi paketlerimizi dağıtacağız bir depo kurmak.

Kaynak olarak yararlandığım siteler:

https://sulincix.github.io/sayfalar/html/debian-depo-olusturma.html

http://depo.pardus.org.tr/pardus/

Hazırlık:

Depomuzu kuracağımız sunucu için ben Pardus 19.4 kurudum.
Sonrasında paketleri güncelleyip, web servisi olarak apache2 kurdum.
apt update
apt upgrade
apt install apache2
apt install apt-ftparchive

Apache web server kuruduğumuzda herkesin bildiği gibi /var/www/html dizi web sayfasının bulunduğu yerdir. Buraya bir klasör oluşturak bu klasör altında depo oluşturmaya karar verdim.

cd /var/www/html
mkdir  afad

Afad klasörü altında benim oluşturduğum yapı aşağıdaki gibidir.

afad
  • dists
    • afad
      • Release
      • main
        • binary-amd64
          • Packages
          • Packages.gz
        • binary-i386
          • Packages
          • Packages.gz
      • contrib
      • non-free
  • pool
    • main
      • paket-adı
        • paket-adı_version_type.dep
      • afad-tema
          • afad-tema_21.01.11_amd64.deb
          • afad-tema_21.01.11_i386.deb
      • contrib
      • non-free


    dists: Depoda bulanan paketlerin bilgilerinin saklandığı yer. index gibi düşünebilirsiniz. Buradaki dosyaların çoğunu otomatik scriptler ile oluşturacağız.
    pool: paketlerimin bulunacağı yer. Paket isimlerinin formatına dikkat edelim. Ağaç yapısı size her şeyi anlatmıştır.

    main-contrib-non-free: Ağaç yapısında gösterdim ama ben sadece main yapısını kullanacağım.

    Deponun güvenli hale Getirmek

    Depomuzu eklediğimizde pardus tarafından güvenli olmadığı uyarısı almak istemiyorsak şifrelememiz gerekiyor. Bunun için kendimize bir tane ssl key üretelim.

    gpg --full-generate-key

    Bu komut ile key üretmiş olacağız. key üretirken verdiğimiz şifreyi unutmayım. Her depo güncellemesinde bizden o şifreyi isteyecek. Key üretim sonrası aşağıdaki komut ile ürettiğimiz keyleri görebiliriz.

    gpg --list-keys

    root@pardusdepo:/home/afad# gpg --list-keys
    /root/.gnupg/pubring.kbx
    ------------------------
    pub   rsa3072 2021-01-14 [SC]
          CA4459AD651EE6A98CA3CCF636D5BD119CB5E77E
    uid           [   son  derece   ] Afad Kurumsal (Afad Depo) <destek@afad.gov.tr>
    sub   rsa3072 2021-01-14 [E]

    Ürettiğimiz keyi  Release.key adında dışarı çıkartıyoruz.
    cd /var/www/html
    gpg --output Release.key --armor --export CA4459AD651EE6A98CA3CCF636D5BD119CB5E77E

    Depo scripti hazırlanmsı


    Depumuzu güncellerken bilgilerin otomatik girilmesi için bir metin belgesi hazırlıyoruz.
    cd /var/www/html/afad
    vi  release.conf