View Categories

DNF Depoları İçin Versiyon Yönetimini Kolaylaştıran siberrepo Aracı

2 min read

Sisteminize eklediğiniz depoların (örneğin, AlmaLinux ve EPEL) sürüm numaralarını kolayca yönetmek ve güncellemek için bir araç oluşturacağız. Bu araç, depoların versiyonlarını listelemenizi ve güncellemenizi sağlayacak.

Amaç #

  • Depo Sürüm Yönetimi: AlmaLinux ve EPEL depolarının sürüm numaralarını kolayca değiştirmek.
  • Kolay Kullanım: Tek bir komutla versiyonları listelemek veya güncellemek.
  • Otomasyon: Depo dosyalarındaki releasever ifadelerini otomatik olarak güncellemek.

siberrepo Aracının Özellikleri #

  • Listeleme:
    • siberrepo komutunu tek başına çalıştırarak mevcut versiyonları listeleyebilirsiniz.
  • Versiyon Güncelleme:
    • siberrepo -almalinux -9.3 komutu, AlmaLinux deposunun versiyonunu 9.3 olarak ayarlar.
    • siberrepo -epel -9.1 komutu, EPEL deposunun versiyonunu 9.1 olarak ayarlar.

Adım Adım Kurulum ve Kullanım #

Adım 1: siberrepo Betiğini Oluşturma #

Öncelikle, /usr/local/bin/ dizininde siberrepo adında bir betik oluşturacağız ve çalıştırılabilir hale getireceğiz.

1.1. Betiği Oluşturma #

sudo nano /usr/local/bin/siberrepo

1.2. Betik İçeriğini Ekleme #

Aşağıdaki kodu betiğe yapıştırın:

#!/bin/bash

# Depo isimleri ve ilgili dosyaları tanımla
declare -A repos
repos=( [“almalinux”]=”almarelease” [“epel”]=”epelrelease” )

# Fonksiyon: Versiyonları Listele
function list_versions {
echo “Mevcut depo versiyonları:”
for repo in “${!repos[@]}”; do
var_file=”/etc/dnf/vars/${repos[$repo]}”
if [ -f “$var_file” ]; then
version=$(cat “$var_file”)
echo “- $repo: $version”
else
echo “- $repo: Versiyon bilgisi bulunamadı.”
fi
done
}

# Fonksiyon: Versiyonu Güncelle
function update_version {
local repo_name=$1
local new_version=$2

if [[ -z “${repos[$repo_name]}” ]]; then
echo “Hata: ‘$repo_name’ desteklenmeyen bir depo.”
exit 1
fi

var_file=”/etc/dnf/vars/${repos[$repo_name]}”
echo “$new_version” | sudo tee “$var_file” > /dev/null

# Depo dosyalarını güncelle
if [ “$repo_name” == “almalinux” ]; then
repo_files=$(ls /etc/yum.repos.d/almalinux*.repo)
elif [ “$repo_name” == “epel” ]; then
repo_files=”/etc/yum.repos.d/epel*.repo”
fi

for file in $repo_files; do
sudo sed -i “s/\$releasever/\$${repos[$repo_name]}/g” “$file”
done

echo “$repo_name deposunun versiyonu ‘$new_version’ olarak güncellendi.”
}

# Ana Program
if [ $# -eq 0 ]; then
list_versions
else
while [[ $# -gt 0 ]]; do
key=”$1″
case $key in
-almalinux|-epel)
repo_name=”${key#-}”
new_version=”$2″
if [[ -z “$new_version” ]]; then
echo “Hata: ‘$repo_name’ deposu için versiyon belirtilmedi.”
exit 1
fi
update_version “$repo_name” “$new_version”
shift # Versiyon numarasını atla
;;
*)
echo “Kullanım: siberrepo [-almalinux versiyon] [-epel versiyon]”
exit 1
;;
esac
shift # Sonraki argümana geç
done
fi

1.3. Betiği Kaydetme ve Çıkma #

  • Nano’da: Ctrl + O tuşlarına basarak dosyayı kaydedin, ardından Enter tuşuna basın.
  • Ctrl + X ile editörden çıkın.

1.4. Betiğe Çalıştırma İzni Verme #

sudo chmod +x /usr/local/bin/siberrepo

Adım 2: siberrepo Aracının Kullanımı #

2.1. Versiyonları Listeleme #

siberrepo

Örnek Çıktı:

Mevcut depo versiyonları:
- almalinux: 9.4
- epel: 9

2.2. AlmaLinux Versiyonunu Güncelleme #

siberrepo -almalinux 9.3

Bu komut, AlmaLinux deposunun versiyonunu 9.3 olarak günceller ve ilgili depo dosyalarını ayarlar.

2.3. EPEL Versiyonunu Güncelleme #

siberrepo -epel 9.1

Bu komut, EPEL deposunun versiyonunu 9.1 olarak günceller ve ilgili depo dosyalarını ayarlar.

2.4. Birden Fazla Depoyu Aynı Anda Güncelleme #

siberrepo -almalinux 9.3 -epel 9.1

Bu komut, hem AlmaLinux hem de EPEL depolarının versiyonlarını günceller.

Adım 3: Doğrulama #

Versiyonları güncelledikten sonra tekrar listeleyerek kontrol edebilirsiniz:

siberrepo

Adım 4: DNF Önbelleğini Temizleme ve Güncelleme #

Değişikliklerin etkili olması için DNF önbelleğini temizleyin ve sistemi güncelleyin:

sudo dnf clean all
sudo dnf update

Önemli Notlar #

  • Yedekleme: Depo dosyalarını düzenlemeden önce yedeklerini almanız önerilir.
  • Yetkiler: Betik, bazı işlemler için sudo kullanır. Bu nedenle, çalıştırırken sizden şifre isteyebilir.
  • Desteklenen Depolar: Betik şu an için AlmaLinux ve EPEL depolarını destekler. İsterseniz betiği genişleterek diğer depoları ekleyebilirsiniz.
  • Güvenlik: Betiği dikkatli kullanın ve sadece güvenilir kaynaklardan aldığınız komutları çalıştırın.

Betiğin Çalışma Mantığı #

  • Depo Bilgileri: Betik, desteklenen depoları ve ilgili vars dosyalarını bir dizi olarak tanımlar.
  • Listeleme Fonksiyonu: list_versions fonksiyonu, depoların mevcut versiyonlarını ekrana yazdırır.
  • Güncelleme Fonksiyonu: update_version fonksiyonu, belirtilen depo için yeni versiyonu ayarlar ve depo dosyalarındaki releasever ifadelerini ilgili değişkenlerle değiştirir.
  • Argüman İşleme: Betik, komut satırı argümanlarını işleyerek doğru fonksiyonları çağırır.

Örnek Senaryo #

  1. Versiyonları Listeleme:
    siberrepo

    Çıktı:

    Mevcut depo versiyonları:
    - almalinux: 9.4
    - epel: 9
  2. AlmaLinux Versiyonunu 9.3 Olarak Güncelleme:
    siberrepo -almalinux 9.3

    Çıktı:

    almalinux deposunun versiyonu '9.3' olarak güncellendi.
  3. EPEL Versiyonunu 9.1 Olarak Güncelleme:
    siberrepo -epel 9.1

    Çıktı:

    epel deposunun versiyonu '9.1' olarak güncellendi.
  4. Versiyonları Tekrar Listeleme:
    siberrepo

    Çıktı:

    Mevcut depo versiyonları:
    - almalinux: 9.3
    - epel: 9.1

Sonuç #

Bu araç sayesinde, depolarınızın versiyonlarını kolayca yönetebilir ve güncellemeleri sorunsuz bir şekilde gerçekleştirebilirsiniz. Betik, isteklerinize göre özelleştirilebilir ve diğer depoları da eklemek mümkündür.

Bir yanıt yazın