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 versiyonunu9.3
olarak ayarlar.siberrepo -epel -9.1
komutu, EPEL deposunun versiyonunu9.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=$2if [[ -z “${repos[$repo_name]}” ]]; then
echo “Hata: ‘$repo_name’ desteklenmeyen bir depo.”
exit 1
fivar_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”
fifor file in $repo_files; do
sudo sed -i “s/\$releasever/\$${repos[$repo_name]}/g” “$file”
doneecho “$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ındanEnter
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ındakireleasever
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 #
- Versiyonları Listeleme:
siberrepo
Çıktı:
Mevcut depo versiyonları:
- almalinux: 9.4
- epel: 9
- AlmaLinux Versiyonunu 9.3 Olarak Güncelleme:
siberrepo -almalinux 9.3
Çıktı:
almalinux deposunun versiyonu '9.3' olarak güncellendi.
- EPEL Versiyonunu 9.1 Olarak Güncelleme:
siberrepo -epel 9.1
Çıktı:
epel deposunun versiyonu '9.1' olarak güncellendi.
- 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.