Kod: Tümünü seç
#!/bin/bash
#############################
# SIMPLE DEB MANAGER
#############################
# --- AUTO ROOT ELEVATION ---
if [[ $EUID -ne 0 ]]; then
echo "Root yetkisi gerekiyor. sudo ile yeniden başlatılıyor..."
exec sudo "$0" "$@"
fi
# --- FUNCTIONS ---
get_deb_path() {
whiptail --inputbox "Tam .deb dosya yolunu giriniz:" 10 70 2>/tmp/debpath
FILE=$(cat /tmp/debpath)
if [[ ! -f "$FILE" ]]; then
whiptail --msgbox "Dosya bulunamadı!" 8 40
return 1
fi
}
get_multiple_deb_paths() {
whiptail --inputbox "Birden fazla .deb yolu girin (boşluk ile ayırın):" 12 70 2>/tmp/debpaths
FILES=$(cat /tmp/debpaths)
}
install_single() {
get_deb_path || return
apt install -y "$FILE"
whiptail --msgbox "Kurulum tamamlandı." 8 40
}
install_multiple() {
get_multiple_deb_paths
apt install -y $FILES
whiptail --msgbox "Toplu kurulum tamamlandı." 8 40
}
remove_single() {
PKG=$(whiptail --inputbox "Kaldırılacak paket adını giriniz:" 10 60 3>&1 1>&2 2>&3)
apt purge -y "$PKG"
whiptail --msgbox "Paket kaldırıldı (purge)." 8 40
}
remove_multiple() {
PKGS=$(whiptail --inputbox "Paket adlarını boşluk ile giriniz:" 12 70 3>&1 1>&2 2>&3)
apt purge -y $PKGS
whiptail --msgbox "Toplu purge tamamlandı." 8 40
}
simulate_install() {
get_deb_path || return
apt install --dry-run "$FILE"
read -p "Devam etmek için Enter..."
}
inspect_package() {
get_deb_path || return
clear
echo "====== PAKET BİLGİSİ ======"
dpkg-deb -I "$FILE"
echo ""
echo "====== BAĞIMLILIKLAR ======"
dpkg-deb -f "$FILE" Depends
echo ""
echo "====== BOYUT BİLGİSİ ======"
FILE_SIZE=$(du -h "$FILE" | awk '{print $1}')
INSTALLED_SIZE=$(dpkg-deb -f "$FILE" Installed-Size)
echo "Paket dosya boyutu: $FILE_SIZE"
echo "Kurulum sonrası boyut (KB): $INSTALLED_SIZE"
read -p "Devam etmek için Enter..."
}
while true; do
CHOICE=$(whiptail --title "Simple DEB Manager" --menu "Bir işlem seçin:" 20 70 10 \
"1" "Tekli Kurulum (.deb)" \
"2" "Çoklu Kurulum (.deb)" \
"3" "Tekli Kaldırma (purge)" \
"4" "Çoklu Kaldırma (purge)" \
"5" "Kurulum Simülasyonu (--dry-run)" \
"6" "Paket İçeriği ve Bağımlılık İncele" \
"7" "Çıkış" 3>&1 1>&2 2>&3)
case $CHOICE in
1) install_single ;;
2) install_multiple ;;
3) remove_single ;;
4) remove_multiple ;;
5) simulate_install ;;
6) inspect_package ;;
7) exit 0 ;;
esac
doneGenel Yapı
Root Kontrolü
Betik root yetkisi olmadan çalıştırılırsa kendini sudo ile yeniden başlatıyor.
Bu, apt ve dpkg komutlarının sorunsuz çalışması için gerekli.
Kullanıcı Arayüzü (whiptail)
Tüm girişler ve seçimler whiptail ile yapılır; kullanıcıya menü, input kutusu ve mesaj kutuları gösterir.
Ana İşlevler
Tekli Kurulum (install_single): Kullanıcıdan bir .deb dosya yolu alır, apt install ile kurar.
Çoklu Kurulum (install_multiple): Birden fazla .deb dosyasını kurar.
Tekli Kaldırma (remove_single): Paket adını alıp apt purge ile kaldırır.
Çoklu Kaldırma (remove_multiple): Birden fazla paketi topluca purge eder.
Kurulum Simülasyonu (simulate_install): Gerçek kurulumu yapmadan, bağımlılık ve paket durumunu --dry-run ile test eder.
Paket İncele (inspect_package): .deb dosyasının içeriğini ve bağımlılıklarını dpkg-deb -I ile gösterir, boyut bilgilerini hesaplar.
Ana Döngü (Menu)
Kullanıcı sürekli bir menü üzerinden işlem seçer.
Seçime göre ilgili fonksiyon çağrılır; “Çıkış” seçeneği ile döngü sonlanır.
Bu tasarladığım betik, terminal üzerinden .deb paketlerini kurma, kaldırma, simüle etme ve inceleme işlemlerini basitleştiren bir interaktif araçtır. Kod, menü tabanlı ve kullanıcı dostu olacak şekilde whiptail kullanılmakta...Debian Tasksel yapısının aynısı....
Uyarı .... ! :
Betik apt install veya purge komutlarını doğrudan çağırıyor; eksik veya yanlış yol girilirse sistem paketleri zarar görebilir.
EKRAN GÖRÜNTÜLERİ ( Sistem : GNU/Linux Mint 22.2 LXDE v13.0 x64)




