Automated update for script library changes
This commit is contained in:
Родитель
f7a0a8bddd
Коммит
d2d7419316
|
@ -102,7 +102,7 @@ if [ "${PACKAGES_ALREADY_INSTALLED}" != "true" ]; then
|
|||
libkrb5-3 \
|
||||
libgssapi-krb5-2 \
|
||||
libicu[0-9][0-9] \
|
||||
liblttng-ust0 \
|
||||
liblttng-ust[0-9] \
|
||||
libstdc++6 \
|
||||
zlib1g \
|
||||
locales \
|
||||
|
|
|
@ -102,7 +102,7 @@ if [ "${PACKAGES_ALREADY_INSTALLED}" != "true" ]; then
|
|||
libkrb5-3 \
|
||||
libgssapi-krb5-2 \
|
||||
libicu[0-9][0-9] \
|
||||
liblttng-ust0 \
|
||||
liblttng-ust[0-9] \
|
||||
libstdc++6 \
|
||||
zlib1g \
|
||||
locales \
|
||||
|
|
|
@ -14,7 +14,7 @@ set -e
|
|||
AZ_VERSION=${1:-"latest"}
|
||||
MICROSOFT_GPG_KEYS_URI="https://packages.microsoft.com/keys/microsoft.asc"
|
||||
AZCLI_ARCHIVE_ARCHITECTURES="amd64"
|
||||
AZCLI_ARCHIVE_VERSION_CODENAMES="stretch buster bullseye bionic focal"
|
||||
AZCLI_ARCHIVE_VERSION_CODENAMES="stretch buster bullseye bionic focal jammy"
|
||||
|
||||
if [ "$(id -u)" -ne 0 ]; then
|
||||
echo -e 'Script must be run as root. Use sudo, su, or add "USER root" to your Dockerfile before running this script.'
|
||||
|
@ -165,6 +165,7 @@ install_using_pip() {
|
|||
echo "(*) Installing Azure CLI..."
|
||||
. /etc/os-release
|
||||
architecture="$(dpkg --print-architecture)"
|
||||
CACHED_AZURE_VERSION="${AZ_VERSION}" # In case we need to fallback to pip and the apt path has modified the AZ_VERSION variable.
|
||||
if [[ "${AZCLI_ARCHIVE_ARCHITECTURES}" = *"${architecture}"* ]] && [[ "${AZCLI_ARCHIVE_VERSION_CODENAMES}" = *"${VERSION_CODENAME}"* ]]; then
|
||||
install_using_apt || use_pip="true"
|
||||
else
|
||||
|
@ -172,6 +173,7 @@ else
|
|||
fi
|
||||
|
||||
if [ "${use_pip}" = "true" ]; then
|
||||
AZ_VERSION=${CACHED_AZURE_VERSION}
|
||||
install_using_pip
|
||||
|
||||
if [ "$?" != 0 ]; then
|
||||
|
|
|
@ -102,7 +102,7 @@ if [ "${PACKAGES_ALREADY_INSTALLED}" != "true" ]; then
|
|||
libkrb5-3 \
|
||||
libgssapi-krb5-2 \
|
||||
libicu[0-9][0-9] \
|
||||
liblttng-ust0 \
|
||||
liblttng-ust[0-9] \
|
||||
libstdc++6 \
|
||||
zlib1g \
|
||||
locales \
|
||||
|
|
|
@ -17,6 +17,8 @@ USE_MOBY=${5:-"true"}
|
|||
DOCKER_VERSION=${6:-"latest"}
|
||||
DOCKER_DASH_COMPOSE_VERSION=${7:-"v1"} # v1 or v2
|
||||
MICROSOFT_GPG_KEYS_URI="https://packages.microsoft.com/keys/microsoft.asc"
|
||||
DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES="buster bullseye bionic focal jammy"
|
||||
DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES="buster bullseye bionic focal hirsute impish jammy"
|
||||
|
||||
set -e
|
||||
|
||||
|
@ -125,6 +127,26 @@ fi
|
|||
# Fetch host/container arch.
|
||||
architecture="$(dpkg --print-architecture)"
|
||||
|
||||
# Check if distro is suppported
|
||||
if [ "${USE_MOBY}" = "true" ]; then
|
||||
# 'get_common_setting' allows attribute to be updated remotely
|
||||
get_common_setting DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES
|
||||
if [[ "${DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES}" != *"${VERSION_CODENAME}"* ]]; then
|
||||
err "Unsupported distribution version '${VERSION_CODENAME}'. To resolve, either: (1) set feature option '\"moby\": false' , or (2) choose a compatible OS distribution"
|
||||
err "Support distributions include: ${DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES}"
|
||||
exit 1
|
||||
fi
|
||||
echo "Distro codename '${VERSION_CODENAME}' matched filter '${DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES}'"
|
||||
else
|
||||
get_common_setting DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES
|
||||
if [[ "${DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES}" != *"${VERSION_CODENAME}"* ]]; then
|
||||
err "Unsupported distribution version '${VERSION_CODENAME}'. To resolve, please choose a compatible OS distribution"
|
||||
err "Support distributions include: ${DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES}"
|
||||
exit 1
|
||||
fi
|
||||
echo "Distro codename '${VERSION_CODENAME}' matched filter '${DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES}'"
|
||||
fi
|
||||
|
||||
# Set up the necessary apt repos (either Microsoft's or Docker's)
|
||||
if [ "${USE_MOBY}" = "true" ]; then
|
||||
|
||||
|
@ -176,6 +198,7 @@ else
|
|||
apt-get -y install --no-install-recommends moby-compose || echo "(*) Package moby-compose (Docker Compose v2) not available for OS ${ID} ${VERSION_CODENAME} (${architecture}). Skipping."
|
||||
else
|
||||
apt-get -y install --no-install-recommends docker-ce-cli${cli_version_suffix}
|
||||
apt-get -y install --no-install-recommends docker-compose-plugin || echo "(*) Package docker-compose-plugin (Docker Compose v2) not available for OS ${ID} ${VERSION_CODENAME} (${architecture}). Skipping."
|
||||
fi
|
||||
fi
|
||||
|
||||
|
|
|
@ -126,6 +126,7 @@ su ${USERNAME} -c "$(cat << EOF
|
|||
umask 0002
|
||||
# Do not update profile - we'll do this manually
|
||||
export PROFILE=/dev/null
|
||||
ls -lah /home/${USERNAME}/.nvs || :
|
||||
curl -so- https://raw.githubusercontent.com/nvm-sh/nvm/v${NVM_VERSION}/install.sh | bash
|
||||
source ${NVM_DIR}/nvm.sh
|
||||
if [ "${NODE_VERSION}" != "" ]; then
|
||||
|
|
|
@ -14,7 +14,7 @@ set -e
|
|||
AZ_VERSION=${1:-"latest"}
|
||||
MICROSOFT_GPG_KEYS_URI="https://packages.microsoft.com/keys/microsoft.asc"
|
||||
AZCLI_ARCHIVE_ARCHITECTURES="amd64"
|
||||
AZCLI_ARCHIVE_VERSION_CODENAMES="stretch buster bullseye bionic focal"
|
||||
AZCLI_ARCHIVE_VERSION_CODENAMES="stretch buster bullseye bionic focal jammy"
|
||||
|
||||
if [ "$(id -u)" -ne 0 ]; then
|
||||
echo -e 'Script must be run as root. Use sudo, su, or add "USER root" to your Dockerfile before running this script.'
|
||||
|
@ -165,6 +165,7 @@ install_using_pip() {
|
|||
echo "(*) Installing Azure CLI..."
|
||||
. /etc/os-release
|
||||
architecture="$(dpkg --print-architecture)"
|
||||
CACHED_AZURE_VERSION="${AZ_VERSION}" # In case we need to fallback to pip and the apt path has modified the AZ_VERSION variable.
|
||||
if [[ "${AZCLI_ARCHIVE_ARCHITECTURES}" = *"${architecture}"* ]] && [[ "${AZCLI_ARCHIVE_VERSION_CODENAMES}" = *"${VERSION_CODENAME}"* ]]; then
|
||||
install_using_apt || use_pip="true"
|
||||
else
|
||||
|
@ -172,6 +173,7 @@ else
|
|||
fi
|
||||
|
||||
if [ "${use_pip}" = "true" ]; then
|
||||
AZ_VERSION=${CACHED_AZURE_VERSION}
|
||||
install_using_pip
|
||||
|
||||
if [ "$?" != 0 ]; then
|
||||
|
|
|
@ -102,7 +102,7 @@ if [ "${PACKAGES_ALREADY_INSTALLED}" != "true" ]; then
|
|||
libkrb5-3 \
|
||||
libgssapi-krb5-2 \
|
||||
libicu[0-9][0-9] \
|
||||
liblttng-ust0 \
|
||||
liblttng-ust[0-9] \
|
||||
libstdc++6 \
|
||||
zlib1g \
|
||||
locales \
|
||||
|
|
|
@ -126,6 +126,7 @@ su ${USERNAME} -c "$(cat << EOF
|
|||
umask 0002
|
||||
# Do not update profile - we'll do this manually
|
||||
export PROFILE=/dev/null
|
||||
ls -lah /home/${USERNAME}/.nvs || :
|
||||
curl -so- https://raw.githubusercontent.com/nvm-sh/nvm/v${NVM_VERSION}/install.sh | bash
|
||||
source ${NVM_DIR}/nvm.sh
|
||||
if [ "${NODE_VERSION}" != "" ]; then
|
||||
|
|
|
@ -14,7 +14,7 @@ set -e
|
|||
AZ_VERSION=${1:-"latest"}
|
||||
MICROSOFT_GPG_KEYS_URI="https://packages.microsoft.com/keys/microsoft.asc"
|
||||
AZCLI_ARCHIVE_ARCHITECTURES="amd64"
|
||||
AZCLI_ARCHIVE_VERSION_CODENAMES="stretch buster bullseye bionic focal"
|
||||
AZCLI_ARCHIVE_VERSION_CODENAMES="stretch buster bullseye bionic focal jammy"
|
||||
|
||||
if [ "$(id -u)" -ne 0 ]; then
|
||||
echo -e 'Script must be run as root. Use sudo, su, or add "USER root" to your Dockerfile before running this script.'
|
||||
|
@ -165,6 +165,7 @@ install_using_pip() {
|
|||
echo "(*) Installing Azure CLI..."
|
||||
. /etc/os-release
|
||||
architecture="$(dpkg --print-architecture)"
|
||||
CACHED_AZURE_VERSION="${AZ_VERSION}" # In case we need to fallback to pip and the apt path has modified the AZ_VERSION variable.
|
||||
if [[ "${AZCLI_ARCHIVE_ARCHITECTURES}" = *"${architecture}"* ]] && [[ "${AZCLI_ARCHIVE_VERSION_CODENAMES}" = *"${VERSION_CODENAME}"* ]]; then
|
||||
install_using_apt || use_pip="true"
|
||||
else
|
||||
|
@ -172,6 +173,7 @@ else
|
|||
fi
|
||||
|
||||
if [ "${use_pip}" = "true" ]; then
|
||||
AZ_VERSION=${CACHED_AZURE_VERSION}
|
||||
install_using_pip
|
||||
|
||||
if [ "$?" != 0 ]; then
|
||||
|
|
|
@ -102,7 +102,7 @@ if [ "${PACKAGES_ALREADY_INSTALLED}" != "true" ]; then
|
|||
libkrb5-3 \
|
||||
libgssapi-krb5-2 \
|
||||
libicu[0-9][0-9] \
|
||||
liblttng-ust0 \
|
||||
liblttng-ust[0-9] \
|
||||
libstdc++6 \
|
||||
zlib1g \
|
||||
locales \
|
||||
|
|
|
@ -126,6 +126,7 @@ su ${USERNAME} -c "$(cat << EOF
|
|||
umask 0002
|
||||
# Do not update profile - we'll do this manually
|
||||
export PROFILE=/dev/null
|
||||
ls -lah /home/${USERNAME}/.nvs || :
|
||||
curl -so- https://raw.githubusercontent.com/nvm-sh/nvm/v${NVM_VERSION}/install.sh | bash
|
||||
source ${NVM_DIR}/nvm.sh
|
||||
if [ "${NODE_VERSION}" != "" ]; then
|
||||
|
|
|
@ -14,7 +14,7 @@ set -e
|
|||
AZ_VERSION=${1:-"latest"}
|
||||
MICROSOFT_GPG_KEYS_URI="https://packages.microsoft.com/keys/microsoft.asc"
|
||||
AZCLI_ARCHIVE_ARCHITECTURES="amd64"
|
||||
AZCLI_ARCHIVE_VERSION_CODENAMES="stretch buster bullseye bionic focal"
|
||||
AZCLI_ARCHIVE_VERSION_CODENAMES="stretch buster bullseye bionic focal jammy"
|
||||
|
||||
if [ "$(id -u)" -ne 0 ]; then
|
||||
echo -e 'Script must be run as root. Use sudo, su, or add "USER root" to your Dockerfile before running this script.'
|
||||
|
@ -165,6 +165,7 @@ install_using_pip() {
|
|||
echo "(*) Installing Azure CLI..."
|
||||
. /etc/os-release
|
||||
architecture="$(dpkg --print-architecture)"
|
||||
CACHED_AZURE_VERSION="${AZ_VERSION}" # In case we need to fallback to pip and the apt path has modified the AZ_VERSION variable.
|
||||
if [[ "${AZCLI_ARCHIVE_ARCHITECTURES}" = *"${architecture}"* ]] && [[ "${AZCLI_ARCHIVE_VERSION_CODENAMES}" = *"${VERSION_CODENAME}"* ]]; then
|
||||
install_using_apt || use_pip="true"
|
||||
else
|
||||
|
@ -172,6 +173,7 @@ else
|
|||
fi
|
||||
|
||||
if [ "${use_pip}" = "true" ]; then
|
||||
AZ_VERSION=${CACHED_AZURE_VERSION}
|
||||
install_using_pip
|
||||
|
||||
if [ "$?" != 0 ]; then
|
||||
|
|
|
@ -102,7 +102,7 @@ if [ "${PACKAGES_ALREADY_INSTALLED}" != "true" ]; then
|
|||
libkrb5-3 \
|
||||
libgssapi-krb5-2 \
|
||||
libicu[0-9][0-9] \
|
||||
liblttng-ust0 \
|
||||
liblttng-ust[0-9] \
|
||||
libstdc++6 \
|
||||
zlib1g \
|
||||
locales \
|
||||
|
|
|
@ -17,6 +17,8 @@ USE_MOBY=${5:-"true"}
|
|||
DOCKER_VERSION=${6:-"latest"}
|
||||
DOCKER_DASH_COMPOSE_VERSION=${7:-"v1"} # v1 or v2
|
||||
MICROSOFT_GPG_KEYS_URI="https://packages.microsoft.com/keys/microsoft.asc"
|
||||
DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES="buster bullseye bionic focal jammy"
|
||||
DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES="buster bullseye bionic focal hirsute impish jammy"
|
||||
|
||||
set -e
|
||||
|
||||
|
@ -125,6 +127,26 @@ fi
|
|||
# Fetch host/container arch.
|
||||
architecture="$(dpkg --print-architecture)"
|
||||
|
||||
# Check if distro is suppported
|
||||
if [ "${USE_MOBY}" = "true" ]; then
|
||||
# 'get_common_setting' allows attribute to be updated remotely
|
||||
get_common_setting DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES
|
||||
if [[ "${DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES}" != *"${VERSION_CODENAME}"* ]]; then
|
||||
err "Unsupported distribution version '${VERSION_CODENAME}'. To resolve, either: (1) set feature option '\"moby\": false' , or (2) choose a compatible OS distribution"
|
||||
err "Support distributions include: ${DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES}"
|
||||
exit 1
|
||||
fi
|
||||
echo "Distro codename '${VERSION_CODENAME}' matched filter '${DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES}'"
|
||||
else
|
||||
get_common_setting DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES
|
||||
if [[ "${DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES}" != *"${VERSION_CODENAME}"* ]]; then
|
||||
err "Unsupported distribution version '${VERSION_CODENAME}'. To resolve, please choose a compatible OS distribution"
|
||||
err "Support distributions include: ${DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES}"
|
||||
exit 1
|
||||
fi
|
||||
echo "Distro codename '${VERSION_CODENAME}' matched filter '${DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES}'"
|
||||
fi
|
||||
|
||||
# Set up the necessary apt repos (either Microsoft's or Docker's)
|
||||
if [ "${USE_MOBY}" = "true" ]; then
|
||||
|
||||
|
@ -176,6 +198,7 @@ else
|
|||
apt-get -y install --no-install-recommends moby-compose || echo "(*) Package moby-compose (Docker Compose v2) not available for OS ${ID} ${VERSION_CODENAME} (${architecture}). Skipping."
|
||||
else
|
||||
apt-get -y install --no-install-recommends docker-ce-cli${cli_version_suffix}
|
||||
apt-get -y install --no-install-recommends docker-compose-plugin || echo "(*) Package docker-compose-plugin (Docker Compose v2) not available for OS ${ID} ${VERSION_CODENAME} (${architecture}). Skipping."
|
||||
fi
|
||||
fi
|
||||
|
||||
|
|
|
@ -126,6 +126,7 @@ su ${USERNAME} -c "$(cat << EOF
|
|||
umask 0002
|
||||
# Do not update profile - we'll do this manually
|
||||
export PROFILE=/dev/null
|
||||
ls -lah /home/${USERNAME}/.nvs || :
|
||||
curl -so- https://raw.githubusercontent.com/nvm-sh/nvm/v${NVM_VERSION}/install.sh | bash
|
||||
source ${NVM_DIR}/nvm.sh
|
||||
if [ "${NODE_VERSION}" != "" ]; then
|
||||
|
|
|
@ -102,7 +102,7 @@ if [ "${PACKAGES_ALREADY_INSTALLED}" != "true" ]; then
|
|||
libkrb5-3 \
|
||||
libgssapi-krb5-2 \
|
||||
libicu[0-9][0-9] \
|
||||
liblttng-ust0 \
|
||||
liblttng-ust[0-9] \
|
||||
libstdc++6 \
|
||||
zlib1g \
|
||||
locales \
|
||||
|
|
|
@ -102,7 +102,7 @@ if [ "${PACKAGES_ALREADY_INSTALLED}" != "true" ]; then
|
|||
libkrb5-3 \
|
||||
libgssapi-krb5-2 \
|
||||
libicu[0-9][0-9] \
|
||||
liblttng-ust0 \
|
||||
liblttng-ust[0-9] \
|
||||
libstdc++6 \
|
||||
zlib1g \
|
||||
locales \
|
||||
|
|
|
@ -17,6 +17,8 @@ USE_MOBY=${5:-"true"}
|
|||
DOCKER_VERSION=${6:-"latest"}
|
||||
DOCKER_DASH_COMPOSE_VERSION=${7:-"v1"} # v1 or v2
|
||||
MICROSOFT_GPG_KEYS_URI="https://packages.microsoft.com/keys/microsoft.asc"
|
||||
DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES="buster bullseye bionic focal jammy"
|
||||
DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES="buster bullseye bionic focal hirsute impish jammy"
|
||||
|
||||
set -e
|
||||
|
||||
|
@ -125,6 +127,26 @@ fi
|
|||
# Fetch host/container arch.
|
||||
architecture="$(dpkg --print-architecture)"
|
||||
|
||||
# Check if distro is suppported
|
||||
if [ "${USE_MOBY}" = "true" ]; then
|
||||
# 'get_common_setting' allows attribute to be updated remotely
|
||||
get_common_setting DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES
|
||||
if [[ "${DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES}" != *"${VERSION_CODENAME}"* ]]; then
|
||||
err "Unsupported distribution version '${VERSION_CODENAME}'. To resolve, either: (1) set feature option '\"moby\": false' , or (2) choose a compatible OS distribution"
|
||||
err "Support distributions include: ${DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES}"
|
||||
exit 1
|
||||
fi
|
||||
echo "Distro codename '${VERSION_CODENAME}' matched filter '${DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES}'"
|
||||
else
|
||||
get_common_setting DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES
|
||||
if [[ "${DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES}" != *"${VERSION_CODENAME}"* ]]; then
|
||||
err "Unsupported distribution version '${VERSION_CODENAME}'. To resolve, please choose a compatible OS distribution"
|
||||
err "Support distributions include: ${DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES}"
|
||||
exit 1
|
||||
fi
|
||||
echo "Distro codename '${VERSION_CODENAME}' matched filter '${DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES}'"
|
||||
fi
|
||||
|
||||
# Set up the necessary apt repos (either Microsoft's or Docker's)
|
||||
if [ "${USE_MOBY}" = "true" ]; then
|
||||
|
||||
|
@ -176,6 +198,7 @@ else
|
|||
apt-get -y install --no-install-recommends moby-compose || echo "(*) Package moby-compose (Docker Compose v2) not available for OS ${ID} ${VERSION_CODENAME} (${architecture}). Skipping."
|
||||
else
|
||||
apt-get -y install --no-install-recommends docker-ce-cli${cli_version_suffix}
|
||||
apt-get -y install --no-install-recommends docker-compose-plugin || echo "(*) Package docker-compose-plugin (Docker Compose v2) not available for OS ${ID} ${VERSION_CODENAME} (${architecture}). Skipping."
|
||||
fi
|
||||
fi
|
||||
|
||||
|
|
|
@ -15,14 +15,27 @@ USE_MOBY=${3:-"true"}
|
|||
DOCKER_VERSION=${4:-"latest"} # The Docker/Moby Engine + CLI should match in version
|
||||
DOCKER_DASH_COMPOSE_VERSION=${5:-"v1"} # v1 or v2
|
||||
MICROSOFT_GPG_KEYS_URI="https://packages.microsoft.com/keys/microsoft.asc"
|
||||
DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES="buster bullseye bionic focal jammy"
|
||||
DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES="buster bullseye bionic focal hirsute impish jammy"
|
||||
|
||||
# Default: Exit on any failure.
|
||||
set -e
|
||||
|
||||
# Setup STDERR.
|
||||
err() {
|
||||
echo "(!) $*" >&2
|
||||
}
|
||||
|
||||
if [ "$(id -u)" -ne 0 ]; then
|
||||
echo -e 'Script must be run as root. Use sudo, su, or add "USER root" to your Dockerfile before running this script.'
|
||||
err 'Script must be run as root. Use sudo, su, or add "USER root" to your Dockerfile before running this script.'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
###################
|
||||
# Helper Functions
|
||||
# See: https://github.com/microsoft/vscode-dev-containers/blob/main/script-library/shared/utils.sh
|
||||
###################
|
||||
|
||||
# Determine the appropriate non-root user
|
||||
if [ "${USERNAME}" = "auto" ] || [ "${USERNAME}" = "automatic" ]; then
|
||||
USERNAME=""
|
||||
|
@ -97,20 +110,50 @@ find_version_from_git_tags() {
|
|||
declare -g ${variable_name}="$(echo "${version_list}" | head -n 1)"
|
||||
else
|
||||
set +e
|
||||
declare -g ${variable_name}="$(echo "${version_list}" | grep -E -m 1 "^${requested_version//./\\.}([\\.\\s]|$)")"
|
||||
declare -g ${variable_name}="$(echo "${version_list}" | grep -E -m 1 "^${requested_version//./\\.}([\\.\\s]|$)")"
|
||||
set -e
|
||||
fi
|
||||
fi
|
||||
if [ -z "${!variable_name}" ] || ! echo "${version_list}" | grep "^${!variable_name//./\\.}$" > /dev/null 2>&1; then
|
||||
echo -e "Invalid ${variable_name} value: ${requested_version}\nValid values:\n${version_list}" >&2
|
||||
err "Invalid ${variable_name} value: ${requested_version}\nValid values:\n${version_list}" >&2
|
||||
exit 1
|
||||
fi
|
||||
echo "${variable_name}=${!variable_name}"
|
||||
}
|
||||
|
||||
###########################################
|
||||
# Start docker-in-docker installation
|
||||
###########################################
|
||||
|
||||
# Ensure apt is in non-interactive to avoid prompts
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
|
||||
# Source /etc/os-release to get OS info
|
||||
. /etc/os-release
|
||||
# Fetch host/container arch.
|
||||
architecture="$(dpkg --print-architecture)"
|
||||
|
||||
# Check if distro is suppported
|
||||
if [ "${USE_MOBY}" = "true" ]; then
|
||||
# 'get_common_setting' allows attribute to be updated remotely
|
||||
get_common_setting DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES
|
||||
if [[ "${DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES}" != *"${VERSION_CODENAME}"* ]]; then
|
||||
err "Unsupported distribution version '${VERSION_CODENAME}'. To resolve, either: (1) set feature option '\"moby\": false' , or (2) choose a compatible OS distribution"
|
||||
err "Support distributions include: ${DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES}"
|
||||
exit 1
|
||||
fi
|
||||
echo "Distro codename '${VERSION_CODENAME}' matched filter '${DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES}'"
|
||||
else
|
||||
get_common_setting DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES
|
||||
if [[ "${DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES}" != *"${VERSION_CODENAME}"* ]]; then
|
||||
err "Unsupported distribution version '${VERSION_CODENAME}'. To resolve, please choose a compatible OS distribution"
|
||||
err "Support distributions include: ${DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES}"
|
||||
exit 1
|
||||
fi
|
||||
echo "Distro codename '${VERSION_CODENAME}' matched filter '${DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES}'"
|
||||
fi
|
||||
|
||||
# Install dependencies
|
||||
check_packages apt-transport-https curl ca-certificates pigz iptables gnupg2 dirmngr
|
||||
if ! type git > /dev/null 2>&1; then
|
||||
|
@ -124,10 +167,7 @@ if type iptables-legacy > /dev/null 2>&1; then
|
|||
update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
|
||||
fi
|
||||
|
||||
# Source /etc/os-release to get OS info
|
||||
. /etc/os-release
|
||||
# Fetch host/container arch.
|
||||
architecture="$(dpkg --print-architecture)"
|
||||
|
||||
|
||||
# Set up the necessary apt repos (either Microsoft's or Docker's)
|
||||
if [ "${USE_MOBY}" = "true" ]; then
|
||||
|
@ -165,11 +205,11 @@ else
|
|||
# Regex needs to handle debian package version number format: https://www.systutorials.com/docs/linux/man/5-deb-version/
|
||||
docker_version_regex="^(.+:)?${docker_version_dot_plus_escaped}([\\.\\+ ~:-]|$)"
|
||||
set +e # Don't exit if finding version fails - will handle gracefully
|
||||
cli_version_suffix="=$(apt-cache madison ${cli_package_name} | awk -F"|" '{print $2}' | sed -e 's/^[ \t]*//' | grep -E -m 1 "${docker_version_regex}")"
|
||||
engine_version_suffix="=$(apt-cache madison ${engine_package_name} | awk -F"|" '{print $2}' | sed -e 's/^[ \t]*//' | grep -E -m 1 "${docker_version_regex}")"
|
||||
cli_version_suffix="=$(apt-cache madison ${cli_package_name} | awk -F"|" '{print $2}' | sed -e 's/^[ \t]*//' | grep -E -m 1 "${docker_version_regex}")"
|
||||
engine_version_suffix="=$(apt-cache madison ${engine_package_name} | awk -F"|" '{print $2}' | sed -e 's/^[ \t]*//' | grep -E -m 1 "${docker_version_regex}")"
|
||||
set -e
|
||||
if [ -z "${engine_version_suffix}" ] || [ "${engine_version_suffix}" = "=" ] || [ -z "${cli_version_suffix}" ] || [ "${cli_version_suffix}" = "=" ] ; then
|
||||
echo "(!) No full or partial Docker / Moby version match found for \"${DOCKER_VERSION}\" on OS ${ID} ${VERSION_CODENAME} (${architecture}). Available versions:"
|
||||
err "No full or partial Docker / Moby version match found for \"${DOCKER_VERSION}\" on OS ${ID} ${VERSION_CODENAME} (${architecture}). Available versions:"
|
||||
apt-cache madison ${cli_package_name} | awk -F"|" '{print $2}' | grep -oP '^(.+:)?\K.+'
|
||||
exit 1
|
||||
fi
|
||||
|
@ -182,10 +222,21 @@ if type docker > /dev/null 2>&1 && type dockerd > /dev/null 2>&1; then
|
|||
echo "Docker / Moby CLI and Engine already installed."
|
||||
else
|
||||
if [ "${USE_MOBY}" = "true" ]; then
|
||||
apt-get -y install --no-install-recommends moby-cli${cli_version_suffix} moby-buildx moby-engine${engine_version_suffix}
|
||||
apt-get -y install --no-install-recommends moby-compose || echo "(*) Package moby-compose (Docker Compose v2) not available for OS ${ID} ${VERSION_CODENAME} (${architecture}). Skipping."
|
||||
# Install engine
|
||||
set +e # Handle error gracefully
|
||||
apt-get -y install --no-install-recommends moby-cli${cli_version_suffix} moby-buildx moby-engine${engine_version_suffix}
|
||||
if [ $? -ne 0 ]; then
|
||||
err "Packages for moby not available in OS ${ID} ${VERSION_CODENAME} (${architecture}). To resolve, either: (1) set feature option '\"moby\": false' , or (2) choose a compatible OS version (eg: 'ubuntu-20.04')."
|
||||
exit 1
|
||||
fi
|
||||
set -e
|
||||
|
||||
# Install compose
|
||||
apt-get -y install --no-install-recommends moby-compose || err "Package moby-compose (Docker Compose v2) not available for OS ${ID} ${VERSION_CODENAME} (${architecture}). Skipping."
|
||||
else
|
||||
apt-get -y install --no-install-recommends docker-ce-cli${cli_version_suffix} docker-ce${engine_version_suffix}
|
||||
# Install compose
|
||||
apt-get -y install --no-install-recommends docker-compose-plugin || echo "(*) Package docker-compose-plugin (Docker Compose v2) not available for OS ${ID} ${VERSION_CODENAME} (${architecture}). Skipping."
|
||||
fi
|
||||
fi
|
||||
|
||||
|
@ -344,3 +395,5 @@ EOF
|
|||
|
||||
chmod +x /usr/local/share/docker-init.sh
|
||||
chown ${USERNAME}:root /usr/local/share/docker-init.sh
|
||||
|
||||
echo 'docker-in-docker-debian script has completed!'
|
|
@ -11,8 +11,8 @@
|
|||
|
||||
GIT_LFS_VERSION=${1:-"latest"}
|
||||
GIT_LFS_ARCHIVE_GPG_KEY_URI="https://packagecloud.io/github/git-lfs/gpgkey"
|
||||
GIT_LFS_ARCHIVE_ARCHITECTURES="amd64"
|
||||
GIT_LFS_ARCHIVE_VERSION_CODENAMES="stretch buster bullseye bionic focal"
|
||||
GIT_LFS_ARCHIVE_ARCHITECTURES="amd64 arm64"
|
||||
GIT_LFS_ARCHIVE_VERSION_CODENAMES="stretch buster bullseye bionic focal jammy"
|
||||
GIT_LFS_CHECKSUM_GPG_KEYS="0x88ace9b29196305ba9947552f1ba225c0223b187 0x86cd3297749375bcf8206715f54fe648088335a9 0xaa3b3450295830d2de6db90caba67be5a5795889"
|
||||
GPG_KEY_SERVERS="keyserver hkp://keyserver.ubuntu.com:80
|
||||
keyserver hkps://keys.openpgp.org
|
||||
|
@ -140,6 +140,7 @@ install_using_apt() {
|
|||
|
||||
if ! (apt-get update && apt-get install -yq git-lfs${version_suffix}); then
|
||||
rm -f /etc/apt/sources.list.d/git-lfs.list
|
||||
echo "Could not fetch git-lfs from apt"
|
||||
return 1
|
||||
fi
|
||||
|
||||
|
@ -152,6 +153,7 @@ install_using_github() {
|
|||
cd /tmp/git-lfs
|
||||
find_version_from_git_tags GIT_LFS_VERSION "https://github.com/git-lfs/git-lfs"
|
||||
git_lfs_filename="git-lfs-linux-${architecture}-v${GIT_LFS_VERSION}.tar.gz"
|
||||
echo "Looking for release artfact: ${git_lfs_filename}"
|
||||
curl -sSL -o "${git_lfs_filename}" "https://github.com/git-lfs/git-lfs/releases/download/v${GIT_LFS_VERSION}/${git_lfs_filename}"
|
||||
# Verify file
|
||||
curl -sSL -o "sha256sums.asc" "https://github.com/git-lfs/git-lfs/releases/download/v${GIT_LFS_VERSION}/sha256sums.asc"
|
||||
|
@ -159,8 +161,20 @@ install_using_github() {
|
|||
gpg -q --decrypt "sha256sums.asc" > sha256sums
|
||||
sha256sum --ignore-missing -c "sha256sums"
|
||||
# Extract and install
|
||||
echo "Validated release artifact integrity."
|
||||
echo "Starting to extract..."
|
||||
tar xf "${git_lfs_filename}" -C .
|
||||
./install.sh
|
||||
echo "Installing..."
|
||||
if [ -f "./install.sh" ]; then
|
||||
./install.sh
|
||||
else
|
||||
# Starting around v3.2.0, the release
|
||||
# artifact file structure changed slightly
|
||||
enclosed_folder="git-lfs-${GIT_LFS_VERSION}"
|
||||
cd ${enclosed_folder}
|
||||
./install.sh
|
||||
cd ../
|
||||
fi
|
||||
rm -rf /tmp/git-lfs /tmp/tmp-gnupg
|
||||
}
|
||||
|
||||
|
|
|
@ -9,9 +9,10 @@
|
|||
#
|
||||
# Syntax: ./github-debian.sh [version]
|
||||
|
||||
CLI_VERSION=${1:-"latest"}
|
||||
CLI_VERSION=${VERSION:-"latest"}
|
||||
INSTALL_DIRECTLY_FROM_GITHUB_RELEASE=${INSTALLDIRECTLYFROMGITHUBRELEASE:-"true"}
|
||||
|
||||
GITHUB_CLI_ARCHIVE_GPG_KEY=C99B11DEB97541F0
|
||||
GITHUB_CLI_ARCHIVE_GPG_KEY=23F3D4EA75716059
|
||||
GPG_KEY_SERVERS="keyserver hkp://keyserver.ubuntu.com:80
|
||||
keyserver hkps://keys.openpgp.org
|
||||
keyserver hkp://keyserver.pgp.com"
|
||||
|
@ -140,31 +141,77 @@ receive_gpg_keys() {
|
|||
fi
|
||||
}
|
||||
|
||||
# Function to run apt-get if needed
|
||||
apt_get_update_if_needed()
|
||||
apt_get_update()
|
||||
{
|
||||
if [ ! -d "/var/lib/apt/lists" ] || [ "$(ls /var/lib/apt/lists/ | wc -l)" = "0" ]; then
|
||||
echo "Running apt-get update..."
|
||||
apt-get update
|
||||
else
|
||||
echo "Skipping apt-get update."
|
||||
fi
|
||||
echo "Running apt-get update..."
|
||||
apt-get update -y
|
||||
}
|
||||
|
||||
# Checks if packages are installed and installs them if not
|
||||
check_packages() {
|
||||
if ! dpkg -s "$@" > /dev/null 2>&1; then
|
||||
apt_get_update_if_needed
|
||||
apt_get_update
|
||||
apt-get -y install --no-install-recommends "$@"
|
||||
fi
|
||||
}
|
||||
|
||||
find_version_from_git_tags() {
|
||||
local variable_name=$1
|
||||
local requested_version=${!variable_name}
|
||||
if [ "${requested_version}" = "none" ]; then return; fi
|
||||
local repository=$2
|
||||
local prefix=${3:-"tags/v"}
|
||||
local separator=${4:-"."}
|
||||
local last_part_optional=${5:-"false"}
|
||||
if [ "$(echo "${requested_version}" | grep -o "." | wc -l)" != "2" ]; then
|
||||
local escaped_separator=${separator//./\\.}
|
||||
local last_part
|
||||
if [ "${last_part_optional}" = "true" ]; then
|
||||
last_part="(${escaped_separator}[0-9]+)?"
|
||||
else
|
||||
last_part="${escaped_separator}[0-9]+"
|
||||
fi
|
||||
local regex="${prefix}\\K[0-9]+${escaped_separator}[0-9]+${last_part}$"
|
||||
local version_list="$(git ls-remote --tags ${repository} | grep -oP "${regex}" | tr -d ' ' | tr "${separator}" "." | sort -rV)"
|
||||
if [ "${requested_version}" = "latest" ] || [ "${requested_version}" = "current" ] || [ "${requested_version}" = "lts" ]; then
|
||||
declare -g ${variable_name}="$(echo "${version_list}" | head -n 1)"
|
||||
else
|
||||
set +e
|
||||
declare -g ${variable_name}="$(echo "${version_list}" | grep -E -m 1 "^${requested_version//./\\.}([\\.\\s]|$)")"
|
||||
set -e
|
||||
fi
|
||||
fi
|
||||
if [ -z "${!variable_name}" ] || ! echo "${version_list}" | grep "^${!variable_name//./\\.}$" > /dev/null 2>&1; then
|
||||
echo -e "Invalid ${variable_name} value: ${requested_version}\nValid values:\n${version_list}" >&2
|
||||
exit 1
|
||||
fi
|
||||
echo "${variable_name}=${!variable_name}"
|
||||
}
|
||||
|
||||
|
||||
# Fall back on direct download if no apt package exists
|
||||
# Fetches .deb file to be installed with dpkg
|
||||
install_deb_using_github() {
|
||||
check_packages wget
|
||||
arch=$(dpkg --print-architecture)
|
||||
|
||||
find_version_from_git_tags CLI_VERSION https://github.com/cli/cli
|
||||
cli_filename="gh_${CLI_VERSION}_linux_${arch}.deb"
|
||||
|
||||
mkdir -p /tmp/ghcli
|
||||
pushd /tmp/ghcli
|
||||
wget https://github.com/cli/cli/releases/download/v${CLI_VERSION}/${cli_filename}
|
||||
dpkg -i /tmp/ghcli/${cli_filename}
|
||||
popd
|
||||
rm -rf /tmp/ghcli
|
||||
}
|
||||
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
# Install curl, apt-transport-https, curl, gpg, or dirmngr, git if missing
|
||||
check_packages curl ca-certificates apt-transport-https dirmngr gnupg2
|
||||
if ! type git > /dev/null 2>&1; then
|
||||
apt_get_update_if_needed
|
||||
apt_get_update
|
||||
apt-get -y install --no-install-recommends git
|
||||
fi
|
||||
|
||||
|
@ -178,11 +225,16 @@ fi
|
|||
|
||||
# Install the GitHub CLI
|
||||
echo "Downloading github CLI..."
|
||||
# Import key safely (new method rather than deprecated apt-key approach) and install
|
||||
. /etc/os-release
|
||||
receive_gpg_keys GITHUB_CLI_ARCHIVE_GPG_KEY /usr/share/keyrings/githubcli-archive-keyring.gpg
|
||||
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages ${VERSION_CODENAME} main" > /etc/apt/sources.list.d/github-cli.list
|
||||
apt-get update
|
||||
apt-get -y install "gh${version_suffix}"
|
||||
rm -rf "/tmp/gh/gnupg"
|
||||
echo "Done!"
|
||||
|
||||
if [ "${INSTALL_DIRECTLY_FROM_GITHUB_RELEASE}" = "true" ]; then
|
||||
install_deb_using_github
|
||||
else
|
||||
# Import key safely (new method rather than deprecated apt-key approach) and install
|
||||
. /etc/os-release
|
||||
receive_gpg_keys GITHUB_CLI_ARCHIVE_GPG_KEY /usr/share/keyrings/githubcli-archive-keyring.gpg
|
||||
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" > /etc/apt/sources.list.d/github-cli.list
|
||||
apt-get update
|
||||
apt-get -y install "gh${version_suffix}"
|
||||
rm -rf "/tmp/gh/gnupg"
|
||||
echo "Done!"
|
||||
fi
|
||||
|
|
|
@ -126,6 +126,7 @@ su ${USERNAME} -c "$(cat << EOF
|
|||
umask 0002
|
||||
# Do not update profile - we'll do this manually
|
||||
export PROFILE=/dev/null
|
||||
ls -lah /home/${USERNAME}/.nvs || :
|
||||
curl -so- https://raw.githubusercontent.com/nvm-sh/nvm/v${NVM_VERSION}/install.sh | bash
|
||||
source ${NVM_DIR}/nvm.sh
|
||||
if [ "${NODE_VERSION}" != "" ]; then
|
||||
|
|
|
@ -41,21 +41,10 @@ elif [ "${USERNAME}" = "none" ] || ! id -u ${USERNAME} > /dev/null 2>&1; then
|
|||
USERNAME=root
|
||||
fi
|
||||
|
||||
# Function to run apt-get if needed
|
||||
apt_get_update_if_needed()
|
||||
{
|
||||
if [ ! -d "/var/lib/apt/lists" ] || [ "$(ls /var/lib/apt/lists/ | wc -l)" = "0" ]; then
|
||||
echo "Running apt-get update..."
|
||||
apt-get update
|
||||
else
|
||||
echo "Skipping apt-get update."
|
||||
fi
|
||||
}
|
||||
|
||||
# Checks if packages are installed and installs them if not
|
||||
check_packages() {
|
||||
if ! dpkg -s "$@" > /dev/null 2>&1; then
|
||||
apt_get_update_if_needed
|
||||
apt-get update -y
|
||||
apt-get -y install --no-install-recommends "$@"
|
||||
fi
|
||||
}
|
||||
|
@ -75,6 +64,13 @@ elif [ "${NEW_PASSWORD}" != "skip" ]; then
|
|||
echo "${USERNAME}:${NEW_PASSWORD}" | chpasswd
|
||||
fi
|
||||
|
||||
if [ $(getent group ssh) ]; then
|
||||
echo "'ssh' group already exists."
|
||||
else
|
||||
echo "adding 'ssh' group, as it does not already exist."
|
||||
groupadd ssh
|
||||
fi
|
||||
|
||||
# Add user to ssh group
|
||||
if [ "${USERNAME}" != "root" ]; then
|
||||
usermod -aG ssh ${USERNAME}
|
||||
|
|
|
@ -14,7 +14,7 @@ set -e
|
|||
AZ_VERSION=${1:-"latest"}
|
||||
MICROSOFT_GPG_KEYS_URI="https://packages.microsoft.com/keys/microsoft.asc"
|
||||
AZCLI_ARCHIVE_ARCHITECTURES="amd64"
|
||||
AZCLI_ARCHIVE_VERSION_CODENAMES="stretch buster bullseye bionic focal"
|
||||
AZCLI_ARCHIVE_VERSION_CODENAMES="stretch buster bullseye bionic focal jammy"
|
||||
|
||||
if [ "$(id -u)" -ne 0 ]; then
|
||||
echo -e 'Script must be run as root. Use sudo, su, or add "USER root" to your Dockerfile before running this script.'
|
||||
|
@ -165,6 +165,7 @@ install_using_pip() {
|
|||
echo "(*) Installing Azure CLI..."
|
||||
. /etc/os-release
|
||||
architecture="$(dpkg --print-architecture)"
|
||||
CACHED_AZURE_VERSION="${AZ_VERSION}" # In case we need to fallback to pip and the apt path has modified the AZ_VERSION variable.
|
||||
if [[ "${AZCLI_ARCHIVE_ARCHITECTURES}" = *"${architecture}"* ]] && [[ "${AZCLI_ARCHIVE_VERSION_CODENAMES}" = *"${VERSION_CODENAME}"* ]]; then
|
||||
install_using_apt || use_pip="true"
|
||||
else
|
||||
|
@ -172,6 +173,7 @@ else
|
|||
fi
|
||||
|
||||
if [ "${use_pip}" = "true" ]; then
|
||||
AZ_VERSION=${CACHED_AZURE_VERSION}
|
||||
install_using_pip
|
||||
|
||||
if [ "$?" != 0 ]; then
|
||||
|
|
|
@ -17,6 +17,8 @@ USE_MOBY=${5:-"true"}
|
|||
DOCKER_VERSION=${6:-"latest"}
|
||||
DOCKER_DASH_COMPOSE_VERSION=${7:-"v1"} # v1 or v2
|
||||
MICROSOFT_GPG_KEYS_URI="https://packages.microsoft.com/keys/microsoft.asc"
|
||||
DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES="buster bullseye bionic focal jammy"
|
||||
DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES="buster bullseye bionic focal hirsute impish jammy"
|
||||
|
||||
set -e
|
||||
|
||||
|
@ -125,6 +127,26 @@ fi
|
|||
# Fetch host/container arch.
|
||||
architecture="$(dpkg --print-architecture)"
|
||||
|
||||
# Check if distro is suppported
|
||||
if [ "${USE_MOBY}" = "true" ]; then
|
||||
# 'get_common_setting' allows attribute to be updated remotely
|
||||
get_common_setting DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES
|
||||
if [[ "${DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES}" != *"${VERSION_CODENAME}"* ]]; then
|
||||
err "Unsupported distribution version '${VERSION_CODENAME}'. To resolve, either: (1) set feature option '\"moby\": false' , or (2) choose a compatible OS distribution"
|
||||
err "Support distributions include: ${DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES}"
|
||||
exit 1
|
||||
fi
|
||||
echo "Distro codename '${VERSION_CODENAME}' matched filter '${DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES}'"
|
||||
else
|
||||
get_common_setting DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES
|
||||
if [[ "${DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES}" != *"${VERSION_CODENAME}"* ]]; then
|
||||
err "Unsupported distribution version '${VERSION_CODENAME}'. To resolve, please choose a compatible OS distribution"
|
||||
err "Support distributions include: ${DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES}"
|
||||
exit 1
|
||||
fi
|
||||
echo "Distro codename '${VERSION_CODENAME}' matched filter '${DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES}'"
|
||||
fi
|
||||
|
||||
# Set up the necessary apt repos (either Microsoft's or Docker's)
|
||||
if [ "${USE_MOBY}" = "true" ]; then
|
||||
|
||||
|
@ -176,6 +198,7 @@ else
|
|||
apt-get -y install --no-install-recommends moby-compose || echo "(*) Package moby-compose (Docker Compose v2) not available for OS ${ID} ${VERSION_CODENAME} (${architecture}). Skipping."
|
||||
else
|
||||
apt-get -y install --no-install-recommends docker-ce-cli${cli_version_suffix}
|
||||
apt-get -y install --no-install-recommends docker-compose-plugin || echo "(*) Package docker-compose-plugin (Docker Compose v2) not available for OS ${ID} ${VERSION_CODENAME} (${architecture}). Skipping."
|
||||
fi
|
||||
fi
|
||||
|
||||
|
|
|
@ -17,6 +17,8 @@ USE_MOBY=${5:-"true"}
|
|||
DOCKER_VERSION=${6:-"latest"}
|
||||
DOCKER_DASH_COMPOSE_VERSION=${7:-"v1"} # v1 or v2
|
||||
MICROSOFT_GPG_KEYS_URI="https://packages.microsoft.com/keys/microsoft.asc"
|
||||
DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES="buster bullseye bionic focal jammy"
|
||||
DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES="buster bullseye bionic focal hirsute impish jammy"
|
||||
|
||||
set -e
|
||||
|
||||
|
@ -125,6 +127,26 @@ fi
|
|||
# Fetch host/container arch.
|
||||
architecture="$(dpkg --print-architecture)"
|
||||
|
||||
# Check if distro is suppported
|
||||
if [ "${USE_MOBY}" = "true" ]; then
|
||||
# 'get_common_setting' allows attribute to be updated remotely
|
||||
get_common_setting DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES
|
||||
if [[ "${DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES}" != *"${VERSION_CODENAME}"* ]]; then
|
||||
err "Unsupported distribution version '${VERSION_CODENAME}'. To resolve, either: (1) set feature option '\"moby\": false' , or (2) choose a compatible OS distribution"
|
||||
err "Support distributions include: ${DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES}"
|
||||
exit 1
|
||||
fi
|
||||
echo "Distro codename '${VERSION_CODENAME}' matched filter '${DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES}'"
|
||||
else
|
||||
get_common_setting DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES
|
||||
if [[ "${DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES}" != *"${VERSION_CODENAME}"* ]]; then
|
||||
err "Unsupported distribution version '${VERSION_CODENAME}'. To resolve, please choose a compatible OS distribution"
|
||||
err "Support distributions include: ${DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES}"
|
||||
exit 1
|
||||
fi
|
||||
echo "Distro codename '${VERSION_CODENAME}' matched filter '${DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES}'"
|
||||
fi
|
||||
|
||||
# Set up the necessary apt repos (either Microsoft's or Docker's)
|
||||
if [ "${USE_MOBY}" = "true" ]; then
|
||||
|
||||
|
@ -176,6 +198,7 @@ else
|
|||
apt-get -y install --no-install-recommends moby-compose || echo "(*) Package moby-compose (Docker Compose v2) not available for OS ${ID} ${VERSION_CODENAME} (${architecture}). Skipping."
|
||||
else
|
||||
apt-get -y install --no-install-recommends docker-ce-cli${cli_version_suffix}
|
||||
apt-get -y install --no-install-recommends docker-compose-plugin || echo "(*) Package docker-compose-plugin (Docker Compose v2) not available for OS ${ID} ${VERSION_CODENAME} (${architecture}). Skipping."
|
||||
fi
|
||||
fi
|
||||
|
||||
|
|
|
@ -102,7 +102,7 @@ if [ "${PACKAGES_ALREADY_INSTALLED}" != "true" ]; then
|
|||
libkrb5-3 \
|
||||
libgssapi-krb5-2 \
|
||||
libicu[0-9][0-9] \
|
||||
liblttng-ust0 \
|
||||
liblttng-ust[0-9] \
|
||||
libstdc++6 \
|
||||
zlib1g \
|
||||
locales \
|
||||
|
|
|
@ -102,7 +102,7 @@ if [ "${PACKAGES_ALREADY_INSTALLED}" != "true" ]; then
|
|||
libkrb5-3 \
|
||||
libgssapi-krb5-2 \
|
||||
libicu[0-9][0-9] \
|
||||
liblttng-ust0 \
|
||||
liblttng-ust[0-9] \
|
||||
libstdc++6 \
|
||||
zlib1g \
|
||||
locales \
|
||||
|
|
|
@ -102,7 +102,7 @@ if [ "${PACKAGES_ALREADY_INSTALLED}" != "true" ]; then
|
|||
libkrb5-3 \
|
||||
libgssapi-krb5-2 \
|
||||
libicu[0-9][0-9] \
|
||||
liblttng-ust0 \
|
||||
liblttng-ust[0-9] \
|
||||
libstdc++6 \
|
||||
zlib1g \
|
||||
locales \
|
||||
|
|
|
@ -17,6 +17,8 @@ USE_MOBY=${5:-"true"}
|
|||
DOCKER_VERSION=${6:-"latest"}
|
||||
DOCKER_DASH_COMPOSE_VERSION=${7:-"v1"} # v1 or v2
|
||||
MICROSOFT_GPG_KEYS_URI="https://packages.microsoft.com/keys/microsoft.asc"
|
||||
DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES="buster bullseye bionic focal jammy"
|
||||
DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES="buster bullseye bionic focal hirsute impish jammy"
|
||||
|
||||
set -e
|
||||
|
||||
|
@ -125,6 +127,26 @@ fi
|
|||
# Fetch host/container arch.
|
||||
architecture="$(dpkg --print-architecture)"
|
||||
|
||||
# Check if distro is suppported
|
||||
if [ "${USE_MOBY}" = "true" ]; then
|
||||
# 'get_common_setting' allows attribute to be updated remotely
|
||||
get_common_setting DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES
|
||||
if [[ "${DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES}" != *"${VERSION_CODENAME}"* ]]; then
|
||||
err "Unsupported distribution version '${VERSION_CODENAME}'. To resolve, either: (1) set feature option '\"moby\": false' , or (2) choose a compatible OS distribution"
|
||||
err "Support distributions include: ${DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES}"
|
||||
exit 1
|
||||
fi
|
||||
echo "Distro codename '${VERSION_CODENAME}' matched filter '${DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES}'"
|
||||
else
|
||||
get_common_setting DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES
|
||||
if [[ "${DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES}" != *"${VERSION_CODENAME}"* ]]; then
|
||||
err "Unsupported distribution version '${VERSION_CODENAME}'. To resolve, please choose a compatible OS distribution"
|
||||
err "Support distributions include: ${DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES}"
|
||||
exit 1
|
||||
fi
|
||||
echo "Distro codename '${VERSION_CODENAME}' matched filter '${DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES}'"
|
||||
fi
|
||||
|
||||
# Set up the necessary apt repos (either Microsoft's or Docker's)
|
||||
if [ "${USE_MOBY}" = "true" ]; then
|
||||
|
||||
|
@ -176,6 +198,7 @@ else
|
|||
apt-get -y install --no-install-recommends moby-compose || echo "(*) Package moby-compose (Docker Compose v2) not available for OS ${ID} ${VERSION_CODENAME} (${architecture}). Skipping."
|
||||
else
|
||||
apt-get -y install --no-install-recommends docker-ce-cli${cli_version_suffix}
|
||||
apt-get -y install --no-install-recommends docker-compose-plugin || echo "(*) Package docker-compose-plugin (Docker Compose v2) not available for OS ${ID} ${VERSION_CODENAME} (${architecture}). Skipping."
|
||||
fi
|
||||
fi
|
||||
|
||||
|
|
|
@ -102,7 +102,7 @@ if [ "${PACKAGES_ALREADY_INSTALLED}" != "true" ]; then
|
|||
libkrb5-3 \
|
||||
libgssapi-krb5-2 \
|
||||
libicu[0-9][0-9] \
|
||||
liblttng-ust0 \
|
||||
liblttng-ust[0-9] \
|
||||
libstdc++6 \
|
||||
zlib1g \
|
||||
locales \
|
||||
|
|
|
@ -17,6 +17,8 @@ USE_MOBY=${5:-"true"}
|
|||
DOCKER_VERSION=${6:-"latest"}
|
||||
DOCKER_DASH_COMPOSE_VERSION=${7:-"v1"} # v1 or v2
|
||||
MICROSOFT_GPG_KEYS_URI="https://packages.microsoft.com/keys/microsoft.asc"
|
||||
DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES="buster bullseye bionic focal jammy"
|
||||
DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES="buster bullseye bionic focal hirsute impish jammy"
|
||||
|
||||
set -e
|
||||
|
||||
|
@ -125,6 +127,26 @@ fi
|
|||
# Fetch host/container arch.
|
||||
architecture="$(dpkg --print-architecture)"
|
||||
|
||||
# Check if distro is suppported
|
||||
if [ "${USE_MOBY}" = "true" ]; then
|
||||
# 'get_common_setting' allows attribute to be updated remotely
|
||||
get_common_setting DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES
|
||||
if [[ "${DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES}" != *"${VERSION_CODENAME}"* ]]; then
|
||||
err "Unsupported distribution version '${VERSION_CODENAME}'. To resolve, either: (1) set feature option '\"moby\": false' , or (2) choose a compatible OS distribution"
|
||||
err "Support distributions include: ${DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES}"
|
||||
exit 1
|
||||
fi
|
||||
echo "Distro codename '${VERSION_CODENAME}' matched filter '${DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES}'"
|
||||
else
|
||||
get_common_setting DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES
|
||||
if [[ "${DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES}" != *"${VERSION_CODENAME}"* ]]; then
|
||||
err "Unsupported distribution version '${VERSION_CODENAME}'. To resolve, please choose a compatible OS distribution"
|
||||
err "Support distributions include: ${DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES}"
|
||||
exit 1
|
||||
fi
|
||||
echo "Distro codename '${VERSION_CODENAME}' matched filter '${DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES}'"
|
||||
fi
|
||||
|
||||
# Set up the necessary apt repos (either Microsoft's or Docker's)
|
||||
if [ "${USE_MOBY}" = "true" ]; then
|
||||
|
||||
|
@ -176,6 +198,7 @@ else
|
|||
apt-get -y install --no-install-recommends moby-compose || echo "(*) Package moby-compose (Docker Compose v2) not available for OS ${ID} ${VERSION_CODENAME} (${architecture}). Skipping."
|
||||
else
|
||||
apt-get -y install --no-install-recommends docker-ce-cli${cli_version_suffix}
|
||||
apt-get -y install --no-install-recommends docker-compose-plugin || echo "(*) Package docker-compose-plugin (Docker Compose v2) not available for OS ${ID} ${VERSION_CODENAME} (${architecture}). Skipping."
|
||||
fi
|
||||
fi
|
||||
|
||||
|
|
|
@ -102,7 +102,7 @@ if [ "${PACKAGES_ALREADY_INSTALLED}" != "true" ]; then
|
|||
libkrb5-3 \
|
||||
libgssapi-krb5-2 \
|
||||
libicu[0-9][0-9] \
|
||||
liblttng-ust0 \
|
||||
liblttng-ust[0-9] \
|
||||
libstdc++6 \
|
||||
zlib1g \
|
||||
locales \
|
||||
|
|
|
@ -15,14 +15,27 @@ USE_MOBY=${3:-"true"}
|
|||
DOCKER_VERSION=${4:-"latest"} # The Docker/Moby Engine + CLI should match in version
|
||||
DOCKER_DASH_COMPOSE_VERSION=${5:-"v1"} # v1 or v2
|
||||
MICROSOFT_GPG_KEYS_URI="https://packages.microsoft.com/keys/microsoft.asc"
|
||||
DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES="buster bullseye bionic focal jammy"
|
||||
DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES="buster bullseye bionic focal hirsute impish jammy"
|
||||
|
||||
# Default: Exit on any failure.
|
||||
set -e
|
||||
|
||||
# Setup STDERR.
|
||||
err() {
|
||||
echo "(!) $*" >&2
|
||||
}
|
||||
|
||||
if [ "$(id -u)" -ne 0 ]; then
|
||||
echo -e 'Script must be run as root. Use sudo, su, or add "USER root" to your Dockerfile before running this script.'
|
||||
err 'Script must be run as root. Use sudo, su, or add "USER root" to your Dockerfile before running this script.'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
###################
|
||||
# Helper Functions
|
||||
# See: https://github.com/microsoft/vscode-dev-containers/blob/main/script-library/shared/utils.sh
|
||||
###################
|
||||
|
||||
# Determine the appropriate non-root user
|
||||
if [ "${USERNAME}" = "auto" ] || [ "${USERNAME}" = "automatic" ]; then
|
||||
USERNAME=""
|
||||
|
@ -97,20 +110,50 @@ find_version_from_git_tags() {
|
|||
declare -g ${variable_name}="$(echo "${version_list}" | head -n 1)"
|
||||
else
|
||||
set +e
|
||||
declare -g ${variable_name}="$(echo "${version_list}" | grep -E -m 1 "^${requested_version//./\\.}([\\.\\s]|$)")"
|
||||
declare -g ${variable_name}="$(echo "${version_list}" | grep -E -m 1 "^${requested_version//./\\.}([\\.\\s]|$)")"
|
||||
set -e
|
||||
fi
|
||||
fi
|
||||
if [ -z "${!variable_name}" ] || ! echo "${version_list}" | grep "^${!variable_name//./\\.}$" > /dev/null 2>&1; then
|
||||
echo -e "Invalid ${variable_name} value: ${requested_version}\nValid values:\n${version_list}" >&2
|
||||
err "Invalid ${variable_name} value: ${requested_version}\nValid values:\n${version_list}" >&2
|
||||
exit 1
|
||||
fi
|
||||
echo "${variable_name}=${!variable_name}"
|
||||
}
|
||||
|
||||
###########################################
|
||||
# Start docker-in-docker installation
|
||||
###########################################
|
||||
|
||||
# Ensure apt is in non-interactive to avoid prompts
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
|
||||
# Source /etc/os-release to get OS info
|
||||
. /etc/os-release
|
||||
# Fetch host/container arch.
|
||||
architecture="$(dpkg --print-architecture)"
|
||||
|
||||
# Check if distro is suppported
|
||||
if [ "${USE_MOBY}" = "true" ]; then
|
||||
# 'get_common_setting' allows attribute to be updated remotely
|
||||
get_common_setting DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES
|
||||
if [[ "${DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES}" != *"${VERSION_CODENAME}"* ]]; then
|
||||
err "Unsupported distribution version '${VERSION_CODENAME}'. To resolve, either: (1) set feature option '\"moby\": false' , or (2) choose a compatible OS distribution"
|
||||
err "Support distributions include: ${DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES}"
|
||||
exit 1
|
||||
fi
|
||||
echo "Distro codename '${VERSION_CODENAME}' matched filter '${DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES}'"
|
||||
else
|
||||
get_common_setting DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES
|
||||
if [[ "${DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES}" != *"${VERSION_CODENAME}"* ]]; then
|
||||
err "Unsupported distribution version '${VERSION_CODENAME}'. To resolve, please choose a compatible OS distribution"
|
||||
err "Support distributions include: ${DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES}"
|
||||
exit 1
|
||||
fi
|
||||
echo "Distro codename '${VERSION_CODENAME}' matched filter '${DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES}'"
|
||||
fi
|
||||
|
||||
# Install dependencies
|
||||
check_packages apt-transport-https curl ca-certificates pigz iptables gnupg2 dirmngr
|
||||
if ! type git > /dev/null 2>&1; then
|
||||
|
@ -124,10 +167,7 @@ if type iptables-legacy > /dev/null 2>&1; then
|
|||
update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
|
||||
fi
|
||||
|
||||
# Source /etc/os-release to get OS info
|
||||
. /etc/os-release
|
||||
# Fetch host/container arch.
|
||||
architecture="$(dpkg --print-architecture)"
|
||||
|
||||
|
||||
# Set up the necessary apt repos (either Microsoft's or Docker's)
|
||||
if [ "${USE_MOBY}" = "true" ]; then
|
||||
|
@ -165,11 +205,11 @@ else
|
|||
# Regex needs to handle debian package version number format: https://www.systutorials.com/docs/linux/man/5-deb-version/
|
||||
docker_version_regex="^(.+:)?${docker_version_dot_plus_escaped}([\\.\\+ ~:-]|$)"
|
||||
set +e # Don't exit if finding version fails - will handle gracefully
|
||||
cli_version_suffix="=$(apt-cache madison ${cli_package_name} | awk -F"|" '{print $2}' | sed -e 's/^[ \t]*//' | grep -E -m 1 "${docker_version_regex}")"
|
||||
engine_version_suffix="=$(apt-cache madison ${engine_package_name} | awk -F"|" '{print $2}' | sed -e 's/^[ \t]*//' | grep -E -m 1 "${docker_version_regex}")"
|
||||
cli_version_suffix="=$(apt-cache madison ${cli_package_name} | awk -F"|" '{print $2}' | sed -e 's/^[ \t]*//' | grep -E -m 1 "${docker_version_regex}")"
|
||||
engine_version_suffix="=$(apt-cache madison ${engine_package_name} | awk -F"|" '{print $2}' | sed -e 's/^[ \t]*//' | grep -E -m 1 "${docker_version_regex}")"
|
||||
set -e
|
||||
if [ -z "${engine_version_suffix}" ] || [ "${engine_version_suffix}" = "=" ] || [ -z "${cli_version_suffix}" ] || [ "${cli_version_suffix}" = "=" ] ; then
|
||||
echo "(!) No full or partial Docker / Moby version match found for \"${DOCKER_VERSION}\" on OS ${ID} ${VERSION_CODENAME} (${architecture}). Available versions:"
|
||||
err "No full or partial Docker / Moby version match found for \"${DOCKER_VERSION}\" on OS ${ID} ${VERSION_CODENAME} (${architecture}). Available versions:"
|
||||
apt-cache madison ${cli_package_name} | awk -F"|" '{print $2}' | grep -oP '^(.+:)?\K.+'
|
||||
exit 1
|
||||
fi
|
||||
|
@ -182,10 +222,21 @@ if type docker > /dev/null 2>&1 && type dockerd > /dev/null 2>&1; then
|
|||
echo "Docker / Moby CLI and Engine already installed."
|
||||
else
|
||||
if [ "${USE_MOBY}" = "true" ]; then
|
||||
apt-get -y install --no-install-recommends moby-cli${cli_version_suffix} moby-buildx moby-engine${engine_version_suffix}
|
||||
apt-get -y install --no-install-recommends moby-compose || echo "(*) Package moby-compose (Docker Compose v2) not available for OS ${ID} ${VERSION_CODENAME} (${architecture}). Skipping."
|
||||
# Install engine
|
||||
set +e # Handle error gracefully
|
||||
apt-get -y install --no-install-recommends moby-cli${cli_version_suffix} moby-buildx moby-engine${engine_version_suffix}
|
||||
if [ $? -ne 0 ]; then
|
||||
err "Packages for moby not available in OS ${ID} ${VERSION_CODENAME} (${architecture}). To resolve, either: (1) set feature option '\"moby\": false' , or (2) choose a compatible OS version (eg: 'ubuntu-20.04')."
|
||||
exit 1
|
||||
fi
|
||||
set -e
|
||||
|
||||
# Install compose
|
||||
apt-get -y install --no-install-recommends moby-compose || err "Package moby-compose (Docker Compose v2) not available for OS ${ID} ${VERSION_CODENAME} (${architecture}). Skipping."
|
||||
else
|
||||
apt-get -y install --no-install-recommends docker-ce-cli${cli_version_suffix} docker-ce${engine_version_suffix}
|
||||
# Install compose
|
||||
apt-get -y install --no-install-recommends docker-compose-plugin || echo "(*) Package docker-compose-plugin (Docker Compose v2) not available for OS ${ID} ${VERSION_CODENAME} (${architecture}). Skipping."
|
||||
fi
|
||||
fi
|
||||
|
||||
|
@ -344,3 +395,5 @@ EOF
|
|||
|
||||
chmod +x /usr/local/share/docker-init.sh
|
||||
chown ${USERNAME}:root /usr/local/share/docker-init.sh
|
||||
|
||||
echo 'docker-in-docker-debian script has completed!'
|
|
@ -102,7 +102,7 @@ if [ "${PACKAGES_ALREADY_INSTALLED}" != "true" ]; then
|
|||
libkrb5-3 \
|
||||
libgssapi-krb5-2 \
|
||||
libicu[0-9][0-9] \
|
||||
liblttng-ust0 \
|
||||
liblttng-ust[0-9] \
|
||||
libstdc++6 \
|
||||
zlib1g \
|
||||
locales \
|
||||
|
|
|
@ -126,6 +126,7 @@ su ${USERNAME} -c "$(cat << EOF
|
|||
umask 0002
|
||||
# Do not update profile - we'll do this manually
|
||||
export PROFILE=/dev/null
|
||||
ls -lah /home/${USERNAME}/.nvs || :
|
||||
curl -so- https://raw.githubusercontent.com/nvm-sh/nvm/v${NVM_VERSION}/install.sh | bash
|
||||
source ${NVM_DIR}/nvm.sh
|
||||
if [ "${NODE_VERSION}" != "" ]; then
|
||||
|
|
|
@ -102,7 +102,7 @@ if [ "${PACKAGES_ALREADY_INSTALLED}" != "true" ]; then
|
|||
libkrb5-3 \
|
||||
libgssapi-krb5-2 \
|
||||
libicu[0-9][0-9] \
|
||||
liblttng-ust0 \
|
||||
liblttng-ust[0-9] \
|
||||
libstdc++6 \
|
||||
zlib1g \
|
||||
locales \
|
||||
|
|
|
@ -126,6 +126,7 @@ su ${USERNAME} -c "$(cat << EOF
|
|||
umask 0002
|
||||
# Do not update profile - we'll do this manually
|
||||
export PROFILE=/dev/null
|
||||
ls -lah /home/${USERNAME}/.nvs || :
|
||||
curl -so- https://raw.githubusercontent.com/nvm-sh/nvm/v${NVM_VERSION}/install.sh | bash
|
||||
source ${NVM_DIR}/nvm.sh
|
||||
if [ "${NODE_VERSION}" != "" ]; then
|
||||
|
|
|
@ -102,7 +102,7 @@ if [ "${PACKAGES_ALREADY_INSTALLED}" != "true" ]; then
|
|||
libkrb5-3 \
|
||||
libgssapi-krb5-2 \
|
||||
libicu[0-9][0-9] \
|
||||
liblttng-ust0 \
|
||||
liblttng-ust[0-9] \
|
||||
libstdc++6 \
|
||||
zlib1g \
|
||||
locales \
|
||||
|
|
|
@ -126,6 +126,7 @@ su ${USERNAME} -c "$(cat << EOF
|
|||
umask 0002
|
||||
# Do not update profile - we'll do this manually
|
||||
export PROFILE=/dev/null
|
||||
ls -lah /home/${USERNAME}/.nvs || :
|
||||
curl -so- https://raw.githubusercontent.com/nvm-sh/nvm/v${NVM_VERSION}/install.sh | bash
|
||||
source ${NVM_DIR}/nvm.sh
|
||||
if [ "${NODE_VERSION}" != "" ]; then
|
||||
|
|
|
@ -102,7 +102,7 @@ if [ "${PACKAGES_ALREADY_INSTALLED}" != "true" ]; then
|
|||
libkrb5-3 \
|
||||
libgssapi-krb5-2 \
|
||||
libicu[0-9][0-9] \
|
||||
liblttng-ust0 \
|
||||
liblttng-ust[0-9] \
|
||||
libstdc++6 \
|
||||
zlib1g \
|
||||
locales \
|
||||
|
|
|
@ -126,6 +126,7 @@ su ${USERNAME} -c "$(cat << EOF
|
|||
umask 0002
|
||||
# Do not update profile - we'll do this manually
|
||||
export PROFILE=/dev/null
|
||||
ls -lah /home/${USERNAME}/.nvs || :
|
||||
curl -so- https://raw.githubusercontent.com/nvm-sh/nvm/v${NVM_VERSION}/install.sh | bash
|
||||
source ${NVM_DIR}/nvm.sh
|
||||
if [ "${NODE_VERSION}" != "" ]; then
|
||||
|
|
|
@ -102,7 +102,7 @@ if [ "${PACKAGES_ALREADY_INSTALLED}" != "true" ]; then
|
|||
libkrb5-3 \
|
||||
libgssapi-krb5-2 \
|
||||
libicu[0-9][0-9] \
|
||||
liblttng-ust0 \
|
||||
liblttng-ust[0-9] \
|
||||
libstdc++6 \
|
||||
zlib1g \
|
||||
locales \
|
||||
|
|
|
@ -126,6 +126,7 @@ su ${USERNAME} -c "$(cat << EOF
|
|||
umask 0002
|
||||
# Do not update profile - we'll do this manually
|
||||
export PROFILE=/dev/null
|
||||
ls -lah /home/${USERNAME}/.nvs || :
|
||||
curl -so- https://raw.githubusercontent.com/nvm-sh/nvm/v${NVM_VERSION}/install.sh | bash
|
||||
source ${NVM_DIR}/nvm.sh
|
||||
if [ "${NODE_VERSION}" != "" ]; then
|
||||
|
|
|
@ -102,7 +102,7 @@ if [ "${PACKAGES_ALREADY_INSTALLED}" != "true" ]; then
|
|||
libkrb5-3 \
|
||||
libgssapi-krb5-2 \
|
||||
libicu[0-9][0-9] \
|
||||
liblttng-ust0 \
|
||||
liblttng-ust[0-9] \
|
||||
libstdc++6 \
|
||||
zlib1g \
|
||||
locales \
|
||||
|
|
|
@ -102,7 +102,7 @@ if [ "${PACKAGES_ALREADY_INSTALLED}" != "true" ]; then
|
|||
libkrb5-3 \
|
||||
libgssapi-krb5-2 \
|
||||
libicu[0-9][0-9] \
|
||||
liblttng-ust0 \
|
||||
liblttng-ust[0-9] \
|
||||
libstdc++6 \
|
||||
zlib1g \
|
||||
locales \
|
||||
|
|
|
@ -15,14 +15,27 @@ USE_MOBY=${3:-"true"}
|
|||
DOCKER_VERSION=${4:-"latest"} # The Docker/Moby Engine + CLI should match in version
|
||||
DOCKER_DASH_COMPOSE_VERSION=${5:-"v1"} # v1 or v2
|
||||
MICROSOFT_GPG_KEYS_URI="https://packages.microsoft.com/keys/microsoft.asc"
|
||||
DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES="buster bullseye bionic focal jammy"
|
||||
DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES="buster bullseye bionic focal hirsute impish jammy"
|
||||
|
||||
# Default: Exit on any failure.
|
||||
set -e
|
||||
|
||||
# Setup STDERR.
|
||||
err() {
|
||||
echo "(!) $*" >&2
|
||||
}
|
||||
|
||||
if [ "$(id -u)" -ne 0 ]; then
|
||||
echo -e 'Script must be run as root. Use sudo, su, or add "USER root" to your Dockerfile before running this script.'
|
||||
err 'Script must be run as root. Use sudo, su, or add "USER root" to your Dockerfile before running this script.'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
###################
|
||||
# Helper Functions
|
||||
# See: https://github.com/microsoft/vscode-dev-containers/blob/main/script-library/shared/utils.sh
|
||||
###################
|
||||
|
||||
# Determine the appropriate non-root user
|
||||
if [ "${USERNAME}" = "auto" ] || [ "${USERNAME}" = "automatic" ]; then
|
||||
USERNAME=""
|
||||
|
@ -97,20 +110,50 @@ find_version_from_git_tags() {
|
|||
declare -g ${variable_name}="$(echo "${version_list}" | head -n 1)"
|
||||
else
|
||||
set +e
|
||||
declare -g ${variable_name}="$(echo "${version_list}" | grep -E -m 1 "^${requested_version//./\\.}([\\.\\s]|$)")"
|
||||
declare -g ${variable_name}="$(echo "${version_list}" | grep -E -m 1 "^${requested_version//./\\.}([\\.\\s]|$)")"
|
||||
set -e
|
||||
fi
|
||||
fi
|
||||
if [ -z "${!variable_name}" ] || ! echo "${version_list}" | grep "^${!variable_name//./\\.}$" > /dev/null 2>&1; then
|
||||
echo -e "Invalid ${variable_name} value: ${requested_version}\nValid values:\n${version_list}" >&2
|
||||
err "Invalid ${variable_name} value: ${requested_version}\nValid values:\n${version_list}" >&2
|
||||
exit 1
|
||||
fi
|
||||
echo "${variable_name}=${!variable_name}"
|
||||
}
|
||||
|
||||
###########################################
|
||||
# Start docker-in-docker installation
|
||||
###########################################
|
||||
|
||||
# Ensure apt is in non-interactive to avoid prompts
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
|
||||
# Source /etc/os-release to get OS info
|
||||
. /etc/os-release
|
||||
# Fetch host/container arch.
|
||||
architecture="$(dpkg --print-architecture)"
|
||||
|
||||
# Check if distro is suppported
|
||||
if [ "${USE_MOBY}" = "true" ]; then
|
||||
# 'get_common_setting' allows attribute to be updated remotely
|
||||
get_common_setting DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES
|
||||
if [[ "${DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES}" != *"${VERSION_CODENAME}"* ]]; then
|
||||
err "Unsupported distribution version '${VERSION_CODENAME}'. To resolve, either: (1) set feature option '\"moby\": false' , or (2) choose a compatible OS distribution"
|
||||
err "Support distributions include: ${DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES}"
|
||||
exit 1
|
||||
fi
|
||||
echo "Distro codename '${VERSION_CODENAME}' matched filter '${DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES}'"
|
||||
else
|
||||
get_common_setting DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES
|
||||
if [[ "${DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES}" != *"${VERSION_CODENAME}"* ]]; then
|
||||
err "Unsupported distribution version '${VERSION_CODENAME}'. To resolve, please choose a compatible OS distribution"
|
||||
err "Support distributions include: ${DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES}"
|
||||
exit 1
|
||||
fi
|
||||
echo "Distro codename '${VERSION_CODENAME}' matched filter '${DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES}'"
|
||||
fi
|
||||
|
||||
# Install dependencies
|
||||
check_packages apt-transport-https curl ca-certificates pigz iptables gnupg2 dirmngr
|
||||
if ! type git > /dev/null 2>&1; then
|
||||
|
@ -124,10 +167,7 @@ if type iptables-legacy > /dev/null 2>&1; then
|
|||
update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
|
||||
fi
|
||||
|
||||
# Source /etc/os-release to get OS info
|
||||
. /etc/os-release
|
||||
# Fetch host/container arch.
|
||||
architecture="$(dpkg --print-architecture)"
|
||||
|
||||
|
||||
# Set up the necessary apt repos (either Microsoft's or Docker's)
|
||||
if [ "${USE_MOBY}" = "true" ]; then
|
||||
|
@ -165,11 +205,11 @@ else
|
|||
# Regex needs to handle debian package version number format: https://www.systutorials.com/docs/linux/man/5-deb-version/
|
||||
docker_version_regex="^(.+:)?${docker_version_dot_plus_escaped}([\\.\\+ ~:-]|$)"
|
||||
set +e # Don't exit if finding version fails - will handle gracefully
|
||||
cli_version_suffix="=$(apt-cache madison ${cli_package_name} | awk -F"|" '{print $2}' | sed -e 's/^[ \t]*//' | grep -E -m 1 "${docker_version_regex}")"
|
||||
engine_version_suffix="=$(apt-cache madison ${engine_package_name} | awk -F"|" '{print $2}' | sed -e 's/^[ \t]*//' | grep -E -m 1 "${docker_version_regex}")"
|
||||
cli_version_suffix="=$(apt-cache madison ${cli_package_name} | awk -F"|" '{print $2}' | sed -e 's/^[ \t]*//' | grep -E -m 1 "${docker_version_regex}")"
|
||||
engine_version_suffix="=$(apt-cache madison ${engine_package_name} | awk -F"|" '{print $2}' | sed -e 's/^[ \t]*//' | grep -E -m 1 "${docker_version_regex}")"
|
||||
set -e
|
||||
if [ -z "${engine_version_suffix}" ] || [ "${engine_version_suffix}" = "=" ] || [ -z "${cli_version_suffix}" ] || [ "${cli_version_suffix}" = "=" ] ; then
|
||||
echo "(!) No full or partial Docker / Moby version match found for \"${DOCKER_VERSION}\" on OS ${ID} ${VERSION_CODENAME} (${architecture}). Available versions:"
|
||||
err "No full or partial Docker / Moby version match found for \"${DOCKER_VERSION}\" on OS ${ID} ${VERSION_CODENAME} (${architecture}). Available versions:"
|
||||
apt-cache madison ${cli_package_name} | awk -F"|" '{print $2}' | grep -oP '^(.+:)?\K.+'
|
||||
exit 1
|
||||
fi
|
||||
|
@ -182,10 +222,21 @@ if type docker > /dev/null 2>&1 && type dockerd > /dev/null 2>&1; then
|
|||
echo "Docker / Moby CLI and Engine already installed."
|
||||
else
|
||||
if [ "${USE_MOBY}" = "true" ]; then
|
||||
apt-get -y install --no-install-recommends moby-cli${cli_version_suffix} moby-buildx moby-engine${engine_version_suffix}
|
||||
apt-get -y install --no-install-recommends moby-compose || echo "(*) Package moby-compose (Docker Compose v2) not available for OS ${ID} ${VERSION_CODENAME} (${architecture}). Skipping."
|
||||
# Install engine
|
||||
set +e # Handle error gracefully
|
||||
apt-get -y install --no-install-recommends moby-cli${cli_version_suffix} moby-buildx moby-engine${engine_version_suffix}
|
||||
if [ $? -ne 0 ]; then
|
||||
err "Packages for moby not available in OS ${ID} ${VERSION_CODENAME} (${architecture}). To resolve, either: (1) set feature option '\"moby\": false' , or (2) choose a compatible OS version (eg: 'ubuntu-20.04')."
|
||||
exit 1
|
||||
fi
|
||||
set -e
|
||||
|
||||
# Install compose
|
||||
apt-get -y install --no-install-recommends moby-compose || err "Package moby-compose (Docker Compose v2) not available for OS ${ID} ${VERSION_CODENAME} (${architecture}). Skipping."
|
||||
else
|
||||
apt-get -y install --no-install-recommends docker-ce-cli${cli_version_suffix} docker-ce${engine_version_suffix}
|
||||
# Install compose
|
||||
apt-get -y install --no-install-recommends docker-compose-plugin || echo "(*) Package docker-compose-plugin (Docker Compose v2) not available for OS ${ID} ${VERSION_CODENAME} (${architecture}). Skipping."
|
||||
fi
|
||||
fi
|
||||
|
||||
|
@ -344,3 +395,5 @@ EOF
|
|||
|
||||
chmod +x /usr/local/share/docker-init.sh
|
||||
chown ${USERNAME}:root /usr/local/share/docker-init.sh
|
||||
|
||||
echo 'docker-in-docker-debian script has completed!'
|
|
@ -102,7 +102,7 @@ if [ "${PACKAGES_ALREADY_INSTALLED}" != "true" ]; then
|
|||
libkrb5-3 \
|
||||
libgssapi-krb5-2 \
|
||||
libicu[0-9][0-9] \
|
||||
liblttng-ust0 \
|
||||
liblttng-ust[0-9] \
|
||||
libstdc++6 \
|
||||
zlib1g \
|
||||
locales \
|
||||
|
|
|
@ -17,6 +17,8 @@ USE_MOBY=${5:-"true"}
|
|||
DOCKER_VERSION=${6:-"latest"}
|
||||
DOCKER_DASH_COMPOSE_VERSION=${7:-"v1"} # v1 or v2
|
||||
MICROSOFT_GPG_KEYS_URI="https://packages.microsoft.com/keys/microsoft.asc"
|
||||
DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES="buster bullseye bionic focal jammy"
|
||||
DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES="buster bullseye bionic focal hirsute impish jammy"
|
||||
|
||||
set -e
|
||||
|
||||
|
@ -125,6 +127,26 @@ fi
|
|||
# Fetch host/container arch.
|
||||
architecture="$(dpkg --print-architecture)"
|
||||
|
||||
# Check if distro is suppported
|
||||
if [ "${USE_MOBY}" = "true" ]; then
|
||||
# 'get_common_setting' allows attribute to be updated remotely
|
||||
get_common_setting DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES
|
||||
if [[ "${DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES}" != *"${VERSION_CODENAME}"* ]]; then
|
||||
err "Unsupported distribution version '${VERSION_CODENAME}'. To resolve, either: (1) set feature option '\"moby\": false' , or (2) choose a compatible OS distribution"
|
||||
err "Support distributions include: ${DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES}"
|
||||
exit 1
|
||||
fi
|
||||
echo "Distro codename '${VERSION_CODENAME}' matched filter '${DOCKER_MOBY_ARCHIVE_VERSION_CODENAMES}'"
|
||||
else
|
||||
get_common_setting DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES
|
||||
if [[ "${DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES}" != *"${VERSION_CODENAME}"* ]]; then
|
||||
err "Unsupported distribution version '${VERSION_CODENAME}'. To resolve, please choose a compatible OS distribution"
|
||||
err "Support distributions include: ${DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES}"
|
||||
exit 1
|
||||
fi
|
||||
echo "Distro codename '${VERSION_CODENAME}' matched filter '${DOCKER_LICENSED_ARCHIVE_VERSION_CODENAMES}'"
|
||||
fi
|
||||
|
||||
# Set up the necessary apt repos (either Microsoft's or Docker's)
|
||||
if [ "${USE_MOBY}" = "true" ]; then
|
||||
|
||||
|
@ -176,6 +198,7 @@ else
|
|||
apt-get -y install --no-install-recommends moby-compose || echo "(*) Package moby-compose (Docker Compose v2) not available for OS ${ID} ${VERSION_CODENAME} (${architecture}). Skipping."
|
||||
else
|
||||
apt-get -y install --no-install-recommends docker-ce-cli${cli_version_suffix}
|
||||
apt-get -y install --no-install-recommends docker-compose-plugin || echo "(*) Package docker-compose-plugin (Docker Compose v2) not available for OS ${ID} ${VERSION_CODENAME} (${architecture}). Skipping."
|
||||
fi
|
||||
fi
|
||||
|
||||
|
|
|
@ -102,7 +102,7 @@ if [ "${PACKAGES_ALREADY_INSTALLED}" != "true" ]; then
|
|||
libkrb5-3 \
|
||||
libgssapi-krb5-2 \
|
||||
libicu[0-9][0-9] \
|
||||
liblttng-ust0 \
|
||||
liblttng-ust[0-9] \
|
||||
libstdc++6 \
|
||||
zlib1g \
|
||||
locales \
|
||||
|
|
|
@ -102,7 +102,7 @@ if [ "${PACKAGES_ALREADY_INSTALLED}" != "true" ]; then
|
|||
libkrb5-3 \
|
||||
libgssapi-krb5-2 \
|
||||
libicu[0-9][0-9] \
|
||||
liblttng-ust0 \
|
||||
liblttng-ust[0-9] \
|
||||
libstdc++6 \
|
||||
zlib1g \
|
||||
locales \
|
||||
|
|
|
@ -102,7 +102,7 @@ if [ "${PACKAGES_ALREADY_INSTALLED}" != "true" ]; then
|
|||
libkrb5-3 \
|
||||
libgssapi-krb5-2 \
|
||||
libicu[0-9][0-9] \
|
||||
liblttng-ust0 \
|
||||
liblttng-ust[0-9] \
|
||||
libstdc++6 \
|
||||
zlib1g \
|
||||
locales \
|
||||
|
|
|
@ -126,6 +126,7 @@ su ${USERNAME} -c "$(cat << EOF
|
|||
umask 0002
|
||||
# Do not update profile - we'll do this manually
|
||||
export PROFILE=/dev/null
|
||||
ls -lah /home/${USERNAME}/.nvs || :
|
||||
curl -so- https://raw.githubusercontent.com/nvm-sh/nvm/v${NVM_VERSION}/install.sh | bash
|
||||
source ${NVM_DIR}/nvm.sh
|
||||
if [ "${NODE_VERSION}" != "" ]; then
|
||||
|
|
|
@ -102,7 +102,7 @@ if [ "${PACKAGES_ALREADY_INSTALLED}" != "true" ]; then
|
|||
libkrb5-3 \
|
||||
libgssapi-krb5-2 \
|
||||
libicu[0-9][0-9] \
|
||||
liblttng-ust0 \
|
||||
liblttng-ust[0-9] \
|
||||
libstdc++6 \
|
||||
zlib1g \
|
||||
locales \
|
||||
|
|
|
@ -126,6 +126,7 @@ su ${USERNAME} -c "$(cat << EOF
|
|||
umask 0002
|
||||
# Do not update profile - we'll do this manually
|
||||
export PROFILE=/dev/null
|
||||
ls -lah /home/${USERNAME}/.nvs || :
|
||||
curl -so- https://raw.githubusercontent.com/nvm-sh/nvm/v${NVM_VERSION}/install.sh | bash
|
||||
source ${NVM_DIR}/nvm.sh
|
||||
if [ "${NODE_VERSION}" != "" ]; then
|
||||
|
|
|
@ -126,6 +126,7 @@ su ${USERNAME} -c "$(cat << EOF
|
|||
umask 0002
|
||||
# Do not update profile - we'll do this manually
|
||||
export PROFILE=/dev/null
|
||||
ls -lah /home/${USERNAME}/.nvs || :
|
||||
curl -so- https://raw.githubusercontent.com/nvm-sh/nvm/v${NVM_VERSION}/install.sh | bash
|
||||
source ${NVM_DIR}/nvm.sh
|
||||
if [ "${NODE_VERSION}" != "" ]; then
|
||||
|
|
|
@ -215,9 +215,9 @@ install_from_source() {
|
|||
fi
|
||||
echo "(*) Building Python ${PYTHON_VERSION} from source..."
|
||||
# Install prereqs if missing
|
||||
check_packages curl ca-certificates gnupg2 tar make gcc libssl-dev zlib1g-dev libncurses5-dev \
|
||||
libbz2-dev libreadline-dev libxml2-dev xz-utils libgdbm-dev tk-dev dirmngr \
|
||||
libxmlsec1-dev libsqlite3-dev libffi-dev liblzma-dev uuid-dev
|
||||
check_packages curl gdb ca-certificates gnupg2 tar make gcc libssl-dev zlib1g-dev libncurses5-dev \
|
||||
libbz2-dev libreadline-dev libreadline6-dev libxml2-dev xz-utils libgdbm-dev libgdbm-compat-dev tk-dev dirmngr \
|
||||
libxmlsec1-dev libsqlite3-dev libffi-dev liblzma-dev lzma lzma-dev uuid-dev
|
||||
if ! type git > /dev/null 2>&1; then
|
||||
apt_get_update_if_needed
|
||||
apt-get -y install --no-install-recommends git
|
||||
|
@ -249,7 +249,7 @@ install_from_source() {
|
|||
tar -xzf "/tmp/python-src/${tgz_filename}" -C "/tmp/python-src" --strip-components=1
|
||||
local config_args=""
|
||||
if [ "${OPTIMIZE_BUILD_FROM_SOURCE}" = "true" ]; then
|
||||
config_args="--enable-optimizations"
|
||||
config_args="--enable-optimizations --enable-framework"
|
||||
fi
|
||||
./configure --prefix="${PYTHON_INSTALL_PATH}" --with-ensurepip=install ${config_args}
|
||||
make -j 8
|
||||
|
@ -281,7 +281,7 @@ export DEBIAN_FRONTEND=noninteractive
|
|||
# General requirements
|
||||
check_packages curl ca-certificates gnupg2 tar make gcc libssl-dev zlib1g-dev libncurses5-dev \
|
||||
libbz2-dev libreadline-dev libxml2-dev xz-utils libgdbm-dev tk-dev dirmngr \
|
||||
libxmlsec1-dev libsqlite3-dev libffi-dev liblzma-dev uuid-dev
|
||||
libxmlsec1-dev libsqlite3-dev libffi-dev liblzma-dev lzma uuid-dev
|
||||
|
||||
|
||||
# Install python from source if needed
|
||||
|
|
|
@ -102,7 +102,7 @@ if [ "${PACKAGES_ALREADY_INSTALLED}" != "true" ]; then
|
|||
libkrb5-3 \
|
||||
libgssapi-krb5-2 \
|
||||
libicu[0-9][0-9] \
|
||||
liblttng-ust0 \
|
||||
liblttng-ust[0-9] \
|
||||
libstdc++6 \
|
||||
zlib1g \
|
||||
locales \
|
||||
|
|
|
@ -102,7 +102,7 @@ if [ "${PACKAGES_ALREADY_INSTALLED}" != "true" ]; then
|
|||
libkrb5-3 \
|
||||
libgssapi-krb5-2 \
|
||||
libicu[0-9][0-9] \
|
||||
liblttng-ust0 \
|
||||
liblttng-ust[0-9] \
|
||||
libstdc++6 \
|
||||
zlib1g \
|
||||
locales \
|
||||
|
|
|
@ -126,6 +126,7 @@ su ${USERNAME} -c "$(cat << EOF
|
|||
umask 0002
|
||||
# Do not update profile - we'll do this manually
|
||||
export PROFILE=/dev/null
|
||||
ls -lah /home/${USERNAME}/.nvs || :
|
||||
curl -so- https://raw.githubusercontent.com/nvm-sh/nvm/v${NVM_VERSION}/install.sh | bash
|
||||
source ${NVM_DIR}/nvm.sh
|
||||
if [ "${NODE_VERSION}" != "" ]; then
|
||||
|
|
|
@ -215,9 +215,9 @@ install_from_source() {
|
|||
fi
|
||||
echo "(*) Building Python ${PYTHON_VERSION} from source..."
|
||||
# Install prereqs if missing
|
||||
check_packages curl ca-certificates gnupg2 tar make gcc libssl-dev zlib1g-dev libncurses5-dev \
|
||||
libbz2-dev libreadline-dev libxml2-dev xz-utils libgdbm-dev tk-dev dirmngr \
|
||||
libxmlsec1-dev libsqlite3-dev libffi-dev liblzma-dev uuid-dev
|
||||
check_packages curl gdb ca-certificates gnupg2 tar make gcc libssl-dev zlib1g-dev libncurses5-dev \
|
||||
libbz2-dev libreadline-dev libreadline6-dev libxml2-dev xz-utils libgdbm-dev libgdbm-compat-dev tk-dev dirmngr \
|
||||
libxmlsec1-dev libsqlite3-dev libffi-dev liblzma-dev lzma lzma-dev uuid-dev
|
||||
if ! type git > /dev/null 2>&1; then
|
||||
apt_get_update_if_needed
|
||||
apt-get -y install --no-install-recommends git
|
||||
|
@ -249,7 +249,7 @@ install_from_source() {
|
|||
tar -xzf "/tmp/python-src/${tgz_filename}" -C "/tmp/python-src" --strip-components=1
|
||||
local config_args=""
|
||||
if [ "${OPTIMIZE_BUILD_FROM_SOURCE}" = "true" ]; then
|
||||
config_args="--enable-optimizations"
|
||||
config_args="--enable-optimizations --enable-framework"
|
||||
fi
|
||||
./configure --prefix="${PYTHON_INSTALL_PATH}" --with-ensurepip=install ${config_args}
|
||||
make -j 8
|
||||
|
@ -281,7 +281,7 @@ export DEBIAN_FRONTEND=noninteractive
|
|||
# General requirements
|
||||
check_packages curl ca-certificates gnupg2 tar make gcc libssl-dev zlib1g-dev libncurses5-dev \
|
||||
libbz2-dev libreadline-dev libxml2-dev xz-utils libgdbm-dev tk-dev dirmngr \
|
||||
libxmlsec1-dev libsqlite3-dev libffi-dev liblzma-dev uuid-dev
|
||||
libxmlsec1-dev libsqlite3-dev libffi-dev liblzma-dev lzma uuid-dev
|
||||
|
||||
|
||||
# Install python from source if needed
|
||||
|
|
|
@ -102,7 +102,7 @@ if [ "${PACKAGES_ALREADY_INSTALLED}" != "true" ]; then
|
|||
libkrb5-3 \
|
||||
libgssapi-krb5-2 \
|
||||
libicu[0-9][0-9] \
|
||||
liblttng-ust0 \
|
||||
liblttng-ust[0-9] \
|
||||
libstdc++6 \
|
||||
zlib1g \
|
||||
locales \
|
||||
|
|
|
@ -102,7 +102,7 @@ if [ "${PACKAGES_ALREADY_INSTALLED}" != "true" ]; then
|
|||
libkrb5-3 \
|
||||
libgssapi-krb5-2 \
|
||||
libicu[0-9][0-9] \
|
||||
liblttng-ust0 \
|
||||
liblttng-ust[0-9] \
|
||||
libstdc++6 \
|
||||
zlib1g \
|
||||
locales \
|
||||
|
|
|
@ -126,6 +126,7 @@ su ${USERNAME} -c "$(cat << EOF
|
|||
umask 0002
|
||||
# Do not update profile - we'll do this manually
|
||||
export PROFILE=/dev/null
|
||||
ls -lah /home/${USERNAME}/.nvs || :
|
||||
curl -so- https://raw.githubusercontent.com/nvm-sh/nvm/v${NVM_VERSION}/install.sh | bash
|
||||
source ${NVM_DIR}/nvm.sh
|
||||
if [ "${NODE_VERSION}" != "" ]; then
|
||||
|
|
|
@ -102,7 +102,7 @@ if [ "${PACKAGES_ALREADY_INSTALLED}" != "true" ]; then
|
|||
libkrb5-3 \
|
||||
libgssapi-krb5-2 \
|
||||
libicu[0-9][0-9] \
|
||||
liblttng-ust0 \
|
||||
liblttng-ust[0-9] \
|
||||
libstdc++6 \
|
||||
zlib1g \
|
||||
locales \
|
||||
|
|
|
@ -24,6 +24,9 @@ if [ "$(id -u)" -ne 0 ]; then
|
|||
exit 1
|
||||
fi
|
||||
|
||||
echo "Starting installation of Rust (${RUST_VERSION})"
|
||||
|
||||
|
||||
# Ensure that login shells get the correct path if the user updated the PATH using ENV.
|
||||
rm -f /etc/profile.d/00-restore-env.sh
|
||||
echo "export PATH=${PATH//$(sh -lc 'echo $PATH')/\$PATH}" > /etc/profile.d/00-restore-env.sh
|
||||
|
@ -95,7 +98,7 @@ find_version_from_git_tags() {
|
|||
echo "${variable_name}=${!variable_name}"
|
||||
}
|
||||
|
||||
check_nightly_version() {
|
||||
check_nightly_version_formatting() {
|
||||
local variable_name=$1
|
||||
local requested_version=${!variable_name}
|
||||
if [ "${requested_version}" = "none" ]; then return; fi
|
||||
|
@ -104,7 +107,7 @@ check_nightly_version() {
|
|||
|
||||
date -d ${version_date} &>/dev/null
|
||||
if [ $? != 0 ]; then
|
||||
echo -e "Invalid ${variable_name} value: ${requested_version}\nNightly version should be in the format nightly-YYYY-MM-DD" >&2
|
||||
echo -e "Invalid nightly version for ${variable_name} value: ${requested_version}\nNightly version should be in the format nightly-YYYY-MM-DD" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
@ -173,20 +176,23 @@ chmod g+r+w+s "${RUSTUP_HOME}" "${CARGO_HOME}"
|
|||
if [ "${RUST_VERSION}" = "none" ] || type rustup > /dev/null 2>&1; then
|
||||
echo "Rust already installed. Skipping..."
|
||||
else
|
||||
if [ "${RUST_VERSION}" != "latest" ] && [ "${RUST_VERSION}" != "lts" ] && [ "${RUST_VERSION}" != "stable" ] && [ "${RUST_VERSION}" != "nightly" ]; then
|
||||
# Non-latest version of rust specified.
|
||||
if [ "${RUST_VERSION}" != "latest" ] && [ "${RUST_VERSION}" != "lts" ] && [ "${RUST_VERSION}" != "stable" ]; then
|
||||
# Find version using soft match
|
||||
if ! type git > /dev/null 2>&1; then
|
||||
apt_get_update_if_needed
|
||||
apt-get -y install --no-install-recommends git
|
||||
fi
|
||||
if [ $(echo ${RUST_VERSION} | grep -q "nightly") ]; then
|
||||
find_version_from_git_tags RUST_VERSION "https://github.com/rust-lang/rust" "tags/"
|
||||
is_nightly=0
|
||||
echo ${RUST_VERSION} | grep -q "nightly" || is_nightly=$?
|
||||
if [ $is_nightly = 0 ]; then
|
||||
check_nightly_version_formatting RUST_VERSION
|
||||
else
|
||||
check_nightly_version RUST_VERSION
|
||||
find_version_from_git_tags RUST_VERSION "https://github.com/rust-lang/rust" "tags/"
|
||||
fi
|
||||
default_toolchain_arg="--default-toolchain ${RUST_VERSION}"
|
||||
fi
|
||||
echo "Installing Rust..."
|
||||
echo "Installing Rust (resolved version is '${RUST_VERSION}')..."
|
||||
# Download and verify rustup sha
|
||||
mkdir -p /tmp/rustup/target/${download_architecture}-unknown-linux-gnu/release/
|
||||
curl -sSL --proto '=https' --tlsv1.2 "https://static.rust-lang.org/rustup/dist/${download_architecture}-unknown-linux-gnu/rustup-init" -o /tmp/rustup/target/${download_architecture}-unknown-linux-gnu/release/rustup-init
|
||||
|
|
|
@ -102,7 +102,7 @@ if [ "${PACKAGES_ALREADY_INSTALLED}" != "true" ]; then
|
|||
libkrb5-3 \
|
||||
libgssapi-krb5-2 \
|
||||
libicu[0-9][0-9] \
|
||||
liblttng-ust0 \
|
||||
liblttng-ust[0-9] \
|
||||
libstdc++6 \
|
||||
zlib1g \
|
||||
locales \
|
||||
|
|
|
@ -126,6 +126,7 @@ su ${USERNAME} -c "$(cat << EOF
|
|||
umask 0002
|
||||
# Do not update profile - we'll do this manually
|
||||
export PROFILE=/dev/null
|
||||
ls -lah /home/${USERNAME}/.nvs || :
|
||||
curl -so- https://raw.githubusercontent.com/nvm-sh/nvm/v${NVM_VERSION}/install.sh | bash
|
||||
source ${NVM_DIR}/nvm.sh
|
||||
if [ "${NODE_VERSION}" != "" ]; then
|
||||
|
|
|
@ -56,6 +56,11 @@ package_list="
|
|||
nano \
|
||||
locales"
|
||||
|
||||
# Packages to attempt to install if essential tools are missing (ie: vncpasswd).
|
||||
# This is useful, at least, for Ubuntu 22.04 (jammy)
|
||||
package_list_additional="
|
||||
tigervnc-tools"
|
||||
|
||||
set -e
|
||||
|
||||
if [ "$(id -u)" -ne 0 ]; then
|
||||
|
@ -164,6 +169,10 @@ check_packages() {
|
|||
fi
|
||||
}
|
||||
|
||||
##########################
|
||||
# Install starts here #
|
||||
##########################
|
||||
|
||||
# Ensure apt is in non-interactive to avoid prompts
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
|
@ -191,6 +200,12 @@ fi
|
|||
# Install X11, fluxbox and VS Code dependencies
|
||||
check_packages ${package_list}
|
||||
|
||||
# On newer versions of Ubuntu (22.04),
|
||||
# we need an additional package that isn't provided in earlier versions
|
||||
if ! type vncpasswd > /dev/null 2>&1; then
|
||||
check_packages ${package_list_additional}
|
||||
fi
|
||||
|
||||
# Install Emoji font if available in distro - Available in Debian 10+, Ubuntu 18.04+
|
||||
if dpkg-query -W fonts-noto-color-emoji > /dev/null 2>&1 && ! dpkg -s fonts-noto-color-emoji > /dev/null 2>&1; then
|
||||
apt-get -y install --no-install-recommends fonts-noto-color-emoji
|
||||
|
|
Загрузка…
Ссылка в новой задаче