Instalar o SDK do .NET com o Snap
Este artigo descreve como instalar o pacote Snap do SDK do .NET. Os pacotes snap do SDK do .NET são fornecidos e mantidos pela Canonical. Os snaps são uma ótima alternativa para o gerenciador de pacotes integrado à distribuição do Linux.
Um snap é um pacote de um aplicativo e as dependências dele que funcionam em muitas distribuições diferentes do Linux. Os snaps são detectáveis e instaláveis no Snap Store. Para saber mais sobre o Snap, consulte o Tour de Início Rápido.
Cuidado
Instalações de ajuste do .NET podem ter problemas ao executar as ferramentas do .NET. Se você quiser usar ferramentas do .NET, recomendamos que instale o .NET usando o dotnet-install
script ou o gerenciador de pacotes para a distribuição específica do Linux.
É um problema conhecido que o comando dotnet watch
não funciona quando o .NET é instalado por meio do Snap.
Se você pretende usar as ferramentas do .NET ou o comando dotnet watch
, recomendamos que você instale o .NET usando o dotnet-install
script.
Pré-requisitos
- Distribuição do Linux que dá suporte a snap.
snapd
o daemon snap.
Sua distribuição do Linux já pode incluir snap. Tente executar snap
em um terminal para ver se o comando funciona. Para obter uma lista de distribuições do Linux com suporte e instruções sobre como instalar o snap, consulte Instalar o snapd
.
Versões do .NET
A Microsoft publica o .NET em duas políticas de suporte diferentes, LTS (Suporte de Longo Prazo) e STS (Suporte de Prazo Padrão). A qualidade de todas as versões é a mesma. A única diferença é a duração do suporte. As versões LTS recebem suporte e patches gratuitos por três anos. As versões STS recebem suporte e patches gratuitos por 18 meses. Para obter mais informações, confira a Política de Suporte do .NET.
As versões do .NET que têm suporte atualmente pela Microsoft são:
- 9.0 (STS) — O suporte termina em maio de 2026.
- 8.0 (LTS)— O suporte termina em 10 de novembro de 2026.
Outras entidades que criam e liberam o .NET podem introduzir políticas de suporte diferentes. Certifique-se de verificar com elas para entender como o .NET possui suporte.
1. Instalar o SDK
Importante
O .NET 9 foi lançado em 12 de novembro de 2024. Pode levar algum tempo para que os pacotes apareçam nos feeds do gerenciador de pacotes ou para que sua distribuição Linux específica os inclua.
Os pacotes Snap para o SDK do .NET são todos publicados no mesmo identificador: dotnet-sdk
. Uma versão específica do SDK pode ser instalada especificando o canal. O SDK inclui o runtime do ASP.NET Core e do .NET, com versão para o SDK.
Dica
A página de pacotes do SDK Snapcraft .NET inclui instruções específicas para distribuição sobre como instalar o Snapcraft e o .NET.
Abra um terminal.
Use
snap install
para instalar o pacote Snap do SDK do .NET. Por exemplo, o comando a seguir instala o canallatest/stable
, que é o padrão.sudo snap install dotnet-sdk --classic
- O
--classic
parâmetro é obrigatório. - Use o parâmetro
--channel
para especificar qual versão instalar. Se esse parâmetro for omitido,latest/stable
será usado. Por exemplo,--channel 9.0/stable
instala o SDK do .NET 9.0.
- O
O alias do Snap dotnet
é criado automaticamente e mapeado para o comando dotnet
do pacote Snap.
A tabela a seguir lista os canais de pacotes que você pode instalar:
Versão do .NET | Canal do pacote Snap |
---|---|
9 (STS) | 9.0/stable latest/stable |
8 (LTS) | 8.0/stable lts/stable |
7 (STS) | 7.0/stable (sem suporte) |
6 (LTS) | 6.0/stable (sem suporte) |
5 | 5.0/stable (sem suporte) |
3.1 | 3.1/stable (sem suporte) |
2.1 | 2.1/stable (sem suporte) |
2. Exportar o local de instalação
A variável de ambiente DOTNET_ROOT
geralmente é usada por ferramentas para determinar onde o .NET está instalado. Quando o .NET é instalado por meio do Snap, essa variável de ambiente não é configurada. Você deve configurar a variável de ambiente DOTNET_ROOT em seu perfil. O caminho para o Snap usa o seguinte formato: /snap/{package}/current
.
export DOTNET_ROOT=/snap/dotnet-sdk/current
Exportar a variável de ambiente permanentemente
O comando export
anterior define apenas a variável de ambiente da sessão de terminal em que foi executada.
Você pode editar seu perfil de shell para adicionar permanentemente os comandos. Há vários shells diferentes disponíveis para Linux, cada qual com um perfil distinto. Por exemplo:
- Bash Shell: ~/.bash_profile, ~/.bashrc
- Korn Shell: ~/.kshrc ou .profile
- Z Shell: _~/.zshrc* or .zprofile
Edite o arquivo de origem apropriado para o seu shell e adicione export DOTNET_ROOT=/snap/dotnet-sdk/current
.
3. Usar a CLI do .NET
Abra um terminal e digite dotnet
.
dotnet
É exibida a saída a seguir:
Usage: dotnet [options]
Usage: dotnet [path-to-application]
Options:
-h|--help Display help.
--info Display .NET information.
--list-sdks Display the installed SDKs.
--list-runtimes Display the installed runtimes.
path-to-application:
The path to an application .dll file to execute.
Para saber como usar a CLI do .NET, confira Visão geral da CLI do .NET.
Solução de problemas
- O comando do terminal dotnet não funciona
- Não é possível instalar o Snap no WSL2
- Não é possível resolver o comando dotnet ou o SDK
- Erros de certificado TLS/SSL
O comando do terminal dotnet não funciona
Os pacotes Snap podem mapear um alias para um comando fornecido pelo pacote. Por padrão, os pacotes Snap do SDK do .NET criam um alias para o comando dotnet
. Se o alias não foi criado ou foi removido anteriormente, o comando a seguir mostra como mapeá-lo:
sudo snap alias dotnet-sdk.dotnet dotnet
Não é possível instalar o Snap no WSL2
systemd
deve ser habilitado na instância do WSL2 antes que o Snap possa ser instalado.
Abra
/etc/wsl.conf
em um editor de texto de sua escolha.Cole na seguinte configuração:
[boot] systemd=true
Salve o arquivo e reinicie a instância do WSL2 por meio do PowerShell. Use o comando
wsl.exe --shutdown
.
Não é possível resolver o comando dotnet ou o SDK
É comum que outros aplicativos, como um IDE de código ou uma extensão no Visual Studio Code, tentem resolver o local do SDK do .NET. Normalmente, a descoberta é feita verificando a variável de ambiente DOTNET_ROOT
ou descobrindo onde o executável dotnet
está localizado. Um SDK do .NET instalado pelo Snap pode confundir esses aplicativos. Quando esses aplicativos não conseguem resolver o SDK do .NET, um erro semelhante a uma das seguintes mensagens é exibido:
- Não foi possível encontrar o SDK "Microsoft.NET.Sdk" especificado
- Não foi possível encontrar o SDK "Microsoft.NET.Sdk.Web" especificado
- Não foi possível encontrar o SDK "Microsoft.NET.Sdk.Razor" especificado
Experimente as seguintes etapas para corrigir o problema:
Certifique-se de exportar permanentemente a variável de ambiente
DOTNET_ROOT
.Tente vincular o executável
dotnet
do Snap ao local que o programa está procurando.Dois caminhos comuns que o comando
dotnet
está procurando são:/usr/local/bin/dotnet
/usr/share/dotnet
Use o seguinte comando para criar um link simbólico para o pacote Snap:
ln -s /snap/dotnet-sdk/current/dotnet /usr/local/bin/dotnet
Erros de certificado TLS/SSL
Quando o .NET é instalado por meio do Snap, é possível que, em algumas distribuições, os certificados TLS/SSL do .NET não sejam encontrados e você possa 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 esse problema, defina algumas variáveis de ambiente:
export SSL_CERT_FILE=[path-to-certificate-file]
export SSL_CERT_DIR=/dev/null
O local do certificado varia de acordo com a distribuição. Estes estão os locais para as distribuições em que o problema foi observado:
Distribuição | Location |
---|---|
Fedora | /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem |
OpenSUSE | /etc/ssl/ca-bundle.pem |
Solus | /etc/ssl/certs/ca-certificates.crt |