From bdaec0c03bf899c2c952c0f712c4102626da08dd Mon Sep 17 00:00:00 2001 From: librelad Date: Sat, 1 Aug 2026 10:55:30 +0100 Subject: [PATCH] fix(install): resolve the 7-Zip package name per release `apt install p7zip*` only still resolves on Debian 13 / Ubuntu 24.04+ because the renamed `7zip` package happens to declare `Provides: p7zip`. That is an alias we don't control, so pick the real package name against the freshly-updated lists instead: `7zip` where it exists, `p7zip-full` otherwise. Match on a real package stanza rather than apt-cache's exit status, which returns 0 with empty output for provided-only names. Also in this path: - apt -> apt-get for the scripted calls, so the "apt does not have a stable CLI interface" warning stops polluting the captured $result. - drop a duplicated `pv` from the package list. - move the package list below `apt-get update` so the 7-Zip probe reads current lists. Debian 10 sysctl check now reads OS_TYPE/OS_VERSION from detectOS rather than shelling out to lsb_release, which minimal images don't ship. This also stops a non-Debian release numbered "10" from matching. Co-Authored-By: Claude Opus 5 --- .../install/rootless/rootless_docker.sh | 5 ++++- scripts/os/install/ubuntu.sh | 19 +++++++++++++++---- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/scripts/docker/install/rootless/rootless_docker.sh b/scripts/docker/install/rootless/rootless_docker.sh index c54ec54..3565ab4 100755 --- a/scripts/docker/install/rootless/rootless_docker.sh +++ b/scripts/docker/install/rootless/rootless_docker.sh @@ -38,7 +38,10 @@ installDockerRootless() installed_version=$(slirp4netns --version 2>/dev/null | head -n1 | awk '{print $3}') isSuccessful "slirp4netns ${installed_version:-installed} is ready" - if [[ $(lsb_release -rs) == "10" ]]; then + # Debian 10 only. Use the values detectOS already resolved from /etc/os-release + # instead of shelling out to lsb_release, which isn't installed by default on + # minimal Ubuntu/Debian images (and would otherwise just error to stderr here). + if [[ "$OS_TYPE" == "Debian" && "$OS_VERSION" == "10" ]]; then ((menu_number++)) echo "" echo "---- $menu_number. Updating the sysctl file for Updating Debian 10." diff --git a/scripts/os/install/ubuntu.sh b/scripts/os/install/ubuntu.sh index 7b24420..6081eb6 100755 --- a/scripts/os/install/ubuntu.sh +++ b/scripts/os/install/ubuntu.sh @@ -22,19 +22,30 @@ installDebianUbuntu() fi if checkIfOSUpdateShouldRun; then - installed_apps="apt install curl dialog pv wget git zip htop sqlite3 pv sshpass rsync acl apache2-utils inotify-tools jq p7zip*" - isNotice "Installing System Updates... this may take a while." if [[ "$OS_TYPE" == "Debian" ]]; then export DEBIAN_FRONTEND="noninteractive" fi - local result; result=$(DEBIAN_FRONTEND=noninteractive APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 $priv apt update -qq 2>&1 && DEBIAN_FRONTEND=noninteractive APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 $priv apt install sudo -yqq 2>&1 && $priv apt-get autoclean 2>&1) + local result; result=$(DEBIAN_FRONTEND=noninteractive APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 $priv apt-get update -qq 2>&1 && DEBIAN_FRONTEND=noninteractive APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 $priv apt-get install sudo -yqq 2>&1 && $priv apt-get autoclean 2>&1) checkSuccess "Updating System Operating system." - local result; result=$(DEBIAN_FRONTEND=noninteractive APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 $priv apt update -qq 2>&1) + local result; result=$(DEBIAN_FRONTEND=noninteractive APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 $priv apt-get update -qq 2>&1) checkSuccess "Running application update" + # 7-Zip changed package name: Debian 13 and Ubuntu 24.04+ ship `7zip`, older + # releases ship `p7zip-full`. Resolve against the freshly-updated package + # lists rather than relying on a `p7zip*` glob — that only still matches on + # new releases because `7zip` happens to declare `Provides: p7zip`. + # Match on a real package stanza, not just apt-cache's exit status — it + # returns 0 with empty output for virtual/provided-only names. + local sevenzip="p7zip-full" + if apt-cache show 7zip 2>/dev/null | grep -q .; then + sevenzip="7zip" + fi + + installed_apps="apt-get install curl dialog pv wget git zip htop sqlite3 sshpass rsync acl apache2-utils inotify-tools jq $sevenzip" + local result; result=$(DEBIAN_FRONTEND=noninteractive APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 $priv $installed_apps -yqq 2>&1) checkSuccess "Installing system applications" else