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
- paket-adı_version_type.dep
- afad-tema
- afad-tema_21.01.11_amd64.deb
- afad-tema_21.01.11_i386.deb
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