24 Ocak 2021 Pazar

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
    APT::FTPArchive::Release::Origin "Afad";
    APT::FTPArchive::Release::Label "Afad";
    APT::FTPArchive::Release::Suite "afad";
    APT::FTPArchive::Release::Codename "afad";
    APT::FTPArchive::Release::Architectures "amd64";
    APT::FTPArchive::Release::Components "main contrib non-free";
    APT::FTPArchive::Release::Description "Afad repository";

    Yukarıdaki maddelerden anlaşılacağı gibi kuracağımız depomuz hakkında bilgileri giriyoruz. Pardus makinada bu depodan bir paket kurulduğunda apt list --installed komutu ile baktığımızda hangi depodan kuruldu bilgisi buradan geliyor.

    Paketlerimizi (.deb) pool altında koyduktan sonra aşağıdaki scripti çalıştırdığımızda depomuz hazır.

    cd /home/afad
    vi depo-guncelleme.sh

    cd /var/www/html/afad/
    apt-ftparchive --arch amd64 packages pool/main > dists/afad/main/binary-amd64/Packages
    rm dists/afad/main/binary-amd64/Packages.gz
    gzip -k dists/afad/main/binary-amd64/Packages

    apt-ftparchive --arch i386 packages pool/main > dists/afad/main/binary-i386/Packages
    rm dists/afad/main/binary-i386/Packages.gz
    gzip -k dists/afad/main/binary-i386/Packages

    apt-ftparchive contents pool/main > dists/afad/main/Contents-amd64
    rm dists/afad/main/Contents-amd64.gz
    gzip -k dists/afad/main/Contents-amd64

    apt-ftparchive release -c release.conf dists/afad > dists/afad/Release

    ######################################Depoyu şifreliyoruzki apt update yazılınca guvenlık hatası vermesin.#######################################################
    ######################################Bizden oluşturduğumuz keyin master sifresini istiyor. kurumsal şifre #######################################################
    gpg -a --yes --output dists/afad/Release.gpg --local-user CA4459AD651EE6A98CA3CCF636D5BD119CB5E77E --detach-sign dists/afad/Release
    ######################################Bu sefer release dosyamızı şifreyiyor. Bu sayede InRelease dosyaysı oluşuyor. #######################################################
    gpg -a --yes --clearsign --output dists/afad/InRelease --local-user CA4459AD651EE6A98CA3CCF636D5BD119CB5E77E --detach-sign dists/afad/Release


    Yukarıdaki script hakkında kısaca bilgiler vermek istiyorum.
    • ilk kısım pool klasörüne bakarak paketleri indexliyor. Ben sadece main yapısı kullanıyorum.
    • 2. kısım release.conf dosyasındaki bilgileri alarak Release dosyası oluşturuyor. İçinde depoya dair bilgiler yer almaktadır. Bu bilgilerden sonra da dists içerisindeki indexlerin hash değerleri yer alır.
    • 3. kısım ise oluşturulan Release dosyasını şifreli bir şekilde InRelease oluşturuyor.
    Oluşturduğumuz scripti çalışır hale getirelim.
    chmod 777 depo-guncelleme.sh
    ./depo-guncelleme.sh

    Scripti çalıştırdığımızda depomuz hazır.

    Client tarafında depo ekleme scripti:

    cd /var/www/html
    vi afaddepo.sh
    echo "deb https://depo.afad.gov.tr/afad afad main" | sudo tee /etc/apt/sources.list.d/afaddepo.list > /dev/null
    wget -O - https://depo.afad.gov.tr/Release.key | apt-key add -

    Evet scriptimiz hazır. Ben kurduğum sunuca depo.afad.gov.tr ile erişebiliyorum. Şuanda sadece iç networke hizmet ediyor. Belki ilerde internet ortamına da açabiliriz ...
    Orjinal depoyu ellemeden sources.list.d/ altına başka bir depo ekledim.


    Client tarafında depo nasıl ekleriz?

    wget https://depo.afad.gov.tr/afad.depo.sh
    chmod 777 afad.depo.sh
    ./afad.depo.sh
    apt update
    apt install afad-tema



    Bu makalede en önemli şeylerin hazırlamış olduğum scriptler olduğunu düşünüyorum. Diğer detayları başka sitelerde bulabilirsiniz. 2 gün araştırma sonunda bu kadar basit olduğunu öğrenmem beni biraz şaşırttı.  
    iler ki yazımda bu depoya koyulacak paketleri yapmayı anlatmaya çalışacağım.






    Hiç yorum yok:

    Yorum Gönder