Introduction
Au cours des derniers mois, j’ai eu du mal à obtenir une installation fonctionnelle du SDK dotnet sur Ubuntu exécuté sur Windows Subsystems pour Linux (WSL). Cela est en partie dû au fait que de nouvelles méthodes d’installation ont été ajoutées au fil des ans, d’autres ont été rendues obsolètes, et il est vraiment facile d’involontairement mettre à jour d’une méthode d’installation à une autre, en désorganisant tout par la même occasion.
La documentation sur le sujet suggère les méthodes suivantes en ce moment:
- Flux de paquets (Canonical)
- Flux de paquets (Microsoft)
- Script
Et ne mentionne pas snap (de toute façon indisponible sur WSL). L’option du flux de paquets Canonical a l’inconvénient majeur de ne pas avoir toutes les versions de correctifs, et l’option de script ne met pas à jour le SDK avec les autres paquets. Il me semble naturel que tout le monde souhaite utiliser le flux de paquets Microsoft, mais les scripts fournis ne sont que partiels et conduisent souvent à un état corrompu.
Solution
Afin de correctement installer le SDK depuis le flux Microsoft, voici les étapes que je suis.
# source https://learn.microsoft.com/en-us/dotnet/core/install/linux-package-mixup?pivots=os-linux-ubuntu#i-need-a-version-of-net-that-isnt-provided-by-my-linux-distribution
# remove pre-existing packages
sudo apt remove 'dotnet*' 'aspnet*' 'netstandard*'
# set the default ubuntu package feed as low priority for dotnet packages so they don't conflict
echo -e "Package: dotnet* aspnet* netstandard*\nPin: origin \"archive.ubuntu.com\"\nPin-Priority: -10" | sudo dd of=/etc/apt/preferences oflag=append conv=notrunc
# source https://learn.microsoft.com/en-us/dotnet/core/install/linux-ubuntu#register-the-microsoft-package-repository
# Get Ubuntu version
declare repo_version=$(if command -v lsb_release &> /dev/null; then lsb_release -r -s; else grep -oP '(?<=^VERSION_ID=).+' /etc/os-release | tr -d '"'; fi)
# Download Microsoft signing key and repository
wget https://packages.microsoft.com/config/ubuntu/$repo_version/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
# Install Microsoft signing key and repository
sudo dpkg -i packages-microsoft-prod.deb
# Clean up
rm packages-microsoft-prod.deb
# Update packages
sudo apt update
# install dotnet sdk (you can change the version to what you'd like)
sudo apt-get install dotnet-sdk-7.0