Instalar o SDK do .NET ou o Runtime do .NET com o Snap
Utilize um pacote Snap para instalar o SDK .NET ou o .NET Runtime. Os snaps são uma ótima alternativa ao gestor de pacotes incorporado na sua distribuição do Linux. Este artigo descreve como instalar o .NET através do Snap.
Um snap é um pacote de uma aplicação e respetivas dependências que funciona sem modificação em muitas distribuições diferentes do Linux. Os snaps são detetáveis e instaláveis a partir do Snap Store. Para obter mais informações sobre o Snap, consulte Introdução ao Snap.
Importante
Os pacotes snap não são suportados no WSL2 no Windows. Como alternativa, utilize o dotnet-install
script ou o gestor de pacotes para a distribuição WSL2 específica. Não é recomendado, mas pode tentar ativar o ajuste com uma solução não suportada nos fóruns do snapcraft.
Atenção
As instalações snap do .NET podem ter problemas ao executar ferramentas .NET. Se quiser utilizar ferramentas .NET, recomendamos que instale o .NET com o dotnet-install
script ou o gestor de pacotes para a distribuição específica do Linux.
É um problema conhecido que o comando não funciona quando o dotnet watch
.NET é instalado através do Snap.
Se quiser utilizar as ferramentas .NET ou o dotnet watch
comando , recomendamos que instale o .NET com o dotnet-install
script.
Versões do .NET
Existem dois tipos de versões suportadas, versões de Suporte de Longo Prazo (LTS) ou Suporte de Termos Standard (STS). A qualidade de todas as versões é a mesma. A única diferença é a duração do suporte. As versões LTS obtêm suporte e patches gratuitos durante 3 anos. As versões STS obtêm suporte e patches gratuitos durante 18 meses. Para obter mais informações, veja Política de Suporte do .NET.
A tabela seguinte lista o estado de suporte de cada versão do .NET (e .NET Core):
✔️ Suportado | ❌ Não suportado |
---|---|
7 (STS) | 5 |
6 (LTS) | 3,1 |
3.0 | |
2,2 | |
2.1 | |
2.0 | |
1.1 | |
1.0 |
SDK ou Runtime
Instale o SDK (que inclui o runtime) se quiser desenvolver aplicações .NET. Em alternativa, se apenas precisar de executar aplicações, instale o Runtime. Se estiver a instalar o Runtime, sugerimos que instale o ASP.NET Core Runtime, uma vez que inclui runtimes .NET e ASP.NET Core.
Utilize os dotnet --list-sdks
comandos e dotnet --list-runtimes
para ver que versões estão instaladas. Para obter mais informações, veja Como verificar se o .NET já está instalado.
Instalar o SDK
Os pacotes snap para o SDK .NET são todos publicados no mesmo identificador: dotnet-sdk
. Uma versão específica do SDK pode ser instalada ao especificar o canal. O SDK inclui o runtime correspondente. A tabela seguinte lista os canais:
Versão do .NET | Ajustar pacote ou canal |
---|---|
7 (STS) | 7.0 ou latest/stable |
6 (LTS) | 6.0 ou lts/stable |
Utilize o snap install
comando para instalar um pacote snap do SDK .NET. Utilize o --channel
parâmetro para indicar a versão a instalar. Se este parâmetro for omitido, latest/stable
será utilizado. Neste exemplo, 7.0
é especificado:
sudo snap install dotnet-sdk --classic --channel=7.0
Em seguida, registe o dotnet
comando do sistema com o snap alias
comando :
sudo snap alias dotnet-sdk.dotnet dotnet
Este comando está formatado como: sudo snap alias {package}.{command} {alias}
. Pode escolher qualquer {alias}
nome que pretender. Por exemplo, pode atribuir um nome ao comando após a versão específica instalada pelo snap: sudo snap alias dotnet-sdk.dotnet dotnet70
. Quando utilizar o comando dotnet70
, irá invocar esta versão específica do .NET. Contudo, escolher um alias diferente é incompatível com a maioria dos tutoriais e exemplos, uma vez que esperam que seja utilizado um dotnet
comando.
Instalar o runtime
Os pacotes snap para o .NET Runtime são publicados no seu próprio identificador de pacote. A tabela seguinte lista os identificadores do pacote:
Versão do .NET | Ajustar pacote |
---|---|
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 |
Utilize o snap install
comando para instalar um pacote snap .NET Runtime. Neste exemplo, o .NET 7 está instalado:
sudo snap install dotnet-runtime-70 --classic
Em seguida, registe o dotnet
comando do sistema com o snap alias
comando :
sudo snap alias dotnet-runtime-70.dotnet dotnet
O comando está formatado como: sudo snap alias {package}.{command} {alias}
. Pode escolher qualquer {alias}
nome que pretender. Por exemplo, pode atribuir um nome ao comando após a versão específica instalada pelo snap: sudo snap alias dotnet-runtime-70.dotnet dotnet70
. Quando utilizar o comando dotnet70
, irá invocar uma versão específica do .NET. Contudo, escolher um alias diferente é incompatível com a maioria dos tutoriais e exemplos, uma vez que esperam que um dotnet
comando esteja disponível.
Exportar a localização de instalação
A DOTNET_ROOT
variável de ambiente é frequentemente utilizada por ferramentas para determinar onde o .NET está instalado. Quando o .NET é instalado através do Snap, esta variável de ambiente não está configurada. Deve configurar a variável de ambiente DOTNET_ROOT no seu perfil. O caminho para o ajuste utiliza o seguinte formato: /snap/{package}/current
. Por exemplo, se tiver instalado o dotnet-sdk
snap, utilize o seguinte comando para definir a variável de ambiente para onde o .NET está localizado:
export DOTNET_ROOT=/snap/dotnet-sdk/current
Dica
O comando anterior export
define apenas a variável de ambiente para a sessão de terminal em que foi executada.
Pode editar o seu perfil de shell para adicionar permanentemente os comandos. Existem várias shells diferentes disponíveis para Linux e cada uma tem um perfil diferente. Por exemplo:
- Shell do Bash: ~/.bash_profile, ~/.bashrc
- Shell Korn: ~/.kshrc ou .profile
- Z Shell: ~/.zshrc ou .zprofile
Edite o ficheiro de origem adequado para a shell e adicione export DOTNET_ROOT=/snap/dotnet-sdk/current
.
Erros de Certificado TLS/SSL
Quando o .NET é instalado através do Snap, é possível que em algumas distribuições os certificados .NET TLS/SSL não possam ser encontrados e poderá receber um erro 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]
Para resolver este problema, defina algumas variáveis de ambiente:
export SSL_CERT_FILE=[path-to-certificate-file]
export SSL_CERT_DIR=/dev/null
A localização do certificado irá variar consoante a distribuição. Eis as localizações das distribuições onde o problema foi experimentado.
Distribuição | Localização |
---|---|
Fedora | /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem |
OpenSUSE | /etc/ssl/ca-bundle.pem |
Solus | /etc/ssl/certs/ca-certificates.crt |
Problemas ao resolver o dotnet
É comum que outras aplicações, como a extensão OmniSharp do Visual Studio Code, tentem resolver a localização do SDK .NET. Normalmente, isto é feito ao descobrir onde está localizado o dotnet
executável. Um SDK .NET instalado pelo snap pode confundir estas aplicações. Quando estas aplicações não conseguirem resolver o SDK .NET, verá um erro semelhante a uma das seguintes mensagens:
- Não foi possível localizar o SDK "Microsoft.NET.Sdk" especificado
- Não foi possível localizar o SDK "Microsoft.NET.Sdk.Web" especificado
- Não foi possível localizar o SDK "Microsoft.NET.Sdk.Razor" especificado
Para corrigir este problema, symlink o snap dotnet
executável para a localização que o programa procura. Dois caminhos comuns que o dotnet
comando procura são /usr/local/bin/dotnet
e /usr/share/dotnet
. Por exemplo, para ligar o pacote de snap do SDK .NET atual, utilize o seguinte comando:
ln -s /snap/dotnet-sdk/current/dotnet /usr/local/bin/dotnet
Também pode rever estes problemas do GitHub para obter informações sobre estes problemas:
- A resolução do SDK não funciona com instalações snap do SDK no Linux
- Não foi possível encontrar SDKs .NET instalados
O alias dotnet
É possível que, se tiver criado o alias dotnet
para o .NET instalado pelo snap, terá um conflito. Utilize o snap unalias dotnet
comando para removê-lo e, em seguida, adicione um alias diferente, se quiser.