diff --git a/featlib/docker.sh b/featlib/docker.sh index a8a528f..367620e 100755 --- a/featlib/docker.sh +++ b/featlib/docker.sh @@ -1,6 +1,8 @@ #! /bin/bash -- [ ! -z "${GREZZO_1577141523}" ] && return; GREZZO_1577141523=0 +. "$(this_script_path)/lsb-release.sh" + function feat_addpacks_docker() { 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 @@ -10,30 +12,51 @@ function feat_addpacks_docker() { sudo apt-get install \ ca-certificates \ curl \ - gnupg \ - lsb-release + gnupg sudo install -m 0755 -d /etc/apt/keyrings - . /etc/lsb-release + if [ -f /etc/lsb-release ]; then + . /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 - if [[ "$DISTRIB_ID" == "LinuxMint" ]]; then - . /etc/upstream-release/lsb-release + if [[ "$DISTRIB_ID" == "LinuxMint" || "$DISTRIB_ID" == "linuxmint" ]]; then + if [ -f /etc/upstream-release/lsb-release ]; then + . /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 chmod a+r /etc/apt/keyrings/docker.asc echo \ "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 - 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 chmod a+r /etc/apt/keyrings/docker.asc echo \ "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 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 echo \ "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 sudo apt-get update fi diff --git a/featlib/lsb-release.sh b/featlib/lsb-release.sh new file mode 100644 index 0000000..445f1ee --- /dev/null +++ b/featlib/lsb-release.sh @@ -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 +}