Información general sobre .NET en Ubuntu

En este artículo se describe cómo instalar .NET en Ubuntu. A partir de Ubuntu 22.04, la mayoría de las versiones compatibles de .NET están disponibles en la fuente de Ubuntu integrada. El repositorio de paquetes backports de Ubuntu .NET contiene las versiones de .NET compatibles restantes. Para obtener más información sobre las versiones disponibles, vea la sección Distribuciones admitidas.

Canonical ha tomado el control de publicar .NET en Ubuntu. A partir de Ubuntu 22.04, Microsoft ya no distribuye .NET para Ubuntu al repositorio de paquetes de Microsoft.

Advertencia

Se recomienda elegir entre fuentes de Ubuntu o Microsoft para los paquetes de .NET de origen. No mezcle paquetes .NET de varios repositorios de paquetes, ya que esto provoca problemas cuando las aplicaciones intentan resolver una versión específica de .NET.

Método Ventajas Desventajas
Administrador de paquetes
(fuente
de Ubuntu integrada)
  • Normalmente, la versión más reciente está disponible.
  • Las revisiones están disponibles inmediatamente.
  • Se incluyen las dependencias.
  • Eliminación sencilla.
  • Las versiones de .NET disponibles son compatibles con el período de soporte técnico de la versión específica de Ubuntu.
  • Compatibilidad con la plataforma IBM System Z para .NET 8 en Ubuntu 24.04.
  • No está disponible para Ubuntu 16.04, 18.04, 20.04.
  • Las versiones de .NET disponibles varían según la versión de Ubuntu.
  • Las versiones preliminares no están disponibles.
Administrador de paquetes
(paquetes anteriores de .NET
de Ubuntu integrada)
  • Contiene cualquier versión compatible, que no está incluida en la fuente integrada de Ubuntu.
  • Las revisiones están disponibles inmediatamente.
  • Se incluyen las dependencias.
  • Eliminación sencilla.
  • Compatible con la fuente de Ubuntu integrada.
  • No está disponible para Ubuntu 16.04, 18.04, 20.04.
  • Requiere el registro del repositorio de paquetes anteriores de Ubuntu .NET.
  • Las versiones preliminares no están disponibles.
Administrador de paquetes
(Fuente de Microsoft)
  • Las versiones admitidas siempre están disponibles.
  • Las revisiones están disponibles inmediatamente.
  • Se incluyen las dependencias.
  • Eliminación sencilla.
  • No está disponible para Ubuntu 24.04 y versiones posteriores.
  • Requiere registrar el repositorio de paquetes de Microsoft.
  • Las versiones preliminares no están disponibles.
  • Solo admite x64 Ubuntu.
Extracción manual o con script
  • Controle dónde está instalado .NET.
  • Las versiones preliminares están disponibles.
  • Instale manualmente las actualizaciones.
  • Instale manualmente las dependencias.
  • Eliminación manual.

Consideraciones al actualizar Ubuntu

¿Actualizar Ubuntu a 22.04 o posterior? Considere la posibilidad de desinstalar .NET primero.

Si ha usado un administrador de paquetes para instalar .NET desde el repositorio de paquetes de Microsoft, terminará con un problema de combinación de paquetes después de actualizar Ubuntu. Ahora que Canonical publica .NET en las fuentes de paquetes para Ubuntu 22.04 (y versiones posteriores), el administrador de paquetes no conocerá la versión de .NET instalada anteriormente. Los paquetes no se pueden actualizar a la versión más reciente de .NET. En primer lugar, desinstale y vuelva a instalarlos desde el [repositorio de paquetes de Ubuntu].

Decisión sobre cómo instalar .NET

Cuando la versión de Ubuntu admite .NET mediante la fuente integrada de Ubuntu o paquetes anteriores de .NET, Canonical proporciona compatibilidad con esas compilaciones de .NET y se pueden optimizar para otras cargas de trabajo. Microsoft proporciona compatibilidad con paquetes en la fuente del repositorio de paquetes de Microsoft.

Use las secciones siguientes para determinar cómo debe instalar .NET:

Uso Ubuntu 22.04 o una versión posterior y solo necesito .NET

Instale .NET mediante la fuente de Ubuntu. Para obtener más información, consulte las siguientes páginas:

Importante

Si usa el SDK de .NET 8 y Ubuntu 22.04, comprenda que las versiones del SDK que ofrece Canonical siempre están en la banda de características .1xx. Si quiere usar una versión de banda de características más reciente, utilice la fuente de Microsoft para instalar el SDK. Asegúrese de revisar la información del artículo Combinaciones de paquetes de .NET en Linux para comprender las implicaciones de cambiar entre fuentes de repositorio.

Si va a instalar el repositorio de Microsoft para usar otros paquetes de Microsoft, como powershell, mdatp o mssql, debe anular la prioridad de los paquetes .NET que proporciona el repositorio de Microsoft. Para obtener instrucciones sobre cómo anular la prioridad de los paquetes, vea Mi distribución de Linux proporciona paquetes .NET y quiero usarlos.

Uso una versión de Ubuntu anterior a la 22.04

Use las instrucciones de la página de Ubuntu específica de la versión.

Revise la sección Distribuciones admitidas para obtener más información sobre qué versiones de .NET son compatibles con la versión de Ubuntu. Si va a instalar una versión que no es compatible, vea Registro del repositorio de paquetes de Microsoft.

Uso otros paquetes de Microsoft, como powershell, mdatp o mssql

Si la versión de Ubuntu admite .NET mediante la fuente de Ubuntu, debe decidir qué fuente debe instalar .NET. La sección Distribuciones admitidas proporciona una tabla en la que se muestra qué versiones de .NET están disponibles en las fuentes de paquetes.

Si quiere obtener los paquetes de .NET desde la fuente de Ubuntu, debe anular la prioridad de los paquetes de .NET que proporciona el repositorio de Microsoft. Para obtener instrucciones sobre cómo anular la prioridad de los paquetes, vea Mi distribución de Linux proporciona paquetes .NET y quiero usarlos.

Quiero crear una aplicación de .NET

Use los mismos orígenes de paquetes para el SDK que usa para el runtime. Se recomienda instalar .NET a través de una fuente de Ubuntu. Sin embargo, si desea instalar .NET desde otro origen (por ejemplo, el repositorio de paquetes de Microsoft para acceder a bandas de características de SDK superiores), debe desinstalar .NET, configurar el administrador de paquetes para omitir los paquetes de .NET de la fuente de Ubuntu y reinstalarlos desde el otro origen.

Revise el resto de sugerencias en la sección Decisión sobre cómo instalar .NET.

Quiero ejecutar una aplicación de .NET en un escenario de contenedor, nube o integración continua

Si la versión de Ubuntu proporciona la versión de .NET que necesita, instálela desde la fuente de Ubuntu. De lo contrario, registre el repositorio de paquetes de Microsoft e instale .NET desde ese repositorio. Revise la información en la sección Distribuciones admitidas.

Si la versión de .NET que quiere no está disponible, pruebe a usar el script dotnet-install.

Mi distribución de Ubuntu no incluye la versión de .NET que quiero, o bien necesito una versión de .NET no compatible

Se recomienda usar APT y el repositorio de paquetes de Microsoft. Para obtener más información, vea la sección Registro e instalación con el repositorio de paquetes de Microsoft.

Quiero instalar una versión preliminar

Utilice una de las formas siguientes de instalar .NET:

No quiero usar APT

Si quiere una instalación automatizada, use el script de instalación de Linux.

Si quiere tener el control total sobre la experiencia de instalación de .NET, descargue un tarball e instale manualmente .NET. Para obtener más información, vea Instalación manual.

Uso una CPU basada en Arm

Si la versión de Ubuntu proporciona la versión de .NET que necesita, instálela desde la fuente integrada. Revise la información en la sección Distribuciones admitidas.

Si la versión de .NET que desea no está disponible, pruebe a usar una de las siguientes maneras de instalar .NET:

Uso la plataforma IBM System Z

A partir de .NET 8 en Ubuntu 24.04, Canonical admite .NET para la plataforma IBM System Z. Canonical busca ampliar la compatibilidad con otras versiones de .NET y Ubuntu.

Instale .NET a través de la fuente de Ubuntu integrada. Para obtener más información, consulte la página siguiente:

Distribuciones admitidas

En la tabla siguiente se muestra una lista de versiones de .NET actualmente compatibles y las versiones de Ubuntu en las que se admiten. Cada vínculo va a la página de versión específica de Ubuntu con instrucciones específicas sobre cómo instalar .NET para esa versión de Ubuntu.

Ubuntu Versiones de .NET compatibles Disponible en
fuente integrada de Ubuntu
Disponible en
Paquetes anteriores de .NET
Fuente de Ubuntu
Disponible en
La fuente de Microsoft
24.10 9.0, 8.0 9.0, 8.0 Ninguno Ninguno
24.04 (LTS) 9.0, 8.0, 6.0 8.0 9.0, 7.0, 6.0 Ninguno
22.04 (LTS) 9.0, 8.0, 6.0 8.0, 7.0, 6.0 9.0 8.0, 7.0, 6.0, 3.1
20.04 (LTS) 8.0, 6.0 None None 8.0, 7.0. 6.0, 5.0, 3.1, 2.1

Importante

.NET 9 está actualmente en versión preliminar.

Cuando una versión de Ubuntu alcanza el final de su período de soporte técnico, .NET ya no se admite con esa versión concreta de Ubuntu.

Canonical admite versiones de .NET en la fuente de Ubuntu integrada durante la vigencia de esa versión de Ubuntu, incluso más allá de la duración de soporte técnico proporcionada por Microsoft y proporciona compatibilidad de mejor esfuerzo para las versiones de .NET en el repositorio de paquetes anteriores de .NET, que no se extiende más allá de la duración de soporte técnico proporcionada por Microsoft.

Las versiones siguientes de .NET ya ❌ no se admiten:

  • .NET 7
  • .NET 6 (a partir del 12 de noviembre de 2024)
  • .NET 5
  • .NET Core 3.1
  • .NET Core 3.0
  • .NET Core 2.2
  • .NET Core 2.1
  • .NET Core 2.0

Repositorio de paquetes anteriores de Ubuntu .NET

El repositorio de paquetes anteriores de Ubuntu .NET proporciona versiones de .NET, que no están disponibles en la fuente integrada de Ubuntu. La sección Distribuciones admitidas proporciona una tabla en la que se muestra qué versiones de .NET están disponibles en las fuentes de paquetes. Canonical mantiene los paquetes incluidos en este repositorio de paquetes y proporciona el mejor soporte técnico posible, que no se extiende más allá de la duración de soporte técnico proporcionada por Microsoft o el período de soporte técnico de la versión de Ubuntu concreta.

Consulte la vista web del repositorio de paquetes anteriores de Ubuntu de .NET para obtener más detalles.

Registro del repositorio de paquetes anteriores de Ubuntu de .NET

Abra un terminal y ejecute el comando siguiente:

sudo add-apt-repository ppa:dotnet/backports

Sugerencia

No es necesario iniciar sesión apt update. El comando add-apt-repository lo hace de forma predeterminada.

Nota:

El repositorio de paquetes anteriores de Ubuntu de .NET es compatible con la fuente integrada de Ubuntu. Por lo tanto, no es necesario configurar el administrador de paquetes para omitir los paquetes de .NET en la fuente de Ubuntu integrada.

Anulación del registro del repositorio de paquetes de anteriores de Ubuntu de .NET

Si ya no desea consumir paquetes del repositorio de paquetes anteriores de Ubuntu de .NET, puede anular el registro. Abra un terminal y ejecute el comando siguiente:

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

Importante

Anular el registro del repositorio de paquetes anteriores de Ubuntu de .NET no desinstala ningún paquete.

No se encontró el comando add-apt-repository

La utilidad add-apt-repository(1) está preinstalada en la mayoría de las instalaciones de Ubuntu.

Si recibe un mensaje de error que indica que no se encontró el comando add-apt-repository, debe instalar el paquete software-properties-common, que proporciona este comando. Abra un terminal y ejecute los comandos siguientes:

sudo apt update
sudo apt install software-properties-common

Registro del repositorio de paquetes de Microsoft

Importante

Esto solo se aplica a las versiones de Ubuntu anteriores a la 24.04. A partir de Ubuntu 24.04, Microsoft ya no publica paquetes en el repositorio de paquetes de Microsoft. Use la tabla de distribuciones admitidas para determinar la mejor manera de instalar .NET.

El repositorio de paquetes de Microsoft contiene todas las versiones de .NET que, en la actualidad o anteriormente, son compatibles con la versión de Ubuntu. Si la versión de Ubuntu proporciona paquetes .NET, deberá anular la prioridad de los paquetes de Ubuntu y usar el repositorio de Microsoft. Para obtener instrucciones sobre cómo anular la prioridad de los paquetes, vea Necesito una versión de .NET que no proporciona mi distribución de Linux.

Importante

El repositorio de paquetes de Microsoft solo admite paquetes .NET que tienen como destino la arquitectura de x64. Otras arquitecturas, como Arm, deben instalar .NET por otros medios, como con el script del instalador o mediante la instalación manual.

Las versiones preliminares no están disponibles en el repositorio de paquetes de Microsoft. Para obtener más información, vea Instalación de versiones preliminares.

Precaución

Se recomienda usar solo un repositorio para administrar todas las instalaciones de .NET. Si ha instalado anteriormente .NET con el repositorio de Ubuntu, debe limpiar el sistema de paquetes de .NET y configurar el APT para omitir la fuente de Ubuntu. Para obtener más información sobre cómo hacerlo, vea Necesito una versión de .NET que no proporciona mi distribución de Linux.

La instalación con APT puede realizarse con unos pocos comandos. Antes de instalar .NET, ejecute los siguientes comandos para agregar la clave de la firma del paquete de Microsoft a la lista de claves de confianza y agregar el repositorio de paquetes.

Abra un terminal y ejecute los comandos siguientes:

# Get OS version info which adds the $ID and $VERSION_ID variables
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

Sugerencia

El script anterior se escribió para Ubuntu y es posible que no funcione si usa una distribución derivada, como Linux Mint. Es probable que las $ID variables y $VERSION_ID no se asignen los valores correctos, lo que hace que el URI del wget comando no sea válido. $ID corresponde a la distribución (por ejemplo, ubuntu), mientras que $VERSION_ID se asigna a la versión específica de Ubuntu para la que desea obtener paquetes, como 22.04 o 23.10.

Por ejemplo, en Ubuntu 22.04 $ID sería ubuntu y $VERSION_ID sería 22.04. La dirección URL tendría el siguiente aspecto:
https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb.

Puede usar un explorador web y navegar a https://packages.microsoft.com/config/ubuntu/ para ver qué versiones de Ubuntu están disponibles para usarlas como el valor $repo_version.

Instalación de .NET

Instale .NET a través del administrador de paquetes con el sudo apt install <package-name> comando . Reemplace <package-name> por el nombre del paquete .NET que quiere instalar. Por ejemplo, para instalar el SDK de .NET 8.0, use el comando sudo apt install dotnet-sdk-8.0. En la tabla siguiente se enumeran los paquetes de .NET admitidos actualmente (que pueden variar según la versión de Ubuntu):

Producto Tipo Paquete
8.0 ASP.NET Core Tiempo de ejecución aspnetcore-runtime-8.0
8.0 .NET Tiempo de ejecución dotnet-runtime-8.0
8.0 .NET SDK dotnet-sdk-8.0
6.0 ASP.NET Core Tiempo de ejecución aspnetcore-runtime-6.0
6.0 .NET Tiempo de ejecución dotnet-runtime-6.0
6.0 .NET SDK dotnet-sdk-6.0

Sugerencia

Si no va a crear aplicaciones .NET, instale el runtime de ASP.NET Core, ya que incluye el runtime de .NET y también admite aplicaciones de ASP.NET Core.

Algunas variables de entorno afectan a cómo se ejecuta .NET después de su instalación. Para obtener más información, vea SDK de .NET y variables de entorno de la CLI.

Desinstalación de .NET

Si ha instalado .NET mediante un administrador de paquetes, desinstálelo de la misma manera con el comando apt-get remove:

sudo apt-get remove dotnet-sdk-6.0

Para obtener más información, vea Desinstalación de .NET.

Instalación de versiones preliminares

Las versiones preliminares y candidatas para lanzamiento de .NET no están disponibles en los repositorios de paquetes. Puede instalar las versiones preliminares y versiones candidatas para lanzamiento de .NET de una de las formas siguientes:

Eliminación de versiones preliminares

Cuando se usa un administrador de paquetes para administrar la instalación de .NET, es posible que se produzca un conflicto si previamente se ha instalado una versión preliminar. El administrador de paquetes puede interpretar la versión que no es preliminar como una versión anterior de .NET. Para instalar la versión que no es preliminar, desinstale primero las versiones preliminares. Para obtener más información sobre cómo desinstalar .NET, vea Procedimiento para quitar el entorno de ejecución y el SDK de .NET.

Uso de APT para actualizar .NET

Si ha instalado .NET mediante un administrador de paquetes, puede actualizar el paquete con el comando apt upgrade. Por ejemplo, los comandos siguientes actualizan el paquete dotnet-sdk-8.0 con la versión más reciente:

sudo apt update
sudo apt upgrade dotnet-sdk-8.0

Sugerencia

Si ha actualizado la distribución de Linux desde la instalación de .NET, es posible que tenga que volver a configurar el repositorio de paquetes de Microsoft. Ejecute las instrucciones de instalación de la versión de distribución actual a fin de actualizar al repositorio de paquetes adecuado para las actualizaciones de .NET.

Solución de problemas

A partir de Ubuntu 22.04, es posible que se encuentre con una situación en la que parece que solo hay disponible una parte de .NET. Por ejemplo, ha instalado el runtime y el SDK, pero cuando ejecuta dotnet --info, en la lista el runtime solo aparece. Esta situación puede estar relacionada con el uso de dos orígenes de paquetes diferentes. Las fuentes de paquetes integradas de Ubuntu 22.04 y Ubuntu 22.10 incluyen algunas versiones de .NET, pero no todas, y es posible que también haya instalado .NET desde las fuentes de Microsoft. Para obtener más información sobre cómo solucionar este problema, vea Solución de problemas de errores de .NET relacionados con archivos que faltan en Linux.

Problemas de APT

En esta sección se proporciona información sobre los errores comunes que se pueden producir al usar APT para instalar .NET.

No se puede encontrar el paquete

Importante

El uso de un administrador de paquetes para instalar .NET desde la fuente de paquetes de Microsoft solo admite la arquitectura x64. Otras arquitecturas, como la Arm, no son compatibles con la Fuente de paquetes de Microsoft.

Para obtener más información sobre cómo instalar .NET sin un administrador de paquetes, consulte uno de los siguientes artículos:

No se ha podido encontrar \ No se han podido instalar algunos paquetes

Nota

Esta información solo se aplica cuando .NET está instalado desde la fuente de paquetes de Microsoft.

Si recibe un mensaje de error similar a No se puede encontrar el paquete {dotnet-package} o No se han podido instalar algunos paquetes, ejecute los comandos siguientes.

Hay dos marcadores de posición en el siguiente conjunto de comandos.

  • {dotnet-package}
    Representa el paquete de .NET que va a instalar, como aspnetcore-runtime-8.0. Se usa en el comando sudo apt-get install siguiente.

Primero, pruebe a purgar la lista de paquetes:

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

Después, intente volver a instalar .NET. Si eso no funciona, puede ejecutar una instalación manual con los comandos siguientes:

Si usa Ubuntu 23.10 o posterior, pruebe los siguientes comandos:

# Get OS version info which adds the $ID and $VERSION_ID variables
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}

Si usa una versión de Ubuntu anterior a la 23.10, pruebe los siguientes 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}

No se pudo capturar el elemento

Al instalar el paquete de .NET, puede ver un error similar a Failed to fetch ... File has unexpected size ... Mirror sync in progress?. Este error podría significar que la fuente de paquetes de .NET se está actualizando con versiones de paquetes más recientes y que debe volver a intentarlo más tarde. Durante una actualización, la falta de disponibilidad de la fuente de paquetes no debe ser superior a 30 minutos. Si recibe este error continuamente durante más de 30 minutos, abra una incidencia en https://github.com/dotnet/core/issues.

Dependencias

Al realizar la instalación con un administrador de paquetes, estas bibliotecas se instalan automáticamente. Pero si instala .NET manualmente o publica una aplicación independiente, debe instalar estas dependencias para ejecutar la aplicación:

  • ca-certificates
  • libc6
  • libgcc1 (para 16.x y 18.x)
  • libgcc-s1 (para 20.x o posterior)
  • libgssapi-krb5-2
  • libicu55 (para 16.x)
  • libicu60 (para 18.x)
  • libicu66 (para 20.x)
  • libicu70 (para 22.04)
  • libicu72 (para 23.10)
  • libicu74 (para la versión 24.04 o posterior)
  • liblttng-ust1 (para 22.x o posteriores)
  • libssl1.0.0 (para 16.x)
  • libssl1.1 (para 18.x, 20.x)
  • libssl3 (para 22.x o posteriores)
  • libstdc++6
  • libunwind8 (para 22.x o posteriores)
  • zlib1g

Las dependencias se pueden instalar con el comando apt install. En el fragmento de código siguiente se muestra cómo instalar la biblioteca zlib1g:

sudo apt install zlib1g

Si la aplicación de .NET usa el ensamblado System.Drawing.Common, también será necesario instalar libgdiplus. Dado que System.Drawing.Common ya no se admite en Linux, solo funciona en .NET 6 y requiere que se establezca el conmutador de configuración en tiempo de ejecución System.Drawing.EnableUnixSupport.

Puede instalar una versión reciente de libgdiplusagregando el repositorio Mono al sistema.

Pasos siguientes