"description":"CLI utility installer for Proxmox VE, with 25 packages in the canonical list (htop, btop, iperf3, tmux, ...). Custom selection, install-all and predefined groups (basic, development, compression, multiplexers, analysis, network). Groups can include additional packages. Uses ensure_repositories + install_single_package.",
"description":"Picker for 25 CLI utilities in the canonical PROXMENUX_UTILS list. Offers custom selection, install-all, six predefined groups and an installation check. Groups can include tools outside the canonical list. Uses shared ensure_repositories() + install_single_package() helpers for consistent repository handling and per-package feedback.",
"body":"Installs CLI tools from a list of 25 packages. Every installation uses the same flow: <code>ensure_repositories</code> checks that the host has a usable Proxmox repository for the running PVE major version, then <code>install_single_package</code> installs the package and checks that its command is in PATH."
"intro":"Defined in the shared <code>scripts/global/utils-install-functions.sh</code> as <code>PROXMENUX_UTILS</code> (format: <code>package:verify_command:description</code>). Other ProxMenux scripts (e.g. the network monitoring launchers for iftop / iptraf-ng / iperf3) reuse entries from this list so package + verify command stay in sync.",
"<code>ensure_repositories</code> detects PVE 8 or 9 and reads the repositories through the Proxmox API. A host with a usable Proxmox repository is left unchanged; a host with no active subscription and only the Enterprise repository is asked before switching to no-subscription, and <code>apt-get update</code> runs after an accepted switch.",
"summary":"At the end of a group / custom install, a summary dialog shows <em>Successful / With warnings / Failed</em> counts."
},
"verify":{
"heading":"Verify installations",
"intro":"Option 9 is read-only: it walks <code>PROXMENUX_UTILS</code> and runs <code>command -v</code> for each verify command. Output looks like this:",
"outro":"Useful before running scripts that depend on these tools (e.g. <code>uup_dump_iso_creator.sh</code> needs <code>aria2c</code> + <code>cabextract</code> + <code>wimlib-imagex</code>). If anything is missing, run the matching group install or pick the missing packages via custom selection."
},
"troubleshoot":{
"heading":"Troubleshooting",
"reposTitle":"\"Failed to configure repositories. Installation aborted.\"",
"reposBody":"The repository check did not pass: the switch to the no-subscription repository was declined, the subscription status could not be read, or a repository entry needs attention. The message printed above it states the cause. The repositories are listed in <em>Node → Updates → Repositories</em>, and <code>apt-get update</code> from a console shows the error apt reports.",
"warningsBody":"After <code>apt-get install</code>, the helper runs <code>hash -r</code>, waits briefly and checks the expected command with <code>command -v</code>. A warning means that check still failed; it does not identify the cause. Try a new shell, then check the package installation and PATH if the command is still missing.",
"hangsBody":"Most likely a debconf prompt is blocked behind the silenced output. The script wraps all apt calls with <code>DEBIAN_FRONTEND=noninteractive</code>, which usually suppresses prompts, but a few packages still require user input. Cancel with <kbd>Ctrl</kbd>+<kbd>C</kbd>, run <code>apt-get install -y <pkg></code> manually from a shell to see the prompt and decide."
"code":"scripts/utilities/system_utils.sh # this script\nscripts/global/utils-install-functions.sh # PROXMENUX_UTILS, install_single_package\nscripts/global/repository-functions.sh # ensure_repositories\nscripts/global/repository_policy.py # reads and switches repositories through the Proxmox API\n/etc/apt/sources.list.d/proxmox.sources # no-subscription source, written by Proxmox when the switch is accepted"