diff options
author | Samruddhi Khandale <skhandale@microsoft.com> | 2023-06-30 01:14:11 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-30 01:14:11 +0300 |
commit | 300814be97eaa5b7780886bd2eb37e96b523b3e7 (patch) | |
tree | 9db60abc9475d2f379dc53861d7c8a928bd6e34a /src | |
parent | 8a51aa906676280364df60010575b7dad3162f37 (diff) |
Dotnet: Fix Feature failures on ubuntu:jammy (when installing using apt) (#590)feature_dotnet_1.1.4
* fix several bugs
* fix test: .NET is now installed from ubuntu feeds
* add comment ; use dev containers image
* address comments
* revert debugging cmd
* fix test for bookworm
Diffstat (limited to 'src')
-rw-r--r-- | src/dotnet/devcontainer-feature.json | 2 | ||||
-rw-r--r-- | src/dotnet/install.sh | 32 |
2 files changed, 29 insertions, 5 deletions
diff --git a/src/dotnet/devcontainer-feature.json b/src/dotnet/devcontainer-feature.json index 4aa264c..4f484cc 100644 --- a/src/dotnet/devcontainer-feature.json +++ b/src/dotnet/devcontainer-feature.json @@ -1,6 +1,6 @@ { "id": "dotnet", - "version": "1.1.3", + "version": "1.1.4", "name": "Dotnet CLI", "documentationURL": "https://github.com/devcontainers/features/tree/main/src/dotnet", "description": "Installs the .NET CLI. Provides option of installing sdk or runtime, and option of versions to install. Uses latest version of .NET sdk as defaults to install.", diff --git a/src/dotnet/install.sh b/src/dotnet/install.sh index 1c7430a..178994d 100644 --- a/src/dotnet/install.sh +++ b/src/dotnet/install.sh @@ -33,6 +33,16 @@ DOTNET_VERSION_CODENAMES_REQUIRE_OLDER_LIBSSL_1="buster bullseye bionic focal hi # alongside DOTNET_VERSION, but not set as default. ADDITIONAL_VERSIONS=${ADDITIONALVERSIONS:-""} +APT_PREFERENCES_CONTENT="$(cat << 'EOF' +Package: * +Pin: origin "packages.microsoft.com" +Pin-Priority: 1001 +EOF +)" + +APT_PREFERENCES_FILE_ADDED="false" +APT_PREFERENCES_UPDATED="false" + set -e # Clean up @@ -147,9 +157,9 @@ apt_cache_package_and_version_soft_match() { . /etc/os-release local architecture="$(dpkg --print-architecture)" + apt-get update -y major_minor_version="$(echo "${requested_version}" | cut -d "." --field=1,2)" - package_name="$(apt-cache search "${partial_package_name}-[0-9].[0-9]" | awk -F" - " '{print $1}' | grep -m 1 "${partial_package_name}-${major_minor_version}")" - + package_name="$(apt-cache search "${partial_package_name}-[0-9].[0-9]$" | awk -F" - " '{print $1}' | grep -m 1 "${partial_package_name}-${major_minor_version}")" dot_escaped="${requested_version//./\\.}" dot_plus_escaped="${dot_escaped//+/\\+}" # Regex needs to handle debian package version number format: https://www.systutorials.com/docs/linux/man/5-deb-version/ @@ -193,6 +203,12 @@ install_using_apt() { # Import key safely and import Microsoft apt repo curl -sSL ${MICROSOFT_GPG_KEYS_URI} | gpg --dearmor > /usr/share/keyrings/microsoft-archive-keyring.gpg echo "deb [arch=${architecture} signed-by=/usr/share/keyrings/microsoft-archive-keyring.gpg] https://packages.microsoft.com/repos/microsoft-${ID}-${VERSION_CODENAME}-prod ${VERSION_CODENAME} main" > /etc/apt/sources.list.d/microsoft.list + + [ ! -f /etc/apt/preferences ] && APT_PREFERENCES_FILE_ADDED="true" + APT_PREFERENCES_UPDATED="true" + + # See https://github.com/dotnet/core/issues/7699 + echo "${APT_PREFERENCES_CONTENT}" >> /etc/apt/preferences apt-get update -y fi @@ -233,8 +249,8 @@ install_using_apt() { mkdir -p "${TARGET_DOTNET_ROOT}" local dotnet_installed_version="$(dotnet --version)" # See if its the distro version - if [[ "$(dotnet --info)" == *"Base Path: /usr/lib/dotnet/dotnet${dotnet_installed_version:0:1}-${dotnet_installed_version}"* ]]; then - ln -s "/usr/lib/dotnet/dotnet${dotnet_installed_version:0:1}" "${CURRENT_DIR}" + if [[ "$(dotnet --info)" == *"Base Path: /usr/lib/dotnet/${DOTNET_SDK_OR_RUNTIME}/${dotnet_installed_version}"* ]]; then + ln -s "/usr/lib/dotnet" "${CURRENT_DIR}" else # Location used by MS repo versions ln -s "/usr/share/dotnet" "${CURRENT_DIR}" @@ -463,6 +479,14 @@ if [ "${CHANGE_OWNERSHIP}" = "true" ]; then fi # Clean up +if [ "${APT_PREFERENCES_UPDATED}" = "true" ]; then + if [ "${APT_PREFERENCES_FILE_ADDED}" = "true" ]; then + rm -f /etc/apt/preferences + else + head -n -3 /etc/apt/preferences > /tmp/preferences-temp && mv /tmp/preferences-temp /etc/apt/preferences + fi +fi + rm -rf /var/lib/apt/lists/* echo "Done!" |