Panoramica di .NET in Ubuntu

Questo articolo descrive come installare .NET in Ubuntu. Il repository di pacchetti Microsoft contiene tutte le versioni di .NET attualmente o in precedenza supportate in Ubuntu. A partire da Ubuntu 22.04, alcune versioni di .NET sono disponibili nel feed di pacchetti Ubuntu. Per altre informazioni sulle versioni disponibili, vedere la sezione Distribuzioni supportate.

Avviso

È consigliabile scegliere un unico repository come origine dei pacchetti .NET. Non combinare pacchetti .NET provenienti da più repository di pacchetti, perché questo provoca problemi quando le app provano a risolvere una versione specifica di .NET.

metodo Vantaggi Svantaggi
Gestione pacchetti
(feed Microsoft)
  • Le versioni supportate sono sempre disponibili.
  • Le patch sono disponibili immediatamente.
  • Le dipendenze sono incluse.
  • La rimozione è facile.
  • Richiede la registrazione del repository di pacchetti Microsoft.
  • Le versioni di anteprima non sono disponibili.
  • Supporta solo Ubuntu x64.
Gestione pacchetti
(feed Ubuntu)
  • In genere è disponibile l'ultima versione.
  • Le patch sono disponibili immediatamente.
  • Le dipendenze sono incluse.
  • La rimozione è facile.
  • Le versioni di .NET disponibili variano in base alla versione di Ubuntu.
  • Le versioni di anteprima non sono disponibili.
  • Supporta solo Ubuntu x64. (ad eccezione di Ubuntu 23.04+, che supporta anche ARM64)
Script\Estrazione manuale
  • Controllare dove viene installato .NET.
  • Sono disponibili versioni di anteprima.
  • Installare manualmente gli aggiornamenti.
  • Installare manualmente le dipendenze.
  • Rimozione manuale.

Decidere come installare .NET

Quando la versione di Ubuntu in uso supporta .NET tramite il feed Ubuntu predefinito, il supporto per queste build di .NET viene fornito da Canonical e le build potrebbero essere ottimizzate per carichi di lavoro diversi. Microsoft fornisce supporto per i pacchetti nel feed del repository di pacchetti Microsoft.

Usare le sezioni seguenti per determinare come installare .NET:

Si usa Ubuntu 22.04 o versione successiva e occorre solo .NET

Installare .NET tramite il feed Ubuntu. Per ulteriori informazioni, vedere i seguenti argomenti:

Importante

Le versioni di .NET SDK offerte da Canonical sono sempre nella banda di funzionalità .1xx. Se si vuole usare una versione più recente della banda di funzionalità, usare il feed Microsoft per installare l'SDK. Assicurarsi di esaminare le informazioni contenute nell'articolo relativo alle combinazioni di pacchetti .NET in Linux per comprendere le implicazioni dell'uso di feed di repository diversi.

Se si intende installare il repository Microsoft per usare altri pacchetti Microsoft, ad esempio powershell, mdatp o mssql, è necessario annullare la priorità dei pacchetti .NET forniti dal repository Microsoft. Per istruzioni su come annullare la priorità dei pacchetti, vedere Si vogliono usare i pacchetti .NET forniti con la distribuzione Linux in uso.

Si usa una versione di Ubuntu precedente alla 22.04

Seguire le istruzioni nella pagina relativa alla specifica versione di Ubuntu.

Vedere la sezione Distribuzioni supportate per altre informazioni sulle versioni di .NET supportate per la propria versione di Ubuntu. Se si sta installando una versione non supportata, vedere Registrare il repository di pacchetti Microsoft.

Si usano altri pacchetti Microsoft, ad esempio powershell, mdatp o mssql

Se la versione di Ubuntu in uso supporta .NET tramite il feed Ubuntu predefinito, è necessario decidere con quale feed installare .NET. La sezione Distribuzioni supportate contiene una tabella che elenca le versioni di .NET disponibili nei feed di pacchetti.

Se si vogliono ottenere i pacchetti .NET dal feed Ubuntu, è necessario annullare la priorità dei pacchetti .NET forniti dal repository Microsoft. Per istruzioni su come annullare la priorità dei pacchetti, vedere Si vogliono usare i pacchetti .NET forniti con la distribuzione Linux in uso.

Si vuole creare un'app .NET

Usare la stessa origine dei pacchetti per l'SDK e per il runtime. Ad esempio, se si usano Ubuntu 22.04 e .NET 6, ma non .NET 7, è consigliabile installare .NET tramite il feed Ubuntu predefinito. Se invece si passa a .NET 7, che non è fornito da Canonical per Ubuntu 22.04, è necessario disinstallare .NET e reinstallarlo tramite il repository di pacchetti Microsoft. Per altre informazioni, vedere Registrare e installare con il repository di pacchetti Microsoft. Esaminare anche gli altri suggerimenti disponibili nella sezione Decidere come installare .NET.

Si vuole eseguire un'app .NET in un contenitore, nel cloud o in uno scenario di integrazione continua

Se la versione di Ubuntu in uso fornisce la versione di .NET necessaria, installarla dal feed predefinito. In caso contrario, registrare il repository di pacchetti Microsoft e installare .NET da tale repository. Esaminare le informazioni nella sezione Distribuzioni supportate.

Se la versione di .NET desiderata non è disponibile, provare a usare lo script dotnet-install.

La distribuzione Ubuntu in uso non include la versione di .NET desiderata o è necessaria una versione di .NET non più supportata

È consigliabile usare APT e il repository di pacchetti Microsoft. Per altre informazioni, vedere la sezione Registrare e installare con il repository di pacchetti Microsoft.

Si vuole installare una versione di anteprima

Installare .NET in uno dei modi seguenti:

Non si vuole usare APT

Se si preferisce un'installazione automatica, usare lo script di installazione di Linux.

Se si vuole avere il controllo completo sull'esperienza di installazione di .NET, scaricare un file tarball e installare manualmente .NET. Per altre informazioni, vedere Installazione manuale.

Si usa una CPU basata su ARM

Installare .NET in uno dei modi seguenti:

Distribuzioni supportate

La tabella seguente contiene un elenco delle release di .NET attualmente supportate e delle versioni di Ubuntu in cui sono supportate. Ogni collegamento conduce alla pagina della specifica versione di Ubuntu, contenente istruzioni su come installare .NET per quella versione.

Ubuntu Versioni di .NET supportate Disponibile nel feed Ubuntu Disponibile nel feed Microsoft
24.04 8.0 8.0 None
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 None 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

Quando una versione di Ubuntu raggiunge la fine del supporto, anche .NET non è più supportato con quella versione.

Le versioni seguenti di .NET ❌ non sono più supportate:

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

Registrare il repository di pacchetti Microsoft

Il repository di pacchetti Microsoft contiene tutte le versioni di .NET precedentemente o attualmente supportate con la propria versione di Ubuntu. Se la versione di Ubuntu in uso fornisce pacchetti .NET, sarà necessario annullare la priorità dei pacchetti Ubuntu e usare il repository Microsoft. Per istruzioni su come annullare la priorità dei pacchetti, vedere È necessaria una versione di .NET non fornita dalla distribuzione Linux.

Importante

Il repository di pacchetti Microsoft supporta solo i pacchetti .NET destinati all'architettura x64 . In altre architetture, ad esempio ARM, occorre installare .NET in altri modi, ad esempio con lo script di installazione o eseguendo un'installazione manuale.

Le versioni di anteprima non sono disponibili nel repository di pacchetti Microsoft. Per altre informazioni, vedere Installare le versioni di anteprima.

Attenzione

È consigliabile usare un solo repository per gestire tutte le installazioni di .NET. Se in precedenza si è installato .NET con il repository Ubuntu, è necessario eliminare dal sistema i pacchetti .NET e configurare APT in modo da ignorare il feed Ubuntu. Per altre informazioni su come eseguire questa operazione, vedere È necessaria una versione di .NET non fornita dalla distribuzione Linux.

L'installazione con APT può essere eseguita con pochi comandi. Prima di installare .NET, eseguire i comandi seguenti per aggiungere la chiave di firma dei pacchetti Microsoft all'elenco di chiavi attendibili e aggiungere il repository dei pacchetti.

Aprire un terminale ed eseguire i comandi seguenti:

# 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

Suggerimento

Lo script precedente è stato scritto per Ubuntu e potrebbe non funzionare se si usa una distribuzione derivata, ad esempio Linux Mint. È probabile che alla variabile $repo_version non venga assegnato il valore corretto, rendendo così non valido l'URI per il comando wget. Questa variabile esegue il mapping alla versione specifica di Ubuntu per cui si vogliono ottenere i pacchetti, ad esempio 22.10 o 23.04.

È possibile usare un Web browser e passare a https://packages.microsoft.com/config/ubuntu/ per vedere quali sono le versioni di Ubuntu disponibili da usare come valore $repo_version.

Installa .NET

Dopo aver registrato il repository di pacchetti Microsoft oppure se la versione del feed predefinito di Ubuntu supporta il pacchetto .NET, è possibile installare .NET tramite lo strumento di gestione pacchetti con il comando sudo apt install <package-name>. Sostituire <package-name> con il nome del pacchetto .NET da installare. Ad esempio, per installare .NET SDK 8.0, usare il comando sudo apt install dotnet-sdk-8.0. La tabella seguente contiene l'elenco dei pacchetti .NET attualmente supportati:

Prodotto Type Pacchetto
8.0 ASP.NET Core esecuzione aspnetcore-runtime-8.0
8.0 .NET esecuzione dotnet-runtime-8.0
8.0 .NET SDK dotnet-sdk-8.0
7.0 ASP.NET Core esecuzione aspnetcore-runtime-7.0
7.0 .NET esecuzione dotnet-runtime-7.0
7.0 .NET SDK dotnet-sdk-7.0
6.0 ASP.NET Core esecuzione aspnetcore-runtime-6.0
6.0 .NET esecuzione dotnet-runtime-6.0
6.0 .NET SDK dotnet-sdk-6.0

Se si vuole installare una versione non supportata di .NET, controllare se è disponibile nella sezione Distribuzioni supportate. Sostituire quindi il numero della versione di .NET da installare. Ad esempio, per installare ASP.NET Core 2.1, usare il nome del pacchetto aspnetcore-runtime-2.1.

Suggerimento

Se non si creano app .NET, installare il runtime di ASP.NET Core, perché include il runtime di .NET e supporta anche le app ASP.NET Core.

Alcune variabili di ambiente influiscono sulla modalità di esecuzione di .NET dopo l'installazione. Per altre informazioni, vedere la sezione Variabili di ambiente dell'interfaccia della riga di comando e di .NET SDK.

Disinstallare .NET

Se .NET è stato installato mediante uno strumento di gestione pacchetti, disinstallarlo nello stesso modo con il comando apt-get remove:

sudo apt-get remove dotnet-sdk-6.0

Per altre informazioni, vedere Disinstallare .NET.

Installare le versioni di anteprima

Le versioni di anteprima e le versioni finali candidate di .NET non sono disponibili nei repository di pacchetti. È possibile installare queste versioni di .NET in uno dei modi seguenti:

Rimuovere le versioni di anteprima

Quando si usa uno strumento di gestione pacchetti per gestire l'installazione di .NET, se in precedenza è stata installata una versione di anteprima potrebbe verificarsi un conflitto. Lo strumento di gestione pacchetti potrebbe interpretare la versione non di anteprima come una versione precedente di .NET. Per installare la versione non di anteprima, disinstallare prima di tutto le versioni di anteprima. Per altre informazioni sulla disinstallazione di .NET, vedere Come rimuovere il runtime e l'SDK .NET.

Usare APT per aggiornare .NET

Se .NET è stato installato mediante uno strumento di gestione pacchetti, è possibile aggiornare il pacchetto con il comando apt upgrade. Ad esempio, i comandi seguenti aggiornano il pacchetto dotnet-sdk-7.0 con la versione più recente:

sudo apt update
sudo apt upgrade dotnet-sdk-7.0

Suggerimento

Se la distribuzione di Linux è stata aggiornata dopo l'installazione di .NET, potrebbe essere necessario riconfigurare il repository di pacchetti Microsoft. Eseguire l'aggiornamento al repository di pacchetti appropriato per gli aggiornamenti di.NET seguendo la procedura di installazione per la versione corrente della propria distribuzione.

Risoluzione dei problemi

A partire da Ubuntu 22.04, può verificarsi una situazione in cui sembra che sia disponibile solo una parte di .NET. Ad esempio, sono stati installato il runtime e l'SDK, ma quando si esegue dotnet --info viene elencato solo il runtime. Questa situazione può essere correlata all'uso di due origini dei pacchetti diverse. I feed di pacchetti Ubuntu 22.04 e Ubuntu 22.10 predefiniti includono alcune versioni di .NET, ma non tutte, ed è possibile che .NET sia stato installato anche dai feed Microsoft. Per altre informazioni su come risolvere questo problema, vedere Risolvere gli errori di .NET correlati a file mancanti in Linux.

Problemi relativi ad APT

Questa sezione fornisce informazioni sugli errori comuni che possono verificarsi usando APT per installare .NET.

Non è possibile trovare il pacchetto

Importante

L'installazione di .NET dal feed di pacchetti Microsoft mediante uno strumento di gestione pacchetti è supportata solo per l'architettura x64. Le altre architetture, ad esempio ARM, non sono supportate dal feed di pacchetti Microsoft.

Per altre informazioni sull'installazione di .NET senza uno strumento di gestione pacchetti, vedere uno degli articoli seguenti:

Non è possibile trovare il pacchetto\Non è stato possibile installare alcuni pacchetti

Nota

Queste informazioni si applicano solo quando .NET viene installato dal feed di pacchetti Microsoft.

Se viene visualizzato un messaggio di errore simile a Non è possibile trovare il pacchetto {dotnet-package} o Non è stato possibile installare alcuni pacchetti, eseguire i comandi seguenti.

Nel set di comandi che segue sono presenti due segnaposto.

  • {dotnet-package}
    Questo rappresenta il pacchetto .NET che si sta installando, ad esempio aspnetcore-runtime-8.0. Viene usato nel comando sudo apt-get install seguente.

Prima di tutto, provare a ripulire l'elenco di pacchetti:

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

Quindi, riprovare a installare .NET. Se la soluzione non funziona, è possibile eseguire un'installazione manuale con i comandi seguenti:

Se si usa Ubuntu 23.10 o versione successiva, provare i comandi seguenti:

# 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}

Se si usa una versione di Ubuntu precedente alla 23.10, provare i comandi seguenti:

# 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}

Non è possibile recuperare il pacchetto

Durante l'installazione del pacchetto .NET può essere visualizzato un errore simile a Failed to fetch ... File has unexpected size ... Mirror sync in progress?. Questo errore può indicare che il feed di pacchetti per .NET è in fase di aggiornamento con versioni più recenti e che è necessario riprovare più tardi. Durante un aggiornamento, il feed di pacchetti dovrebbe restare non disponibile per più di 30 minuti. Se si riceve questo errore per più di 30 minuti, segnalare il problema all'indirizzo https://github.com/dotnet/core/issues.

Dipendenze

Quando si installa mediante uno strumento di gestione pacchetti, queste librerie vengono installate automaticamente. Tuttavia, se si installa manualmente .NET o si pubblica un'app autonoma, è necessario installare queste dipendenze per eseguire l'app:

  • libc6
  • libgcc1 (per 16.x e 18.x)
  • libgcc-s1 (per 20.x o versione successiva)
  • libgssapi-krb5-2
  • libicu55 (per 16.X)
  • libicu60 (per 18.x)
  • libicu66 (per 20.x)
  • libicu70 (per 22.04)
  • libicu71 (per 22.10)
  • libicu72 (per la versione 23.04 o successiva)
  • liblttng-ust1 (per 22.x o versione successiva)
  • libssl1.0.0 (per 16.x)
  • libssl1.1 (per 18.x, 20.x)
  • libssl3 (per 22.x o versione successiva)
  • libstdc++6
  • libunwind8 (per 22.x o versione successiva)
  • zlib1g

È possibile installare le dipendenze con il comando apt install. Il frammento di codice seguente dimostra l'installazione della libreria zlib1g:

sudo apt install zlib1g

Se l'app .NET usa l'assembly System.Drawing.Common, sarà necessario installare anche libgdiplus. Poiché System.Drawing.Common non è più supportato in Linux, funziona solo in .NET 6 e richiede di impostare l'opzione di configurazione del runtime System.Drawing.EnableUnixSupport.

È possibile installare una versione recente di libgdiplusaggiungendo il repository Mono al sistema.

Passaggi successivi