Panoramica di .NET in Ubuntu

Questo articolo descrive come installare .NET in Ubuntu. A partire da Ubuntu 22.04, la maggior parte delle versioni supportate di .NET è disponibile nel feed Ubuntu predefinito. Il repository di pacchetti backport .NET di Ubuntu contiene le versioni rimanenti di .NET supportate, che non sono disponibili nel feed di pacchetti Ubuntu predefinito per queste versioni di Ubuntu. Per altre informazioni sulle versioni disponibili, vedere la sezione Distribuzioni supportate. Inoltre, per Ubuntu 23.10 e versioni precedenti, il repository di pacchetti Microsoft contiene tutte le versioni di .NET attualmente o precedentemente supportate.

Avviso

È consigliabile scegliere tra i feed Ubuntu o Microsoft per l'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
Ubuntu predefinito)
  • In genere è disponibile l'ultima versione.
  • Le patch sono disponibili immediatamente.
  • Le dipendenze sono incluse.
  • La rimozione è facile.
  • Le versioni di .NET disponibili sono supportate per il periodo previsto dalla versione di Ubuntu interessata.
  • Supporto per la piattaforma IBM System Z per .NET 8 in Ubuntu 24.04.
  • Non disponibile per Ubuntu 16.04, 18.04, 20.04.
  • Le versioni di .NET disponibili variano in base alla versione di Ubuntu.
  • Le versioni di anteprima non sono disponibili.
Gestione pacchetti
(feed Ubuntu
di backport .NET)
  • Contiene qualsiasi versione supportata, che non è contenuta nel feed Ubuntu predefinito.
  • Le patch sono disponibili immediatamente.
  • Le dipendenze sono incluse.
  • La rimozione è facile.
  • Compatibile con il feed Ubuntu predefinito.
  • Non disponibile per Ubuntu 16.04, 18.04, 20.04.
  • Richiede la registrazione del repository di pacchetti backport .NET di Ubuntu.
  • Le versioni di anteprima non sono disponibili.
Gestione pacchetti
(feed Microsoft)
  • Le versioni supportate sono sempre disponibili.
  • Le patch sono disponibili immediatamente.
  • Le dipendenze sono incluse.
  • La rimozione è facile.
  • Non disponibile per Ubuntu 24.04+.
  • Richiede la registrazione del repository di pacchetti Microsoft.
  • Le versioni di anteprima non sono disponibili.
  • Supporta solo Ubuntu x64.
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 o di backport .NET, il supporto per tali 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 un feed Ubuntu, è necessario decidere quale feed deve 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 da un 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. È consigliabile installare .NET tramite un feed Ubuntu. Se tuttavia si vuole installare .NET a partire da un'altra origine (ad esempio il repository di pacchetti Microsoft per accedere a bande di funzionalità SDK di livello superiore), è necessario disinstallare .NET, configurare Gestione pacchetti per ignorare i pacchetti .NET del feed Ubuntu e reinstallarlo dall’altra origine.

Esaminare 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 da un feed Ubuntu. 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

Se la versione di Ubuntu in uso fornisce la versione di .NET necessaria, installarla dal feed predefinito. Esaminare le informazioni nella sezione Distribuzioni supportate.

Se la versione di .NET che si vuole non è disponibile, provare a usare uno dei metodi seguenti per installare .NET:

Uso la piattaforma IBM System Z

A partire da .NET 8 in Ubuntu 24.04, Canonical supporta .NET per la piattaforma IBM System Z. Canonical è al lavoro per estendere il supporto ad altre versioni di .NET e Ubuntu.

Installare .NET tramite il feed Ubuntu predefinito. Per altre informazioni, vedere la pagina seguente:

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 in
Feed Ubuntu predefinito
Disponibile nel
feed Ubuntu
di backport .NET
Disponibile nel
feed Microsoft
24.04 (LTS) 8.0, 7.0, 6.0 8.0 7.0, 6.0 None
23.10 8.0, 7.0, 6.0 8.0, 7.0, 6.0 None 8.0, 7.0, 6.0
22.04 (LTS) 8.0, 7.0, 6.0 8.0, 7.0, 6.0 None 8.0, 7.0, 6.0, 3.1
20.04 (LTS) 8.0, 7.0, 6.0 None None 8.0, 7.0. 6.0, 5.0, 3.1, 2.1
18.04 (LTS) 7.0, 6.0 None None 7.0. 6.0, 5.0, 3.1, 2.2, 2.1
16.04 (LTS) 6.0 None None 6.0, 5.0, 3.1, 3.0, 2.2, 2.1, 2.0

Quando una versione di Ubuntu raggiunge il termine del suo periodo di supporto, .NET non è più supportato da quella versione di Ubuntu specifica.

Canonical supporta le versioni .NET nel feed Ubuntu predefinito per tutta la durata della versione Ubuntu, persino oltre la durata del supporto fornito da Microsoft, e offre la migliore assistenza possibile per le versioni .NET nel repository dei pacchetti di backport .NET, che non si estende oltre la durata del supporto fornito da Microsoft.

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

Repository dei pacchetti di backport Ubuntu .NET

Il repository dei pacchetti di backport Ubuntu .NET include versioni di .NET, che non sono disponibili nel feed Ubuntu predefinito. La sezione Distribuzioni supportate contiene una tabella che elenca le versioni di .NET disponibili nel feed di pacchetti. Canonical gestisce i pacchetti contenuti in questo repository di pacchetti e offre la migliore assistenza possibile, che non si estende oltre la durata del supporto fornito da Microsoft o il periodo di supporto della versione di Ubuntu interessata.

Per informazioni dettagliate, vedere la webview del repository dei pacchetti di backport Ubuntu .NET.

Registrare il repository dei pacchetti di backport Ubuntu .NET

Aprire un terminale ed eseguire il comando seguente:

sudo add-apt-repository ppa:dotnet/backports

Suggerimento

Non è necessario chiamare apt update. Il comando add-apt-repository esegue questa operazione per impostazione predefinita.

Nota

Il repository dei pacchetti di backport Ubuntu .NET è compatibile con il feed Ubuntu predefinito. Non è quindi necessario configurare la gestione pacchetti per ignorare i pacchetti .NET nel feed Ubuntu predefinito.

Annullare la registrazione del repository dei pacchetti di backport Ubuntu .NET

Se non si vuole più usare i pacchetti del repository di pacchetti di backport di Ubuntu .NET, è possibile annullare la registrazione. Aprire un terminale ed eseguire il comando seguente:

sudo add-apt-repository --remove ppa:dotnet/backports

Importante

L'annullamento della registrazione del repository dei pacchetti di backport Ubuntu .NET non disinstalla alcun pacchetto.

Comando add-apt-repository non trovato

L'utilità add-apt-repository(1) è preinstallata nella maggior parte delle installazioni di Ubuntu.

Se si riceve un messaggio di errore in cui viene segnalato che il comando add-apt-repository non è stato trovato, è necessario installare il pacchetto software-properties-common, che fornisce questo comando. Aprire un terminale ed eseguire i comandi seguenti:

sudo apt update
sudo apt install software-properties-common

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 dei 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 i 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.04 o 23.10.

È 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 che si è registrato il repository dei pacchetti Microsoft, o nel caso in cui i feed Ubuntu supportino il pacchetto .NET per la propria versione di Ubuntu, è possibile installare .NET tramite la 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 8.0, usare il nome del pacchetto aspnetcore-runtime-8.0.

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:

  • ca-certificates
  • 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)
  • libicu72 (per la versione 23.10)
  • libicu74 (per la versione 24.04 o successiva)
  • liblttng-ust1 (per la versione 22.x o successiva)
  • libssl1.0.0 (per 16.x)
  • libssl1.1 (per 18.x, 20.x)
  • libssl3 (per la versione 22.x o successiva)
  • libstdc++6
  • libunwind8 (per la versione 22.x o 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