Update system_utils.sh

This commit is contained in:
MacRimi 2025-07-30 18:18:13 +02:00
parent 23f8b97319
commit f8ebf03afd

View File

@ -1,13 +1,12 @@
#!/bin/bash
# ==========================================================
# ProxMenux - A menu-driven script for Proxmox VE management
# ==========================================================
# Author : MacRimi
# Copyright : (c) 2024 MacRimi
# License : MIT (https://raw.githubusercontent.com/MacRimi/ProxMenux/main/LICENSE)
# Version : 1.0
# Last Updated: 30/06/2025
# Version : 1.1
# Last Updated: 30/07/2025
# ==========================================================
# Description:
# This script provides an interactive system utilities installer with a
@ -34,8 +33,8 @@
# It includes built-in troubleshooting for common PATH and command availability
# issues that may occur after package installation.
#
# Configuration ============================================
# Configuration ============================================
REPO_URL="https://raw.githubusercontent.com/MacRimi/ProxMenux/main"
BASE_DIR="/usr/local/share/proxmenux"
UTILS_FILE="$BASE_DIR/utils.sh"
@ -44,34 +43,47 @@ VENV_PATH="/opt/googletrans-env"
if [[ -f "$UTILS_FILE" ]]; then
source "$UTILS_FILE"
fi
load_language
initialize_cache
OS_CODENAME="$(grep "VERSION_CODENAME=" /etc/os-release | cut -d"=" -f 2 | xargs )"
# ==========================================================
install_system_utils() {
command_exists() {
command -v "$1" >/dev/null 2>&1
}
ensure_repositories() {
local sources_file="/etc/apt/sources.list"
local need_update=false
if ! grep -q "deb.*${OS_CODENAME}.*main" "$sources_file"; then
echo "deb http://deb.debian.org/debian ${OS_CODENAME} main contrib non-free non-free-firmware" >> "$sources_file"
need_update=true
fi
if [ "$need_update" = true ] || ! apt list --installed >/dev/null 2>&1; then
apt update >/dev/null 2>&1
fi
return 0
}
install_single_package() {
local package="$1"
local command_name="${2:-$package}"
local description="$3"
msg_info "$(translate "Installing") $package ($description)..."
local install_success=false
if command_exists apt; then
if apt update >/dev/null 2>&1 && apt install -y "$package" >/dev/null 2>&1; then
# No need for apt update here because it's done in ensure_repositories
if apt install -y "$package" >/dev/null 2>&1; then
install_success=true
fi
elif command_exists yum; then
@ -98,12 +110,9 @@ install_system_utils() {
cleanup
if [ "$install_success" = true ]; then
hash -r 2>/dev/null
sleep 1
if command_exists "$command_name"; then
msg_ok "$package $(translate "installed correctly and available")"
return 0
@ -118,7 +127,6 @@ install_system_utils() {
fi
}
show_main_utilities_menu() {
local choice
choice=$(dialog --clear --backtitle "ProxMenux" \
@ -138,7 +146,6 @@ install_system_utils() {
echo "$choice"
}
show_custom_selection() {
local utilities=(
"axel" "$(translate "Download accelerator")" "OFF"
@ -175,7 +182,6 @@ install_system_utils() {
echo "$selected"
}
install_utility_group() {
local group_name="$1"
shift
@ -185,11 +191,16 @@ install_system_utils() {
show_proxmenux_logo
msg_title "$(translate "Installing group"): $group_name"
# Ensure repositories are configured before installing
if ! ensure_repositories; then
msg_error "$(translate "Failed to configure repositories. Installation aborted.")"
return 1
fi
local failed=0
local success=0
local warning=0
declare -A package_to_command=(
["mlocate"]="locate"
["msr-tools"]="rdmsr"
@ -201,11 +212,7 @@ install_system_utils() {
for util_info in "${utilities[@]}"; do
IFS=':' read -r package command description <<< "$util_info"
local verify_command="${package_to_command[$package]:-$command}"
install_single_package "$package" "$verify_command" "$description"
local install_result=$?
@ -227,7 +234,6 @@ install_system_utils() {
--msgbox "$(translate "Group"): $group_name\n$(translate "Successful"): $success\n$(translate "With warnings"): $warning\n$(translate "Failed"): $failed" 10 50
}
install_selected_utilities() {
local selected="$1"
@ -242,15 +248,18 @@ install_system_utils() {
show_proxmenux_logo
msg_title "$(translate "Installing selected utilities")"
# Ensure repositories are configured before installing
if ! ensure_repositories; then
msg_error "$(translate "Failed to configure repositories. Installation aborted.")"
return 1
fi
local failed=0
local success=0
local warning=0
local selected_array
IFS=' ' read -ra selected_array <<< "$selected"
declare -A package_to_command=(
["mlocate"]="locate"
["msr-tools"]="rdmsr"
@ -261,13 +270,8 @@ install_system_utils() {
)
for util in "${selected_array[@]}"; do
util=$(echo "$util" | tr -d '"')
local verify_command="${package_to_command[$util]:-$util}"
install_single_package "$util" "$verify_command" "$util"
local install_result=$?
@ -278,12 +282,11 @@ install_system_utils() {
esac
done
if [ -f ~/.bashrc ]; then
source ~/.bashrc >/dev/null 2>&1
fi
hash -r 2>/dev/null
hash -r 2>/dev/null
echo
msg_info2 "$(translate "Installation summary"):"
msg_ok "$(translate "Successful"): $success"
@ -295,7 +298,6 @@ install_system_utils() {
--msgbox "$(translate "Selected utilities installation completed")\n$(translate "Successful"): $success\n$(translate "With warnings"): $warning\n$(translate "Failed"): $failed" 12 60
}
verify_installations() {
clear
show_proxmenux_logo
@ -352,20 +354,15 @@ install_system_utils() {
--msgbox "$summary$status_text" 25 80
}
# Main menu loop
while true; do
choice=$(show_main_utilities_menu)
case $choice in
1)
selected=$(show_custom_selection)
install_selected_utilities "$selected"
;;
2)
all_utils=(
"axel:axel:Download accelerator"
"dos2unix:dos2unix:Convert DOS/Unix text files"
@ -394,7 +391,6 @@ install_system_utils() {
install_utility_group "$(translate "ALL Utilities")" "${all_utils[@]}"
;;
3)
basic_utils=(
"grc:grc:Generic Colouriser"
"htop:htop:Process monitor"
@ -405,7 +401,6 @@ install_system_utils() {
install_utility_group "$(translate "Basic Utilities")" "${basic_utils[@]}"
;;
4)
dev_utils=(
"git:git:Version control"
"vim:vim:Advanced editor"
@ -414,7 +409,6 @@ install_system_utils() {
install_utility_group "$(translate "Development Tools")" "${dev_utils[@]}"
;;
5)
compress_utils=(
"zip:zip:ZIP compressor"
"unzip:unzip:ZIP extractor"
@ -423,7 +417,6 @@ install_system_utils() {
install_utility_group "$(translate "Compression Tools")" "${compress_utils[@]}"
;;
6)
multiplex_utils=(
"screen:screen:Terminal multiplexer"
"tmux:tmux:Advanced multiplexer"
@ -431,7 +424,6 @@ install_system_utils() {
install_utility_group "$(translate "Terminal Multiplexers")" "${multiplex_utils[@]}"
;;
7)
analysis_utils=(
"jq:jq:JSON processor"
"ncdu:ncdu:Disk analyzer"
@ -440,7 +432,6 @@ install_system_utils() {
install_utility_group "$(translate "Analysis Tools")" "${analysis_utils[@]}"
;;
8)
network_utils=(
"nethogs:nethogs:Network monitor"
"nmap:nmap:Network scanner"
@ -466,5 +457,4 @@ install_system_utils() {
clear
}
install_system_utils