estrai feat_add_lsb_release in file dedicato e migliora rilevamento distro

- nuovo featlib/lsb-release.sh con feat_add_lsb_release
- docker.sh importa lsb-release.sh
- logica robusta per DISTRIB_ID/DISTRIB_CODENAME con fallback multipli
- case-insensitive per LinuxMint/Ubuntu
- lsb-release installato on-demand solo se necessario
master
Guido Longoni 2026-01-24 06:11:06 +01:00
parent 296b354422
commit 92bad88c68
2 changed files with 48 additions and 8 deletions

View File

@ -1,6 +1,8 @@
#! /bin/bash -- #! /bin/bash --
[ ! -z "${GREZZO_1577141523}" ] && return; GREZZO_1577141523=0 [ ! -z "${GREZZO_1577141523}" ] && return; GREZZO_1577141523=0
. "$(this_script_path)/lsb-release.sh"
function feat_addpacks_docker() { function feat_addpacks_docker() {
if ! feat_missing "apt-get"; then if ! feat_missing "apt-get"; then
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done
@ -10,30 +12,51 @@ function feat_addpacks_docker() {
sudo apt-get install \ sudo apt-get install \
ca-certificates \ ca-certificates \
curl \ curl \
gnupg \ gnupg
lsb-release
sudo install -m 0755 -d /etc/apt/keyrings sudo install -m 0755 -d /etc/apt/keyrings
if [ -f /etc/lsb-release ]; then
. /etc/lsb-release . /etc/lsb-release
fi
if [ -f /etc/os-release ]; then
. /etc/os-release
fi
DISTRIB_ID="${DISTRIB_ID:-$ID}"
DISTRIB_CODENAME="${DISTRIB_CODENAME:-${UBUNTU_CODENAME:-$VERSION_CODENAME}}"
if [ -z "$DISTRIB_CODENAME" ]; then
feat_needed "lsb_release"
if [ -f /etc/lsb-release ]; then
. /etc/lsb-release
fi
DISTRIB_ID="${DISTRIB_ID:-$ID}"
DISTRIB_CODENAME="${DISTRIB_CODENAME:-${UBUNTU_CODENAME:-$VERSION_CODENAME}}"
if [ -z "$DISTRIB_CODENAME" ]; then
echo "Impossibile determinare DISTRIB_CODENAME (mancano /etc/lsb-release e /etc/os-release)" >&2
return 1
fi
fi
sudo rm -rf /etc/apt/keyrings/docker.gpg >/dev/null 2>&1 sudo rm -rf /etc/apt/keyrings/docker.gpg >/dev/null 2>&1
if [[ "$DISTRIB_ID" == "LinuxMint" ]]; then if [[ "$DISTRIB_ID" == "LinuxMint" || "$DISTRIB_ID" == "linuxmint" ]]; then
if [ -f /etc/upstream-release/lsb-release ]; then
. /etc/upstream-release/lsb-release . /etc/upstream-release/lsb-release
DISTRIB_CODENAME="${DISTRIB_CODENAME:-${UBUNTU_CODENAME:-$VERSION_CODENAME}}"
fi
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc
echo \ echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$DISTRIB_CODENAME stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null $DISTRIB_CODENAME stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
elif [[ "$DISTRIB_ID" == "Ubuntu" ]]; then elif [[ "$DISTRIB_ID" == "Ubuntu" || "$DISTRIB_ID" == "ubuntu" ]]; then
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc
echo \ echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null $DISTRIB_CODENAME stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
else else
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc
echo \ echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null $DISTRIB_CODENAME stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
fi fi
sudo apt-get update sudo apt-get update
fi fi

View File

@ -0,0 +1,17 @@
#! /bin/bash --
[ ! -z "${GREZZO_1737747200}" ] && return; GREZZO_1737747200=0
function feat_add_lsb_release() {
if ! feat_missing "apt-get"; then
sudo apt-get update
sudo apt-get install -y lsb-release
elif ! feat_missing "pacman"; then
sudo pacman -S --needed lsb-release
elif ! feat_missing "apk"; then
sudo apk add --no-cache lsb-release
elif ! feat_missing "yum"; then
sudo yum install -y redhat-lsb-core
elif ! feat_missing "zypper"; then
sudo zypper in lsb-release
fi
}