Visão geral do .NET no Ubuntu

Este artigo descreve como instalar o .NET no Ubuntu. O repositório de pacotes da Microsoft contém todas as versões do .NET compatíveis com o Ubuntu agora ou anteriormente. Desde o Ubuntu 22.04, algumas versões do .NET estão disponíveis no feed de pacotes do Ubuntu. Para saber mais sobre as versões disponíveis, confira a seção Distribuições compatíveis.

Aviso

É recomendável que você escolha um único repositório para obter pacotes .NET. Não misture pacotes .NET de vários repositórios de pacotes, pois isso leva a problemas quando os aplicativos tentam resolver uma versão específica do .NET.

Método Vantagens Desvantagens
Gerenciador de pacotes
(Feed da Microsoft)
  • Versões compatíveis sempre disponíveis.
  • Os patches estão disponíveis imediatamente.
  • As dependências estão incluídas.
  • Remoção fácil.
  • Requer o registro do repositório de pacotes da Microsoft.
  • As versões prévias não estão disponíveis.
  • Dá suporte apenas ao Ubuntu x64.
Gerenciador de pacotes
(Feed do Ubuntu)
  • Normalmente, a versão mais recente está disponível.
  • Os patches estão disponíveis imediatamente.
  • As dependências estão incluídas.
  • Remoção fácil.
  • As versões do .NET disponíveis variam de acordo com a versão do Ubuntu.
  • As versões prévias não estão disponíveis.
  • Dá suporte apenas ao Ubuntu x64. (Com exceção do Ubuntu 23.04+, que também tem suporte para Arm64)
Extração manual/via script
  • Controle onde o .NET é instalado.
  • As versões prévias estão disponíveis.
  • Instale manualmente as atualizações.
  • Instale manualmente as dependências.
  • Remoção manual.

Decida como instalar o .NET

Quando sua versão do Ubuntu dá suporte ao .NET por meio do feed interno do Ubuntu, o suporte a essas compilações do .NET é fornecido pela Canonical e elas podem ser otimizadas para diferentes cargas de trabalho. A Microsoft dá suporte aos pacotes no feed do próprio repositório de pacotes.

Confira as seguintes seções para determinar como instalar o .NET:

Estou usando o Ubuntu 22.04 ou posterior e só preciso do .NET

Instale o .NET por meio do feed do Ubuntu. Para obter mais informações, consulte as seguintes páginas:

Importante

As versões do SDK do .NET oferecidas pela Canonical estão sempre na faixa de recursos da .1xx. Se você quiser usar uma versão mais recente da banda de versão, use o feed da Microsoft para instalar o SDK. Verifique se você examinou as informações no artigo mix ups de pacote do .NET no Linux para entender as implicações da comutação entre feeds de repositório.

Para instalar outros pacotes do repositório da Microsoft para usar outros pacotes da Microsoft, como powershell, mdatp ou mssql, você precisará despriorizar os pacotes do .NET fornecidos por ele. Para saber como fazer isso, confira Minha distribuição do Linux fornece pacotes do .NET e desejo usá-los.

Estou usando uma versão do Ubuntu anterior à 22.04

Siga as instruções na página específica da versão do Ubuntu.

Confira a seção Distribuições compatíveis para saber quais versões do .NET são compatíveis com sua versão do Ubuntu. Para instalar uma versão sem suporte, confira Registrar o repositório de pacotes da Microsoft.

Estou usando outros pacotes da Microsoft, como powershell, mdatp ou mssql

Se sua versão do Ubuntu der suporte ao .NET por meio do feed interno do Ubuntu, decida qual feed deve instalar o .NET. A seção Distribuições compatíveis fornece uma tabela que lista as versões do .NET disponíveis nos feeds de pacotes.

Para obter os pacotes do .NET no feed do Ubuntu, você precisará despriorizar os pacotes do .NET fornecidos pelo repositório da Microsoft. Para saber como fazer isso, confira Minha distribuição do Linux fornece pacotes do .NET e desejo usá-los.

Desejo criar um aplicativo .NET

Use para o SDK as mesmas origens de pacote usadas para o runtime. Por exemplo, ao usar o Ubuntu 22.04 e o .NET 6, mas não o .NET 7, é recomendado instalar o .NET por meio do feed interno do Ubuntu. Se, no entanto, você migrar para o .NET 7, que não é fornecido pela Canonical para Ubuntu 22.04, desinstale o .NET e reinstale-o com o repositório de pacotes da Microsoft. Para obter mais informações, confira Registro e instalação com o repositório de pacotes da Microsoft. Além disso, examine as outras sugestões na seção Decidir como instalar o .NET.

Desejo executar um aplicativo .NET em um cenário de contêiner, nuvem ou integração contínua

Se sua versão do Ubuntu fornecer a versão do .NET necessária, instale-a por meio do feed interno. Caso contrário, registre o repositório de pacotes da Microsoft e instale o .NET por meio dele. Confira as informações na seção Distribuições compatíveis.

Se a versão do .NET que você deseja não estiver disponível, tente usar o script dotnet-install.

Minha distribuição do Ubuntu não inclui a versão desejada do .NET ou preciso de uma versão dele que não tem mais suporte

É recomendado usar a APT e o repositório de pacotes da Microsoft. Para saber mais, confira a seção Realizar o registro e a instalação com o repositório de pacotes da Microsoft.

Desejo instalar uma versão prévia

Use uma das seguintes abordagens para instalar o .NET:

Não desejo usar a APT

Para obter uma instalação automatizada, use o script de instalação do Linux.

Para obter controle total sobre a experiência de instalação do .NET, baixe um tarball e instale o .NET manualmente. Para saber mais, confira Instalação manual.

Estou usando uma CPU baseada em Arm

Use uma das seguintes abordagens para instalar o .NET:

Distribuições com suporte

A tabela a seguir é uma lista de versões do .NET com suporte no momento e as versões do Ubuntu compatíveis com elas. Cada link leva à página específica da versão do Ubuntu com instruções específicas sobre como instalar o .NET nela.

Ubuntu Versões do .NET com suporte Disponível no feed do Ubuntu Disponível no feed da Microsoft
24.04 8.0 8.0 Nenhum
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 Nenhum 8.0, 7.0. 6.0, 5.0, 3.1, 2.1
18.04 (LTS) 7.0, 6.0 Nenhum 7.0. 6.0, 5.0, 3.1, 2.2, 2.1
16.04 (LTS) 6,0 Nenhum 6.0, 5.0, 3.1, 3.0, 2.2, 2.1, 2.0

Quando uma versão do Ubuntu ficar sem suporte, não haverá mais suporte dessa versão no .NET.

Não ❌ há mais suporte para as seguintes versões do .NET:

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

Registrar o repositório de pacotes da Microsoft

O repositório de pacotes da Microsoft contém todas as versões do .NET que eram ou atualmente são compatíveis com sua versão do Ubuntu. Se sua versão do Ubuntu fornecer pacotes do .NET, você precisará despriorizar os pacotes do Ubuntu e usar o repositório da Microsoft. Para saber como fazer isso, confira Preciso de uma versão do .NET que não é fornecida pela minha distribuição do Linux.

Importante

O repositório de pacotes da Microsoft só dá suporte a pacotes .NET direcionados à arquitetura x64. Em outras arquiteturas, como o Arm, o .NET precisa ser instalado por outros meios, como o script do instalador ou a instalação manual.

As versões prévias não estão disponíveis no repositório de pacotes da Microsoft. Para saber mais, confira Instalar versões prévias.

Cuidado

É recomendado usar somente um repositório para gerenciar todas as instalações do .NET. Se você já tiver instalado o .NET anteriormente com o repositório do Ubuntu, será necessário limpar o sistema de pacotes do .NET e configurar a APT para ignorar o feed do Ubuntu. Para saber como fazer isso, confira Preciso de uma versão do .NET que não é fornecida pela minha distribuição do Linux.

A instalação com a APT pode ser feita com alguns comandos. Antes de instalar o .NET, execute os comandos a seguir para adicionar a chave de assinatura de pacote da Microsoft à lista de chaves confiáveis e adicionar o repositório de pacotes.

Abra um terminal e execute os seguintes comandos:

# 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

Dica

O script anterior foi escrito para o Ubuntu e poderá não funcionar se você estiver usando uma distribuição derivada, como o Linux Mint. É provável que a variável $repo_version não receba o valor correto, tornando o URI do comando wget inválido. Essa variável é mapeada para a versão específica do Ubuntu para a qual você deseja obter pacotes, como 22.10 ou 23.04.

Você pode usar um navegador da Web e navegar para https://packages.microsoft.com/config/ubuntu/ para ver quais versões do Ubuntu estão disponíveis para uso como o valor $repo_version.

Instalar o .NET

Depois de registrar o repositório de pacotes da Microsoft ou se sua versão do feed padrão do Ubuntu der suporte ao pacote do .NET, será possível instalar o .NET por meio do gerenciador de pacotes com o comando sudo apt install <package-name>. Substitua <package-name> pelo nome do pacote do .NET que você deseja instalar. Por exemplo, para instalar o SDK do .NET 8.0, use o comando sudo apt install dotnet-sdk-8.0. A seguinte tabela lista os pacotes do .NET com suporte no momento:

Produto Type Pacote
8.0 ASP.NET Core Runtime aspnetcore-runtime-8.0
8.0 .NET Runtime dotnet-runtime-8.0
8.0 .NET . dotnet-sdk-8.0
7.0 ASP.NET Core Runtime aspnetcore-runtime-7.0
7.0 .NET Runtime dotnet-runtime-7.0
7.0 .NET . dotnet-sdk-7.0
6.0 ASP.NET Core Runtime aspnetcore-runtime-6.0
6.0 .NET Runtime dotnet-runtime-6.0
6.0 .NET . dotnet-sdk-6.0

Para instalar uma versão sem suporte do .NET, verifique a seção Distribuições compatíveis para ver se ela está disponível. Em seguida, substitua a versão do .NET que você deseja instalar. Por exemplo, para instalar o ASP.NET Core 2.1, use o nome de pacote aspnetcore-runtime-2.1.

Dica

Se você não estiver criando aplicativos .NET, instale o runtime do ASP.NET Core porque ele inclui o runtime do .NET e também dá suporte a aplicativos ASP.NET Core.

Algumas variáveis de ambiente afetam como o .NET é executado após a instalação. Para saber mais, confira Variáveis de ambiente da CLI e do SDK do .NET.

Desinstalar o .NET

Se você tiver instalado o .NET por meio de um gerenciador de pacotes, desinstale-o da mesma forma com o comando apt-get remove:

sudo apt-get remove dotnet-sdk-6.0

Para saber mais, confira Desinstalar o .NET.

Instalar versões prévias

As versões prévias e Release Candidate do .NET não estão disponíveis em repositórios de pacotes. É possível instalar versões prévias e Release Candidate do .NET das seguintes maneiras:

Remover versões prévias

Ao usar um gerenciador de pacotes para gerenciar a instalação do .NET, pode ocorrer um conflito quando já existe uma versão prévia instalada. O gerenciador de pacotes pode interpretar a versão que não é prévia como uma versão anterior do .NET. Para instalar a versão que não é prévia, desinstale as versões prévias. Para obter mais informações de como desinstalar o .NET, confira Como remover o SDK e o runtime do .NET.

Usar o APT para atualizar o .NET

Se você tiver instalado o .NET por meio de um gerenciador de pacotes, atualize o pacote com o comando apt upgrade. Por exemplo, os seguintes comandos atualizam o pacote dotnet-sdk-7.0 com a versão mais recente:

sudo apt update
sudo apt upgrade dotnet-sdk-7.0

Dica

Se você já atualizou a distribuição do Linux desde a instalação do .NET, talvez seja necessário reconfigurar o repositório de pacotes da Microsoft. Execute as instruções de instalação da versão de distribuição atual para atualizar para o repositório de pacote apropriado para atualizações do .NET.

Solução de problemas

A partir do Ubuntu 22.04, você pode encontrar uma situação em que parece que apenas uma parte do .NET está disponível. Por exemplo, se você tiver instalado o runtime e o SDK, mas, ao executar dotnet --info, somente o runtime está listado. Essa situação pode estar relacionada ao uso de duas fontes de pacote diferentes. Os feeds de pacotes internos do Ubuntu 22.04 e do Ubuntu 22.10 incluem algumas versões do .NET, mas não todas, e também é possível que você tenha instalado o .NET por meio dos feeds da Microsoft. Para saber como corrigir esse problema, confira Solucionar erros do .NET relacionados a arquivos ausentes no Linux.

Problemas de APT

Esta seção fornece informações sobre erros comuns que podem ocorrer quando o APT é usado para instalar o .NET.

Não é possível localizar o pacote

Importante

O uso de um gerenciador de pacotes para instalar o .NET por meio do feed de pacote da Microsoft só dá suporte à arquitetura x64. Outras arquiteturas, como o Arm, não são compatíveis com o feed do pacote da Microsoft.

Para obter mais informações de como instalar o .NET sem um gerenciador de pacotes, confira um dos seguintes artigos:

Não foi possível localizar\Alguns pacotes não puderam ser instalados

Observação

Essas informações só se aplicam quando o .NET é instalado no feed de pacotes da Microsoft.

Se você receber uma mensagem de erro semelhante a Não foi possível localizar o pacote {dotnet-package} ou Alguns pacotes não puderam ser instalados, execute os comandos a seguir.

Há dois espaços reservados no conjunto de comandos a seguir.

  • {dotnet-package}
    Isso representa o pacote do .NET que você está instalando, como aspnetcore-runtime-8.0. Isso é usado no comando sudo apt-get install a seguir.

Primeiro, tente limpar a lista de pacotes:

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

Depois, tente instalar o .NET novamente. Se isso não funcionar, você poderá executar uma instalação manual com os seguintes comandos:

Se você estiver usando o Debian 23.10 ou posterior, tente os seguintes comandos:

# 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 você estiver usando uma versão Debian anterior à 23.10, tente os seguintes comandos:

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

Falha na busca

Ao instalar o pacote do .NET, pode ocorrer um erro semelhante a Failed to fetch ... File has unexpected size ... Mirror sync in progress?. Esse erro pode significar que o feed de pacotes do .NET está sendo atualizado com versões mais recentes do pacote e que você deve tentar novamente mais tarde. Durante uma atualização, o feed de pacotes não deve ficar disponível por até 30 minutos. Se você continuar recebendo esse erro por mais de 30 minutos, registre um problema em https://github.com/dotnet/core/issues.

Dependências

Quando você faz a instalação com um gerenciador de pacotes, essas bibliotecas são instaladas automaticamente. No entanto, se você instalar o .NET manualmente ou publicar um aplicativo autossuficiente, instale as seguintes dependências para executar o aplicativo:

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

As dependências podem ser instaladas por meio do comando apt install. O snippet a seguir demonstra a instalação da biblioteca zlib1g:

sudo apt install zlib1g

Se o aplicativo .NET usar o assembly System.Drawing.Common, o libgdiplus também precisará ser instalado. Como System.Drawing.Common não tem mais suporte no Linux, isso só funciona no .NET 6 e requer a definição da alternância de configuração de runtime System.Drawing.EnableUnixSupport.

Você pode instalar uma versão recente de libgdiplus ao adicionar o repositório do Mono ao sistema.

Próximas etapas