Instalación del SDK y el entorno de ejecución de .NET en Ubuntu
En este artículo se describe cómo instalar .NET en Ubuntu. El repositorio de paquetes de Microsoft contiene todas las versiones de .NET que se admiten en la actualidad o anteriormente en Ubuntu. A partir de Ubuntu 22.04, algunas versiones de .NET están disponibles en la fuente de paquetes de Ubuntu. Para obtener más información sobre las versiones disponibles, vea la sección Distribuciones admitidas.
Advertencia
Se recomienda evitar el uso de los repositorios de paquetes de Microsoft y Ubuntu para .NET, 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 Microsoft) |
|
|
Administrador de paquetes (Fuente de Ubuntu) |
|
|
Extracción manual o con script |
|
|
Decisión sobre cómo instalar .NET
Cuando la versión de Ubuntu admite .NET mediante la fuente integrada de Ubuntu, Canonical proporciona compatibilidad con esas compilaciones de .NET y las compilaciones se pueden optimizar para diferentes 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.10 o 23.04 y solo necesito .NET 6.0 o .NET 7.0
- Uso Ubuntu 22.04 y solo necesito .NET 6.0
- Uso Ubuntu 22.04 y necesito .NET 7.0
- Uso una versión de Ubuntu anterior a la 22.04
- Uso otros paquetes de Microsoft, como
powershell
,mdatp
omssql
- Quiero crear una aplicación de .NET
- Quiero ejecutar una aplicación de .NET en un escenario de contenedor, nube o integración continua
- Mi distribución de Ubuntu no incluye la versión de .NET que quiero, o bien necesito una versión de .NET no compatible
- Quiero instalar una versión preliminar
- No quiero usar APT
- Uso una CPU basada en Arm
Uso Ubuntu 22.10 o 23.04 y solo necesito .NET 6.0 o .NET 7.0
Instale .NET mediante la fuente de Ubuntu. Para obtener más información, vea Instalación de .NET en Ubuntu 22.10 o Instalación de .NET en Ubuntu 23.04.
Si va a usar otros paquetes de repositorio de Microsoft, como powershell
, mdatp
o mssql
, deberá 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 Ubuntu 22.04 y solo necesito .NET 6.0
Instale .NET mediante la fuente de Ubuntu. Para obtener más información, vea Instalación de .NET en Ubuntu 22.04.
Si va a usar otros paquetes de repositorio de Microsoft, como powershell
, mdatp
o mssql
, deberá 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 Ubuntu 22.04 y necesito .NET 7.0
.NET 7 no se proporciona en la fuente de paquetes de Ubuntu predeterminada. Deberá agregar el repositorio de paquetes de Microsoft y, después, instalar .NET. Para obtener más información, vea la sección Registro e instalación con el repositorio de paquetes de Microsoft.
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 integrada, 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, deberá 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. Por ejemplo, si usa Ubuntu 22.04 y .NET 6, pero no .NET 7, se recomienda instalar .NET mediante la fuente de Ubuntu integrada. Pero si migra a .NET 7, que Canonical no proporciona para Ubuntu 22.04, debe registrar e instalar con el repositorio de paquetes de Microsoft. 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 integrada. 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
Utilice una de las formas siguientes de instalar .NET:
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 la fuente de Ubuntu | Disponible en la fuente de Microsoft |
---|---|---|---|
23.04 (LTS) | 7.0, 6.0 | 7.0, 6.0 | 7.0, 6.0 |
22.10 | 7.0, 6.0 | 7.0, 6.0 | 7.0, 6.0, 3.1 |
22.04 (LTS) | 7.0, 6.0 | 6.0 | 7.0, 6.0, 3.1 |
20.04 (LTS) | 7.0, 6.0 | None | 7.0 6.0, 5.0, 3.1, 2.1 |
18.04 (LTS) | 7.0, 6.0 | None | 7.0 6.0, 5.0, 3.1, 2.2, 2.1 |
16.04 (LTS) | 6.0 | None | 6.0, 5.0, 3.1, 3.0, 2.2, 2.1, 2.0 |
Cuando una versión de Ubuntu no es compatible, .NET deja de ser compatible con esa versión.
Las versiones siguientes de .NET ya ❌ no se admiten:
- .NET 5
- .NET Core 3.1
- .NET Core 3.0
- .NET Core 2.2
- .NET Core 2.1
- .NET Core 2.0
Registro del repositorio de paquetes de Microsoft
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
Las instalaciones del administrador de paquetes solo se admiten en la arquitectura 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 Ubuntu version
declare repo_version=$(if command -v lsb_release &> /dev/null; then lsb_release -r -s; else grep -oP '(?<=^VERSION_ID=).+' /etc/os-release | tr -d '"'; fi)
# Download Microsoft signing key and repository
wget https://packages.microsoft.com/config/ubuntu/$repo_version/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 la variable $repo_version
no tenga asignado el valor correcto, lo que hace que el URI del comando wget
no sea válido. Esta variable se asigna a la versión específica de Ubuntu para la que desea obtener paquetes, como 22.10 o 23.04.
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
Después de registrar el repositorio de paquetes de Microsoft, o si la versión de la fuente predeterminada de Ubuntu admite el paquete .NET, puede instalar .NET mediante el administrador de paquetes con el comando apt install <package-name>
. Reemplace <package-name>
por el nombre del paquete .NET que quiere instalar. Por ejemplo, para instalar el SDK de .NET 7.0, use el comando apt install dotnet-sdk-7.0
. En la tabla siguiente se muestran los paquetes de .NET admitidos actualmente:
Producto | Tipo | Paquete | |
---|---|---|---|
7.0 | ASP.NET Core | Tiempo de ejecución | aspnetcore-runtime-7.0 |
7.0 | .NET | Tiempo de ejecución | dotnet-runtime-7.0 |
7.0 | .NET | SDK | dotnet-sdk-7.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 |
Si quiere instalar una versión no compatible de .NET, vea la sección Distribuciones admitidas para ver si esa versión de .NET está disponible. Después, sustituya la versión de .NET que quiere instalar. Por ejemplo, para instalar ASP.NET Core 2.1, use el nombre del paquete aspnetcore-runtime-2.1
.
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 instalarla. 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-7.0
con la versión más reciente:
sudo apt update
sudo apt upgrade dotnet-sdk-7.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, puede encontrarse con una situación en la que parece que solo hay disponible una parte de .NET. Por ejemplo, cuando ha instalado el runtime y el SDK, pero cuando se ejecuta dotnet --info
solo aparece en la lista el runtime. Esto puede estar relacionado 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 puede recibir al usar APT para instalar .NET.
No se puede encontrar el paquete
Importante
Las instalaciones del administrador de paquetes solo se admiten en la arquitectura x64. Otras arquitecturas, como Arm, deben instalar .NET por otros medios, como Snap, un script de instalador o por medio de una instalación binaria manual.
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, comoaspnetcore-runtime-7.0
. Se usa en el comandosudo apt-get install
siguiente.{os-version}
Representa la versión de distribución en la que se encuentra. Se usa en el comandowget
siguiente. La versión de distribución es el valor numérico, como20.04
en Ubuntu o10
en Debian.
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:
sudo apt-get install -y gpg
wget -O - https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor -o microsoft.asc.gpg
sudo mv microsoft.asc.gpg /etc/apt/trusted.gpg.d/
wget https://packages.microsoft.com/config/ubuntu/{os-version}/prod.list
sudo mv prod.list /etc/apt/sources.list.d/microsoft-prod.list
sudo chown root:root /etc/apt/trusted.gpg.d/microsoft.asc.gpg
sudo chown root:root /etc/apt/sources.list.d/microsoft-prod.list
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:
- libc6
- libgcc1
- libgcc-s1 (para 22.x)
- libgssapi-krb5-2
- libicu55 (para 16.x)
- libicu60 (para 18.x)
- libicu66 (para 20.x)
- libicu70 (para 22.04)
- libicu71 (para 22.10)
- liblttng-ust1 (para 22.x)
- libssl1.0.0 (para 16.x)
- libssl1.1 (para 18.x, 20.x)
- libssl3 (para 22.x)
- libstdc++6
- libunwind8 (para 22.x)
- 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.