Da sich CHIRP-next nicht in dem Repository meines Betriebssystem befindet und ich keine Luste habe, immer manuell upzudaten, habe ich mir ein Shell-Skript erstellt, welches das Update in einem Rutsch erledigt. Es kann außerdem auch eine Installation von Chirp vornehmen.
Hinweis. Das Skript ist für meine Bedürfnisse unter Debian 12 angepasst. Es kann fehlerhaft sein.
Im Prinzip funktioniert es so:
- Ist CHIRP-next nicht installiert, werden auf Wunsch die Abhängigkeiten und CHIRP-next installiert
- Sollte CHIRP-next schon installiert sein, sucht das Skript nach einer neueren Version und installiert diese

Download
Einfach folgenden Code in die Konsole eingeben.
wget https://eulenbit.net/wp-content/uploads/2025/04/installer-chirp-next.sh && chmod +x installer-chirp-next.sh && ./installer-chirp-next.sh
Alternativ kann man auch das Skript herunterladen. Danach muss es noch mit
chmod +x installer-chirp-next.sh
ausführbar und mit
./installer-chirp-next.sh
gestartet werden.
Shell-Skript
#!/bin/bash
# CHIRP-next URL
BASE_URL="https://archive.chirpmyradio.com/chirp_next/"
clear
# --- Farben und Stile ---
NC='\033[0m'
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
BOLD='\033[1m'
UNDERLINE='\033[4m'
INVERT='\033[7m'
BOLD_GREEN='\033[1;32m'
BOLD_RED='\033[1;31m'
BLINK_RED='\033[5;31m'
# --- Einführungsbildschirm ---
echo -e "==============================================="
echo -e "${BOLD_GREEN} CHIRP-next Installer Skript${NC}"
echo -e "${GREEN} für Debian, *Ubuntu, Mint, (Fedora & Arch)${NC}"
echo -e "==============================================="
echo " Dieses Skript führt folgende Aktionen durch:"
echo " - Prüft Systemvoraussetzungen"
echo " - Installiert benötigte Abhängigkeiten"
echo " - Findet die neueste CHIRP-Version"
echo " - Führt ein Update/Installation durch"
echo ""
echo " Skript-Download und Dokumentation:"
echo ""
echo -e " 🌐 ${BOLD}https://eulenbit.net/chirp/${NC}"
echo -e " ${BOLD}by DL5VU${NC}"
echo ""
echo -e "==============================================="
echo ""
read -p "Drücke [Enter] um fortzufahren oder [Strg+C] zum Abbrechen"
echo -e "Bitte warten ..."
# --- Distribution Detection ---
DISTRO_ID=$(grep -oP '^ID=\K\w+' /etc/os-release 2>/dev/null)
DISTRO_ID_LIKE=$(grep -oP '^ID_LIKE=\K\w+' /etc/os-release 2>/dev/null)
# --- Paketabhängigkeiten definieren ---
case $DISTRO_ID in
"debian"|"ubuntu")
WX_PACKAGE="python3-wxgtk4.0"
PIPX_PACKAGE="pipx"
PKG_MGR="apt"
;;
"fedora"|"rhel")
WX_PACKAGE="python3-wxpython4"
PIPX_PACKAGE="pipx"
PKG_MGR="dnf"
;;
"arch")
WX_PACKAGE="wxpython"
PIPX_PACKAGE="python-pipx"
PKG_MGR="pacman"
;;
*)
if [[ "$DISTRO_ID_LIKE" == *"debian"* ]]; then
WX_PACKAGE="python3-wxgtk4.0"
PIPX_PACKAGE="pipx"
PKG_MGR="apt"
else
HIRP-neecho -e "${RED}Nicht unterstützte Distribution: ${DISTRO_ID}${NC}"
exit 1
fi
;;
esac
# --- Hilfsfunktionen ---
check_package() {
case $PKG_MGR in
"apt") dpkg -s "$1" &> /dev/null ;;
"dnf") rpm -q "$1" &> /dev/null ;;
"pacman") pacman -Qs "$1" &> /dev/null ;;
esac
}
show_install_menu() {
local pkg=$1
local install_cmd=$2
local manual_cmd=$3
echo -e "${YELLOW}Das Paket '${pkg}' ist nicht installiert.${NC}"
echo "1) Automatisch installieren (benötigt sudo)"
echo "2) Installationsanleitung anzeigen und Skript beenden"
echo "3) Skript abbrechen"
read -p "Deine Wahl (1-3): " choice
case $choice in
1)
echo -e "${GREEN}Installiere ${pkg}...${NC}"
eval "sudo ${install_cmd}" || {
echo -e "${RED}Installation fehlgeschlagen!${NC}"
exit 1
}
;;
2)
echo -e "\n${BLUE}Führen Sie folgenden Befehl aus:${NC}"
echo -e "${manual_cmd}"
echo -e "\nStarten Sie das Skript anschließend erneut.\n"
exit 0
;;
3)
echo -e "${RED}Abbruch durch Benutzer${NC}"
exit 0
;;
*)
echo -e "${RED}Ungültige Eingabe!${NC}"
exit 1
;;
esac
}
# --- wxPython Installation prüfen ---
if ! check_package "$WX_PACKAGE"; then
case $PKG_MGR in
"apt")
install_cmd="apt install -y $WX_PACKAGE"
manual_cmd="sudo apt install $WX_PACKAGE"
;;
"dnf")
install_cmd="dnf install -y $WX_PACKAGE"
manual_cmd="sudo dnf install $WX_PACKAGE"
;;
"pacman")
install_cmd="pacman -Sy $WX_PACKAGE"
manual_cmd="sudo pacman -Sy $WX_PACKAGE"
;;
esac
show_install_menu "$WX_PACKAGE" "$install_cmd" "$manual_cmd"
fi
# --- pipx Installation prüfen ---
if ! command -v pipx &> /dev/null; then
echo -e "${YELLOW}pipx ist nicht installiert.${NC}"
echo "1) Systempaket installieren (benötigt sudo)"
echo "2) Pipx lokal installieren (ohne sudo)"
echo "3) Installationsanleitung anzeigen"
echo "4) Skript abbrechen"
read -p "Ihre Wahl (1-4): " choice
case $choice in
1)
case $PKG_MGR in
"apt") cmd="apt install -y $PIPX_PACKAGE" ;;
"dnf") cmd="dnf install -y $PIPX_PACKAGE" ;;
"pacman") cmd="pacman -Sy $PIPX_PACKAGE" ;;
esac
echo -e "${GREEN}Installiere pipx...${NC}"
eval "sudo $cmd" && python3 -m pipx ensurepath || {
echo -e "${RED}Installation fehlgeschlagen!${NC}"
exit 1
}
;;
2)
echo -e "${GREEN}Lokale Installation mit pip...${NC}"
python3 -m pip install --user pipx && python3 -m pipx ensurepath || {
echo -e "${RED}Installation fehlgeschlagen!${NC}"
exit 1
}
export PATH="$PATH:$HOME/.local/bin"
;;
3)
echo -e "\n${BLUE}Systeminstallation:${NC}"
case $PKG_MGR in
"apt") echo "sudo apt install $PIPX_PACKAGE" ;;
"dnf") echo "sudo dnf install $PIPX_PACKAGE" ;;
"pacman") echo "sudo pacman -Sy $PIPX_PACKAGE" ;;
esac
echo -e "\n${BLUE}Lokale Installation:${NC}"
echo "python3 -m pip install --user pipx"
echo "python3 -m pipx ensurepath"
echo -e "\nStarten Sie das Skript anschließend erneut.\n"
exit 0
;;
4)
echo -e "${RED}Abbruch durch Benutzer${NC}"
exit 0
;;
*)
echo -e "${RED}Ungültige Eingabe!${NC}"
exit 1
;;
esac
fi
# --- Versionsprüfung für chirp ---
if pipx list | grep -q 'package chirp'; then
if command -v jq &> /dev/null; then
installed_version=$(pipx list --json | jq -r '.venvs.chirp.metadata.main_package.package_version // empty' 2>/dev/null)
else
installed_version=$(pipx runpip chirp freeze | grep -i 'chirp==' | cut -d= -f3)
fi
else
installed_version="0"
fi
# Ermittle neueste verfügbare Version
latest_dir=$(wget -qO- "$BASE_URL" | grep -oP 'href="next-\d{8}/"' | grep -oP '\d{8}' | sort -r | head -n1)
if [ -z "$latest_dir" ]; then
echo -e "${RED}Keine Versionen auf dem Server gefunden.${NC}"
exit 1
fi
# Versionsvergleich
if [ "$installed_version" -ge "$latest_dir" ]; then
echo -e "${GREEN}Aktuelle Version bereits installiert: ${installed_version}${NC}"
echo "Keine neuere Version verfügbar."
exit 0
fi
# Bestätigung für Update
echo -e "${BLUE}Gefundene Versionen:${NC}"
echo " - Installiert: ${installed_version:-nicht installiert}"
echo " - Verfügbar: ${latest_dir}"
echo ""
read -p "Möchten Sie auf Version ${latest_dir} aktualisieren? (j/N) " -r antwort
echo ""
if [[ ! "$antwort" =~ ^[jJ] ]]; then
echo -e "${RED}Abbruch durch Benutzer${NC}"
exit 0
fi
# --- Deinstallation bei Update ---
if [ "$installed_version" != "0" ]; then
echo -e "${YELLOW}Deinstalliere Version ${installed_version}...${NC}"
pipx uninstall chirp || {
echo -e "${RED}Deinstallation fehlgeschlagen!${NC}"
exit 1
}
fi
# --- Verzeichnisvorbereitung ---
dir_name=$(date +%Y%m%d)-inst-chirp
dir_path="./${dir_name}"
if [ -d "$dir_path" ]; then
echo -e "${YELLOW}Bereinige Verzeichnis ${dir_path}...${NC}"
rm -rf "${dir_path:?}/"*
else
mkdir -p "$dir_path"
fi
# --- Download und Installation ---
file_name="chirp-${latest_dir}-py3-none-any.whl"
download_url="${BASE_URL}next-${latest_dir}/${file_name}"
echo -e "${BLUE}Lade ${file_name} herunter...${NC}"
wget -q --show-progress -P "$dir_path" "$download_url" || {
echo -e "${RED}Download fehlgeschlagen${NC}"
exit 1
}
if [ -f "${dir_path}/${file_name}" ]; then
echo -e "${GREEN}Starte Installation...${NC}"
pipx install --system-site-packages "${dir_path}/${file_name}" || {
echo -e "${RED}Installation fehlgeschlagen!${NC}"
exit 1
}
# Erfolgsmeldung
echo -e "\n${GREEN}✅ Erfolgreich aktualisiert auf Version: ${latest_dir}${NC}"
echo -e "Installationspfad: ${BLUE}${dir_path}/${file_name}${NC}"
# Temporäres Verzeichnis bereinigen
echo -e "\n${YELLOW}Bereinige temporäres Verzeichnis...${NC}"
rm -rf "${dir_path}"
echo -e "${GREEN}Aufräumen abgeschlossen.${NC}"
else
echo -e "${RED}Datei nicht gefunden: ${dir_path}/${file_name}${NC}"
exit 1
fi

Wenn dir mein Artikel gefällt, du Feedback geben möchtest, Verbesserungsvorschläge hast oder dir ein Fehler aufgefallen ist, kannst du mich gerne anschreiben. Kontaktdaten und weitere Infos sind auf meiner „Über mich“-Seite zu finden.