Installare .NET SDK o .NET Runtime con Snap
Usare un pacchetto Snap per installare .NET SDK o .NET Runtime. Gli snap rappresentano un'ottima alternativa alla gestione pacchetti integrata nella distribuzione linux. Questo articolo descrive come installare .NET tramite Snap.
Uno snap è un bundle di un'app e le relative dipendenze che funzionano senza modifiche in molte distribuzioni Linux diverse. Gli snap sono individuabili e installabili dallo Snap Store. Per altre informazioni su Snap, vedere Introduzione a Snap.
Importante
I pacchetti snap non sono supportati in WSL2 in Windows. In alternativa, usare lo dotnet-install
script o la gestione pacchetti per la distribuzione WSL2 specifica. Non è consigliabile, ma è possibile provare ad abilitare lo snap con una soluzione alternativa non supportata dai forum snapcraft.
Attenzione
Le installazioni snap di .NET potrebbero avere problemi durante l'esecuzione di strumenti .NET. Se si vogliono usare gli strumenti .NET, è consigliabile installare .NET usando lo dotnet-install
script o lo strumento di gestione pacchetti per la distribuzione Linux specifica.
Si tratta di un problema noto che il dotnet watch
comando non funziona quando .NET viene installato tramite Snap.
Se si intende usare gli strumenti .NET o il dotnet watch
comando , è consigliabile installare .NET usando lo dotnet-install
script .
Versioni di .NET
Esistono due tipi di versioni supportate, il supporto a lungo termine (LTS) o il supporto per termini standard. La qualità di tutte le versioni è la stessa. L'unica differenza è la lunghezza del supporto. Le versioni LTS ottengono il supporto gratuito e le patch per 3 anni. Le versioni del servizio token di sicurezza ottengono il supporto gratuito e le patch per 18 mesi. Per altre informazioni, vedere Criteri di supporto di .NET.
La tabella seguente elenca lo stato di supporto di ogni versione di .NET (e .NET Core):
✔️ Supportati | ❌ Supportato |
---|---|
7 (STS) | 5 |
6 (LTS) | 3.1 |
3.0 | |
2.2 | |
2.1 | |
2,0 | |
1,1 | |
1,0 |
SDK o runtime
Installare l'SDK (che include il runtime) se si vogliono sviluppare app .NET. In alternativa, se è sufficiente eseguire le app, installare il runtime. Se si installa il runtime, è consigliabile installare il runtime di ASP.NET Core perché include sia .NET che runtime ASP.NET Core.
Usare i dotnet --list-sdks
comandi e dotnet --list-runtimes
per visualizzare le versioni installate. Per altre informazioni, vedere Come verificare che .NET sia già installato.
Installare l'SDK
I pacchetti snap per .NET SDK sono tutti pubblicati con lo stesso identificatore: dotnet-sdk
. È possibile installare una versione specifica dell'SDK specificando il canale. L'SDK include il runtime corrispondente. La tabella seguente elenca i canali:
Versione di .NET | Pacchetto snap o canale |
---|---|
7 (STS) | 7.0 o latest/stable |
6 (LTS) | 6.0 o lts/stable |
Usare il snap install
comando per installare un pacchetto snap .NET SDK. Usare il --channel
parametro per indicare la versione da installare. Se questo parametro viene omesso, latest/stable
viene utilizzato . In questo esempio 7.0
viene specificato:
sudo snap install dotnet-sdk --classic --channel=7.0
Registrare quindi il dotnet
comando per il sistema con il snap alias
comando :
sudo snap alias dotnet-sdk.dotnet dotnet
Questo comando è formattato come : sudo snap alias {package}.{command} {alias}
. È possibile scegliere qualsiasi {alias}
nome desiderato. Ad esempio, è possibile denominare il comando dopo la versione specifica installata da snap: sudo snap alias dotnet-sdk.dotnet dotnet70
. Quando si usa il comando dotnet70
, si richiamerà questa versione specifica di .NET. Tuttavia, la scelta di un alias diverso non è compatibile con la maggior parte delle esercitazioni ed esempi perché si prevede che venga usato un dotnet
comando.
Installare il runtime
I pacchetti snap per .NET Runtime vengono pubblicati in base al proprio identificatore del pacchetto. Nella tabella seguente sono elencati gli identificatori del pacchetto:
Versione di .NET | Pacchetto snap |
---|---|
7 (STS) | dotnet-runtime-70 |
6 (LTS) | dotnet-runtime-60 |
5 | dotnet-runtime-50 |
3.1 | dotnet-runtime-31 |
3.0 | dotnet-runtime-30 |
2.2 | dotnet-runtime-22 |
2.1 | dotnet-runtime-21 |
Usare il snap install
comando per installare un pacchetto snap di runtime .NET. In questo esempio viene installato .NET 7:
sudo snap install dotnet-runtime-70 --classic
Registrare quindi il dotnet
comando per il sistema con il snap alias
comando :
sudo snap alias dotnet-runtime-70.dotnet dotnet
Il comando è formattato come : sudo snap alias {package}.{command} {alias}
. È possibile scegliere qualsiasi {alias}
nome desiderato. Ad esempio, è possibile denominare il comando dopo la versione specifica installata da snap: sudo snap alias dotnet-runtime-70.dotnet dotnet70
. Quando si usa il comando dotnet70
, si richiamerà una versione specifica di .NET. Tuttavia, la scelta di un alias diverso non è compatibile con la maggior parte delle esercitazioni ed esempi perché si prevede che un dotnet
comando sia disponibile.
Esportare il percorso di installazione
La DOTNET_ROOT
variabile di ambiente viene spesso usata dagli strumenti per determinare dove è installato .NET. Quando .NET viene installato tramite Snap, questa variabile di ambiente non è configurata. È necessario configurare la variabile di ambiente DOTNET_ROOT nel profilo. Il percorso dello snap usa il formato seguente: /snap/{package}/current
. Ad esempio, se è stato installato lo dotnet-sdk
snap, usare il comando seguente per impostare la variabile di ambiente su dove si trova .NET:
export DOTNET_ROOT=/snap/dotnet-sdk/current
Suggerimento
Il comando precedente export
imposta solo la variabile di ambiente per la sessione del terminale in cui è stata eseguita.
È possibile modificare il profilo della shell per aggiungere in modo permanente i comandi. Sono disponibili diverse shell per Linux e ognuna ha un profilo diverso. Ad esempio:
- Shell Bash: ~/.bash_profile, ~/.bashrc
- Shell Korn: ~/.kshrc o .profile
- Shell Z: ~/.zshrc o .zprofile
Modificare il file di origine appropriato per la shell e aggiungere export DOTNET_ROOT=/snap/dotnet-sdk/current
.
Errori del certificato TLS/SSL
Quando .NET è installato tramite Snap, è possibile che in alcune distribuzioni i certificati TLS/SSL .NET non vengano trovati e si potrebbe ricevere un errore durante restore
:
Processing post-creation actions...
Running 'dotnet restore' on /home/myhome/test/test.csproj...
Restoring packages for /home/myhome/test/test.csproj...
/snap/dotnet-sdk/27/sdk/2.2.103/NuGet.targets(114,5): error : Unable to load the service index for source https://api.nuget.org/v3/index.json. [/home/myhome/test/test.csproj]
/snap/dotnet-sdk/27/sdk/2.2.103/NuGet.targets(114,5): error : The SSL connection could not be established, see inner exception. [/home/myhome/test/test.csproj]
/snap/dotnet-sdk/27/sdk/2.2.103/NuGet.targets(114,5): error : The remote certificate is invalid according to the validation procedure. [/home/myhome/test/test.csproj]
Per risolvere questo problema, impostare alcune variabili di ambiente:
export SSL_CERT_FILE=[path-to-certificate-file]
export SSL_CERT_DIR=/dev/null
Il percorso del certificato varia in base alla distribuzione. Ecco le posizioni per le distribuzioni in cui è stato riscontrato il problema.
Distribuzione | Posizione |
---|---|
Fedora | /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem |
OpenSUSE | /etc/ssl/ca-bundle.pem |
Solus | /etc/ssl/certs/ca-certificates.crt |
Problemi che risolvono dotnet
È comune per altre app, ad esempio l'estensione OmniSharp per Visual Studio Code, per provare a risolvere il percorso di .NET SDK. In genere, questa operazione viene eseguita individuando dove si trova l'eseguibile dotnet
. Un SDK .NET installato con snap può confondere queste app. Quando queste app non possono risolvere .NET SDK, verrà visualizzato un errore simile a uno dei messaggi seguenti:
- Impossibile trovare l'SDK 'Microsoft.NET.Sdk' specificato
- Impossibile trovare l'SDK 'Microsoft.NET.Sdk.Web' specificato
- Impossibile trovare l'SDK 'Microsoft.NET.Sdk.Razor' specificato
Per risolvere questo problema, collegare il file eseguibile di snap dotnet
alla posizione in cui il programma sta cercando. Due percorsi comuni che il dotnet
comando sta cercando sono /usr/local/bin/dotnet
e /usr/share/dotnet
. Ad esempio, per collegare il pacchetto di snap .NET SDK corrente, usare il comando seguente:
ln -s /snap/dotnet-sdk/current/dotnet /usr/local/bin/dotnet
È anche possibile esaminare questi problemi di GitHub per informazioni su questi problemi:
- Il resolver SDK non funziona con le installazioni di snap di SDK in Linux
- Non è stato possibile trovare gli SDK .NET installati
Alias dotnet
È possibile che, se è stato creato l'alias dotnet
per .NET installato, si avrà un conflitto. Usare il snap unalias dotnet
comando per rimuoverlo e quindi aggiungere un alias diverso se si vuole.