Vue d’ensemble de .NET sur Ubuntu

Cet article explique comment installer .NET sur Ubuntu. Le dépôt de packages Microsoft contient chaque version de .NET qui est ou a été prise en charge sur Ubuntu. À compter d’Ubuntu 22.04, certaines versions de .NET sont disponibles dans le flux de package Ubuntu. Pour plus d’informations sur les versions disponibles, consultez la section Distributions prises en charge.

Warning

Nous vous recommandons de choisir un référentiel unique pour sourcer des packages .NET. Ne mélangez pas des packages .NET à partir de plusieurs référentiels de package. Cela entraîne en effet des problèmes lorsque des applications tentent de résoudre une version spécifique de .NET.

Méthode Avantages Inconvénients
Gestionnaire de package
(Flux Microsoft)
  • Les versions prises en charge sont toujours disponibles.
  • Les correctifs sont disponibles immédiatement.
  • Les dépendances sont incluses.
  • Suppression facile.
  • Nécessite l’inscription du dépôt de packages Microsoft.
  • Les préversions ne sont pas disponibles.
  • Prend uniquement en charge Ubuntu x64.
Gestionnaire de package
(Flux Ubuntu)
  • Généralement, la dernière version est disponible.
  • Les correctifs sont disponibles immédiatement.
  • Les dépendances sont incluses.
  • Suppression facile.
  • Les versions .NET disponibles varient selon la version d’Ubuntu.
  • Les préversions ne sont pas disponibles.
  • Prend uniquement en charge Ubuntu x64. (À l’exception d’Ubuntu 23.04+, qui prend également en charge Arm64)
Script/extraction manuelle
  • Contrôlez l’emplacement où .NET est installé.
  • Les préversions sont disponibles.
  • Installez manuellement les mises à jour.
  • Installez manuellement les dépendances.
  • Suppression manuelle.

Décider comment installer .NET

Quand votre version d’Ubuntu prend en charge .NET par le biais du flux Ubuntu intégré, la prise en charge de ces builds de .NET est fournie par Canonical et les builds peuvent être optimisées pour différentes charges de travail. Microsoft fournit la prise en charge des packages dans le flux du dépôt de packages Microsoft.

Utilisez les sections suivantes pour déterminer comment installer .NET :

J’utilise Ubuntu 22.04 ou version ultérieure et j’ai uniquement besoin de .NET

Installez .NET par le biais du flux Ubuntu. Pour plus d'informations, consultez les pages suivantes :

Important

Les versions du SDK .NET proposées par Canonical sont toujours dans la bande de fonctionnalités .1xx. Si vous souhaitez utiliser une version plus récente de la bande de fonctionnalités, utilisez le flux Microsoft pour installer le SDK. Veillez à consulter les informations de l’article Mélanges de packages .NET sur Linux pour comprendre les implications du basculement entre les flux de dépôt.

Si vous prévoyez d’installer le référentiel Microsoft pour utiliser d’autres packages Microsoft, comme powershell, mdatp ou mssql, vous devez déprioriser les packages .NET fournis par le référentiel Microsoft. Pour obtenir des instructions sur la façon de déprioriser les packages, consultez Ma distribution Linux fournit des packages .NET et je souhaite les utiliser.

J’utilise une version d’Ubuntu antérieure à 22.04

Utilisez les instructions de la page Ubuntu spécifique à la version.

Consultez la section Distributions prises en charge pour plus d’informations sur les versions de .NET prises en charge pour votre version d’Ubuntu. Si vous installez une version qui n’est pas prise en charge, consultez Inscrire le dépôt de packages Microsoft.

J’utilise d’autres packages Microsoft, tels que powershell, mdatp ou mssql

Si votre version d’Ubuntu prend en charge .NET par le biais du flux Ubuntu intégré, vous devez décider quel flux doit installer .NET. La section Distributions prises en charge fournit un tableau qui liste les versions de .NET disponibles dans les flux de package.

Si vous souhaitez approvisionner les packages .NET à partir du flux Ubuntu, vous devez déprioriser les packages .NET fournis par le référentiel Microsoft. Pour obtenir des instructions sur la façon de déprioriser les packages, consultez Ma distribution Linux fournit des packages .NET et je souhaite les utiliser.

Je souhaite créer une application .NET

Utilisez les mêmes sources de package pour le SDK que pour le runtime. Par exemple, si vous utilisez Ubuntu 22.04 et .NET 6, mais pas .NET 7, nous vous recommandons d’installer .NET par le biais du flux Ubuntu intégré. Si, toutefois, vous passez à .NET 7, qui n’est pas fourni par Canonical pour Ubuntu 22.04, vous devez désinstaller .NET et le réinstaller avec le référentiel de packages Microsoft. Pour plus d’informations, consultez Inscrire le référentiel de packages Microsoft et effectuer l’installation avec ce dernier. Passez également en revue les autres suggestions de la section Décider comment installer .NET.

Je souhaite exécuter une application .NET dans un scénario de conteneur, de cloud ou d’intégration continue

Si votre version Ubuntu fournit la version .NET dont vous avez besoin, installez-la à partir du flux intégré. Sinon, inscrivez le dépôt de packages Microsoft et installez .NET à partir de ce dépôt. Passez en revue les informations de la section Distributions prises en charge.

Si la version de .NET souhaitée n’est pas disponible, essayez d’utiliser le script dotnet-install.

Ma distribution Ubuntu n’inclut pas la version .NET souhaitée, ou j’ai besoin d’une version .NET sans prise en charge

Nous vous recommandons d’utiliser APT et le dépôt de packages Microsoft. Pour plus d’informations, consultez la section Inscrire le dépôt de packages Microsoft et effectuer l’installation avec ce dernier.

Je souhaite installer une préversion

Utilisez l’une des méthodes suivantes pour installer .NET :

Je ne veux pas utiliser APT

Si vous souhaitez une installation automatisée, utilisez le script d’installation Linux.

Si vous souhaitez un contrôle total sur l’expérience d’installation de .NET, téléchargez un tarball et installez .NET manuellement. Pour plus d’informations, consultez Installation manuelle.

J’utilise un processeur ARM

Utilisez l’une des méthodes suivantes pour installer .NET :

Distributions prises en charge

Le tableau suivant répertorie les versions .NET actuellement prises en charge et les versions d’Ubuntu sur lesquelles elles sont prises en charge. Cliquez sur le lien correspondant à une version d’Ubuntu afin de savoir comment installer .NET pour cette version.

Ubuntu Versions .NET prises en charge Disponibles dans le flux Ubuntu Disponibles dans le flux Microsoft
24.04 8.0 8.0 Aucun
23.10 8.0, 7.0, 6.0 8.0, 7.0, 6.0 8.0, 7.0, 6.0
23.04 8.0, 7.0, 6.0 7.0, 6.0 8.0, 7.0, 6.0
22.04 (LTS) 8.0, 7.0, 6.0 7.0, 6.0 8.0, 7.0, 6.0, 3.1
20.04 (LTS) 8.0, 7.0, 6.0 Aucune 8.0, 7.0. 6.0, 5.0, 3.1, 2.1
18.04 (LTS) 7.0, 6.0 None 7.0, 6.0, 5.0, 3.1, 2.2, 2.1
16.04 (LTS) 6.0 None 6.0, 5.0, 3.1, 3.0, 2.2, 2.1, 2.0

Lorsqu’une version Ubuntu n’est plus prise en charge, .NET n’est plus pris en charge avec cette version.

Les versions suivantes de .NET ne sont ❌ plus prises en charge :

  • .NET 5
  • .NET Core 3.1
  • .NET Core 3.0
  • .NET Core 2.2
  • .NET Core 2.1
  • .NET Core 2.0

Inscrire le dépôt de packages Microsoft

Le référentiel de packages Microsoft contient toutes les versions de .NET qui sont, ou ont été, prises en charge avec votre version d’Ubuntu. Si votre version d’Ubuntu fournit des packages .NET, vous devez déprioriser les packages Ubuntu et utiliser le référentiel Microsoft. Pour obtenir des instructions sur la façon de déprioriser les packages, consultez J’ai besoin d’une version de .NET qui n’est pas fournie par ma distribution Linux.

Important

Le référentiel de packages Microsoft prend en charge seulement les packages .NET qui ciblent l’architecture x64. D’autres architectures, telles que Arm, doivent installer .NET par d’autres moyens, tels que le script d’installation ou par le biais d’une installation manuelle.

Les préversions ne sont pas disponibles dans le dépôt de packages Microsoft. Pour plus d’informations, consultez Installer les préversions.

Attention

Nous vous recommandons d’utiliser un seul dépôt pour gérer toutes vos installations de .NET. Si vous avez déjà installé .NET avec le dépôt Ubuntu, vous devez nettoyer le système des packages .NET et configurer APT de manière à ignorer le flux Ubuntu. Pour plus d’informations sur la procédure à suivre, consultez J’ai besoin d’une version de .NET qui n’est pas fournie par ma distribution Linux.

L’installation avec APT peut se faire à l’aide de quelques commandes. Avant d’installer .NET, exécutez les commandes suivantes pour ajouter la clé de signature du package Microsoft à votre liste de clés approuvées et ajouter le référentiel de packages.

Ouvrez un terminal et exécutez les commandes suivantes :

# Get OS version info
source /etc/os-release

# Download Microsoft signing key and repository
wget https://packages.microsoft.com/config/$ID/$VERSION_ID/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

Conseil

Le script précédent a été écrit pour Ubuntu et il peut ne pas fonctionner si vous utilisez une distribution dérivée, telle que Linux Mint. Il est probable que la variable $repo_version ne se verra pas attribuer la valeur correcte, ce qui rend l’URI de la commande wget non valide. Cette variable correspond à la version d’Ubuntu spécifique pour laquelle vous souhaitez obtenir des packages, par exemple 22.10 ou 23.04.

Vous pouvez utiliser un navigateur web et accéder à https://packages.microsoft.com/config/ubuntu/ pour voir quelles versions d’Ubuntu peuvent être utilisées comme valeur $repo_version.

Installer .NET

Une fois que vous avez inscrit le dépôt de packages Microsoft ou si votre version du flux par défaut d’Ubuntu prend en charge le package .NET, vous pouvez installer .NET par le biais du gestionnaire de package avec la commande sudo apt install <package-name>. Remplacez <package-name> par le nom du package .NET que vous souhaitez installer. Par exemple, pour installer le SDK .NET 8.0, utilisez la commande sudo apt install dotnet-sdk-8.0. Le tableau suivant liste les packages .NET pris en charge :

Produit Type Package
8.0 ASP.NET Core Runtime aspnetcore-runtime-8.0
8.0 .NET Runtime dotnet-runtime-8.0
8.0 .NET Kit SDK dotnet-sdk-8.0
7.0 ASP.NET Core Runtime aspnetcore-runtime-7.0
7.0 .NET Runtime dotnet-runtime-7.0
7.0 .NET Kit SDK dotnet-sdk-7.0
6.0 ASP.NET Core Runtime aspnetcore-runtime-6.0
6.0 .NET Runtime dotnet-runtime-6.0
6.0 .NET Kit SDK dotnet-sdk-6.0

Si vous souhaitez installer une version non prise en charge de .NET, consultez la section Distributions prises en charge pour voir si cette version de .NET est disponible. Ensuite, substituez la version de .NET que vous souhaitez installer. Par exemple, pour installer ASP.NET Core 2.1, utilisez le nom de package aspnetcore-runtime-2.1.

Conseil

Si vous ne créez pas d’applications .NET, installez le runtime ASP.NET Core, car il inclut le runtime .NET et prend également en charge les applications ASP.NET Core.

Certaines variables d’environnement affectent la façon dont .NET est exécuté après son installation. Pour plus d’informations, consultez Variables d’environnement du Kit de développement logiciel (SDK) .NET et de l’interface CLI .NET.

Désinstallation de .NET

Si vous avez installé .NET par le biais d’un gestionnaire de package, procédez de même pour la désinstallation en utilisant la commande apt-get remove :

sudo apt-get remove dotnet-sdk-6.0

Pour plus d’informations, consultez Désinstaller .NET.

Installer des préversions

Les préversions et les versions finales de .NET ne sont pas disponibles dans les dépôts de packages. Vous pouvez installer les préversions et les versions finales de .NET de l’une des manières suivantes :

Supprimer des préversions

Lorsque vous utilisez un gestionnaire de package pour gérer votre installation de .NET, vous pouvez rencontrer un conflit si vous avez déjà installé une préversion. Le gestionnaire de package peut interpréter la version qui ne correspond pas à la préversion comme une version antérieure de .NET. Pour installer la version qui ne correspond pas à la préversion, désinstallez d’abord les préversions. Pour plus d’informations sur la désinstallation de .NET, consultez Comment supprimer le runtime et le kit de développement logiciel (SDK) .NET.

Utiliser APT pour mettre à jour .NET

Si vous avez installé .NET par le biais d’un gestionnaire de package, vous pouvez mettre à niveau le package avec la commande apt upgrade. Par exemple, les commandes suivantes mettent à niveau le package dotnet-sdk-7.0 avec la dernière version :

sudo apt update
sudo apt upgrade dotnet-sdk-7.0

Conseil

Si vous avez mis à niveau votre distribution Linux depuis l’installation de .NET, vous devrez peut-être reconfigurer le référentiel de packages Microsoft. Exécutez les instructions d’installation de votre version de distribution actuelle pour effectuer une mise à niveau vers le référentiel de packages approprié pour les mises à jour .NET.

Résolution des problèmes

À compter d’Ubuntu 22.04, vous pourriez rencontrer une situation où il semble que seul un élément de .NET soit disponible. Par exemple, vous avez installé le runtime et le SDK, mais lors de l’exécution de dotnet --info, seul le runtime est listé. Cette situation peut être liée à l’utilisation de deux sources de package différentes. Les flux de package Ubuntu 22.04 et Ubuntu 22.10 intégrés incluent certaines versions de .NET, mais pas toutes, et vous avez peut-être également installé .NET à partir des flux Microsoft. Pour plus d’informations sur la résolution de ce problème, consultez Résoudre les erreurs .NET liées à des fichiers manquants sur Linux.

Problèmes liés à APT

Cette section fournit des informations sur les erreurs courantes que vous pourriez rencontrer lorsque vous utilisez APT pour installer .NET.

Le package est introuvable

Important

L’utilisation d’un gestionnaire de package pour installer .NET à partir du flux de package Microsoft prend uniquement en charge l’architecture x64. Les autres architectures, comme Arm, ne sont pas prises en charge par le flux de package Microsoft.

Pour plus d’informations sur l’installation de .NET sans gestionnaire de package, consultez l’un des articles suivants :

Package introuvable\Certains packages n’ont pas pu être installés

Notes

Ces informations s’appliquent uniquement lorsque .NET est installé à partir du flux de package Microsoft.

Si vous recevez un message d’erreur semblable à Le package {dotnet-package} est introuvable ou Certains packages n’ont pas pu être installés, exécutez les commandes suivantes.

Il existe deux espaces réservés dans l’ensemble de commandes suivant.

  • {dotnet-package}
    Celui-ci représente le package .NET que vous installez (par exemple, aspnetcore-runtime-8.0). Il est utilisé dans la commande sudo apt-get install suivante.

Commencez par essayer de vider la liste des packages :

sudo dpkg --purge packages-microsoft-prod && sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get update

Réessayez ensuite d’installer .NET. Si cela ne fonctionne pas, vous pouvez effectuer une installation manuelle avec les commandes suivantes :

Si vous utilisez Ubuntu 23.10 ou ultérieur, essayez les commandes suivantes :

# Define the OS version, name, and codename
source /etc/os-release

# Download the Microsoft keys
sudo apt-get install -y gpg wget
wget https://packages.microsoft.com/keys/microsoft.asc
cat microsoft.asc | gpg --dearmor -o microsoft.asc.gpg

# Add the Microsoft repository to the system's sources list
wget https://packages.microsoft.com/config/$ID/$VERSION_ID/prod.list
sudo mv prod.list /etc/apt/sources.list.d/microsoft-prod.list

# Move the key to the appropriate place
sudo mv microsoft.asc.gpg $(cat /etc/apt/sources.list.d/microsoft-prod.list | grep -oP "(?<=signed-by=).*(?=\])")

# Update packages and install .NET
sudo apt-get update && \
  sudo apt-get install -y {dotnet-package}

Si vous utilisez une version d’Ubuntu antérieure à 23.10, essayez les commandes suivantes :

# Define the OS version, name, and codename
source /etc/os-release

# Download the Microsoft keys
sudo apt-get install -y gpg wget
wget https://packages.microsoft.com/keys/microsoft.asc
cat microsoft.asc | gpg --dearmor -o microsoft.asc.gpg
sudo mv microsoft.asc.gpg /etc/apt/trusted.gpg.d/

# Add the Microsoft repository to the system's sources list
wget https://packages.microsoft.com/config/$ID/$VERSION_ID/prod.list
sudo mv prod.list /etc/apt/sources.list.d/microsoft-prod.list

# Set ownership
sudo chown root:root /etc/apt/trusted.gpg.d/microsoft.asc.gpg
sudo chown root:root /etc/apt/sources.list.d/microsoft-prod.list

# Update packages and install .NET
sudo apt-get update && \
  sudo apt-get install -y {dotnet-package}

Extraction impossible

Lors de l’installation du package .NET, vous pouvez voir une erreur semblable à Failed to fetch ... File has unexpected size ... Mirror sync in progress?. Celle-ci peut signifier que le flux de package pour .NET est en cours de mise à niveau avec des versions plus récentes du package, et que vous devez réessayer ultérieurement. Pendant une mise à niveau, le flux de package ne doit pas être indisponible pendant plus de 30 minutes. Si vous recevez continuellement cette erreur pendant plus de 30 minutes, veuillez signaler le problème à l’adresse https://github.com/dotnet/core/issues.

Les dépendances

Lorsque vous effectuez une installation avec un gestionnaire de package, ces bibliothèques sont installées pour vous. Toutefois, si vous installez manuellement .NET ou que vous publiez une application autonome, vous devez installer ces dépendances pour exécuter votre application :

  • libc6
  • libgcc1 (pour 16.x et 18.x)
  • libgcc-s1 (pour 20.x ou ultérieure)
  • libgssapi-krb5-2
  • libicu55 (pour 16.x)
  • libicu60 (pour 18.x)
  • libicu66 (pour 20.x)
  • libicu70 (pour 22.04)
  • libicu71 (pour 22.10)
  • libicu72 (pour 23.04 ou ultérieur)
  • liblttng-ust1 (pour 22.x ou ultérieur)
  • libssl1.0.0 (pour 16.x)
  • libssl1.1 (pour 18.x, 20.x)
  • libssl3 (pour 22.x ou ultérieur)
  • libstdc++6
  • libunwind8 (pour 22.x ou ultérieur)
  • zlib1g

Les dépendances peuvent être installées avec la commande apt install. L’extrait de code suivant illustre l’installation de la bibliothèque zlib1g :

sudo apt install zlib1g

Si l’application .NET utilise l’assembly System.Drawing.Common, libgdiplus doit également être installé. Étant donné que System.Drawing.Common n’est plus pris en charge sur Linux, cela fonctionne uniquement sur .NET 6 et nécessite de définir le commutateur de configuration du runtime System.Drawing.EnableUnixSupport.

Vous pouvez installer une version récente de libgdiplus en ajoutant le référentiel Mono à votre système.

Étapes suivantes