KINPM | Sade, Basit, Temizlik Öncelikli ve Açık Kaynaklı Güncelleme Yöneticisi

KINPM Is Not a Package Manager

Çoğu dağıtımın varsayılan olarak kullandırttığı kullanıcı arayüzlü güncelleme yöneticilerinin güncelleme yaptıktan sonra otomatik olarak apt clean ve apt autoremove komutlarını çalıştırmamasını sevmiyorum. Bu yüzden her güncelleme sonrası bu iki komutu da otomatik olarak çalıştıracak Python bazlı ve terminal arayüzlü basit bir güncelleme yöneticisi yaptım. Pardus’ta da sadece apt varsayılan olduğu için sadece onun komutlarını içeriyor.

image

Hem İngilizce hem de Türkçe sistemler için ayrı ayrı iki tane versiyonu var ama eğer sisteminiz İngilizce ise Türkçe, Türkçe ise İngilizce olanı da kullanabilirsiniz. Sadece kurulum talimatlarındaki komutta ufak bir değişiklik yapmanız gerekiyor o kadar.


KINPM’in Artıları:

1-) Çok basit ve hafif.
2-) Her güncellemeden sonra artıkları temizliyor.
3-) Özgür ve açık kaynaklı, herkes bağımsız olarak kodu değiştirebilir, geliştirebilir veya dağıtabilir.
4-) Kurulumdan sonra sadece sudo kinpm yazarsanız sudo apt update, sudo apt upgrade, sudo apt autoremove ve sudo apt clean ile tek tek uğraşmanız gerekmez.


KINPM’in Eksileri:

1-) Kod çok amatörce, ayrıca hata kontrol sistemi farklı dillerde ve sürümlerde bozulabilir. Ama internetiniz patates değilse bu bir sorun olmayacaktır.
2-) Her seferinde shell=True kullandığı için shell injection saldırılarına açık, ama bu pek de olası bir tehdit değil, çünkü KINPM tamamen yerelde çalışır.
3-) Bir .deb dosyası ile kurulmuyor, ama kurulumu basit. Tek yapmanız gereken bir py dosyasını istenilen yere çıkarıp uçbirime bir komut yapıştırmak.
4-) Eğer uzun komutları seviyorsanız sıkıcı olabilir.


Eğer her şeyi okuduysanız, işte indirme bağlantıları:

KINPM for English Debian Systems
Source Code of KINPM (Python/English)

Debian Tabanlı Türkçe Sistemler için KINPM
KINPM’in Kaynak Kodu (Python/Türkçe)

Bunlar tek orijinal KINPM indirme bağlantılarıdır. Başkaları tarafından geliştirilen KINPM sürümleri kötü amaçlı olabilir.

Keyifli kullanımlar!

1 Beğeni

Merhabalar Elinize Sağlık Test Ettim Güzel Çalışıyor.
Fikir Olması İçin Dil Çevirisi İçin Ayrı Ayrı Dosya Değilde Tek Dosya İçinde Kullanıcıya Dil Seçimi Sunmak Daha İyi Olablir.

Örnek:


Dil Çeviri İçeren Tüm Kod:

#!/usr/bin/env python3

# KINPM | KINPM Is Not a Package Manager

from subprocess import run
from time import sleep
from sys import exit


languages = {
    "tr": {
        "title": "\n----------------------------------\n| KINPM Is Not a Package Manager |\n----------------------------------",
        "lang_select": "Dil seçiniz / Select Language:\n\n1: Türkçe\n2: English\n\n>>> ",
        "invalid_lang": "Geçersiz seçim! Türkçe olarak devam ediliyor.",
        "sudo_error": "\nKINPM'i sudo ile başlatmadınız!\n",
        "menu": "\nNe yapmak istersiniz?\n\n1: Önbelleği güncelleme\n2: Temizleme\n0: Çıkış\n\n>>> ",
        "error": "Bir hata oluştu!",
        "invalid_option": "Böyle bir seçenek yok!",
        "updating_cache": "Önbellek güncelleniyor...",
        "all_updated": "Tüm paketler güncel.",
        "update_available": "Güncellenebilir paketler var. Hepsini güncellemek ister misiniz? [E/any]: ",
        "updating": "Güncelleniyor...",
        "update_complete": "Tüm paketler güncellendi!",
        "update_skipped": "Peki, güncellemeler es geçiliyor.",
        "cleanup_complete": "Temizlik bitti!",
        "yes_key": "e"
    },
    "en": {
        "title": "\n----------------------------------\n| KINPM Is Not a Package Manager |\n----------------------------------",
        "lang_select": "Dil seçiniz / Select Language:\n\n1: Türkçe\n2: English\n\n>>> ",
        "invalid_lang": "Invalid selection! Continuing in English.",
        "sudo_error": "\nKINPM was not started with sudo!\n",
        "menu": "\nWhat would you like to do?\n\n1: Update cache\n2: Cleanup\n0: Exit\n\n>>> ",
        "error": "An error occurred!",
        "invalid_option": "No such option!",
        "updating_cache": "Updating cache...",
        "all_updated": "All packages are up to date.",
        "update_available": "Updates are available. Do you want to update all? [Y/any]: ",
        "updating": "Updating...",
        "update_complete": "All packages updated!",
        "update_skipped": "Okay, skipping updates.",
        "cleanup_complete": "Cleanup completed!",
        "yes_key": "y"
    }
}


selected_lang = "tr"

def get_text(key):
    return languages[selected_lang][key]

def hata():
    print(get_text("error"))
    return None

def yok():
    print(get_text("invalid_option"))


sleep(1)
print(get_text("title"))
sleep(1)

while True:
    lang_choice = input(get_text("lang_select"))
    lang_choice = lang_choice.replace(" ", "")
    if lang_choice == "1":
        selected_lang = "tr"
        break
    elif lang_choice == "2":
        selected_lang = "en"
        break
    else:
        print(get_text("invalid_lang"))
        sleep(1)


result = run("cd /root || echo 'kök'", shell=True, capture_output=True, text=True)
if "kök" in result.stdout:
    sleep(3)
    print(get_text("sudo_error"))
    exit()
    

while True: 
    sleep(2)
    islem = input(get_text("menu"))
    islem = islem.replace(" ","")
    sleep(1)
    print()
    if islem == "1":
        print(get_text("updating_cache"))
        result = run("apt update", shell=True, capture_output=True, text=True)
        if "çözümlenemedi" in result.stdout or "geçici bir sorunla" in result.stdout or "but failed" in result.stdout:
            hata()
        elif "Tüm paketler güncel." in result.stdout or "All packages are up to date." in result.stdout:
            print(get_text("all_updated"))
        else:
            sleep(1)
            gncl = input(get_text("update_available"))
            gncl = gncl.lower()
            gncl = gncl.replace(" ","")
            if gncl == get_text("yes_key"):
                sleep(1)
                print(get_text("updating"))
                result = run("apt update && apt upgrade -y ; apt autoremove -y ; apt clean", shell=True, capture_output=True, text=True)
                if "çözümlenemedi" in result.stdout or "geçici bir sorunla" in result.stdout or "but failed" in result.stdout:
                    hata()
                else:
                    print(get_text("update_complete"))
            else:
                sleep(1)
                print(get_text("update_skipped"))
    elif islem == "2":
        try:
            run("apt autoremove -y ; apt clean", shell=True, capture_output=True, text=True)
        except Exception:
            hata()
        print(get_text("cleanup_complete"))
    elif islem == "0":
        exit()
    else:
        yok()

1 Beğeni

Kodlamaya yeni başladıysanız konsol tabanlı bir uygulama yaparak bence doğru yerden başlamışsınız. Tebrik ederim.

Uygulamayı test etmedim ama çabanızı destekliyorum. İlerlettikçe ben de tester olarak destek verebilirim.

İyi çalışmalar.

1 Beğeni

teşekkürler eksik olmayın :pray:

elinize sağlık, benim çok fazla zamanım veya bilgim olmadığı için o kadar detaylı yapamadım. çok mantıklı ve güzel olmuş.

1 Beğeni