Comparteix a través de


Instalar el SDK de .NET con Snap

Este artículo describe cómo instalar el paquete de Snap .NET SDK. Los paquetes de Snap del SDK de .NET son proporcionados y mantenidos por Canonical. Los snaps son una excelente alternativa para el administrador de paquetes integrada en la distribución de Linux.

Un Snap es un paquete de una aplicación y sus dependencias que funciona en diferentes distribuciones de Linux. Los snaps se reconocen y se instalan desde el almacén de snaps. Para más información sobre Snap, consulte Introducción a Snap.

Precaución

Las instalaciones de Snap de .NET pueden tener problemas al ejecutar las herramientas de .NET. Si desea usar las herramientas de .NET, se recomienda instalar .NET mediante el dotnet-installscript o el administrador de paquetes para la distribución de Linux concreta.

Que el comando dotnet watch no funciona cuando .NET se instala mediante Snap es un problema conocido.

Si va a usar las herramientas de .NET o el comando dotnet watch, se recomienda instalar .NET mediante el dotnet-installscript .

Requisitos previos

  • Distribución de Linux que admite Snap.
  • snapd demonio del Snap.

Es posible que su distribución de Linux ya incluya el Snap. Pruebe a ejecutar snap desde un terminal para ver si el comando funciona. Para obtener una lista de las distribuciones de Linux admitidas e instrucciones sobre cómo instalar Snap, consulte Instalaciónsnapd.

Versiones de .NET

Microsoft publica .NET en dos directivas de soporte técnico diferentes, soporte técnico a largo plazo (LTS) y compatibilidad con términos estándar (STS). La calidad de todas las versiones es la misma. La única diferencia es la duración del soporte técnico. Las versiones LTS obtienen soporte técnico y revisiones gratuitas durante tres años. Las versiones STS obtienen soporte técnico y revisiones gratuitas durante 18 meses. Para más información, consulte Directiva de soporte de .NET.

Las versiones de .NET que actualmente son compatibles con Microsoft son:

  • 8.0 (LTS): el soporte técnico finaliza el 10 de noviembre de 2026.
  • 6.0 (LTS): el soporte técnico finaliza el 12 de noviembre de 2024.

Otras entidades que crean y publican .NET podrían introducir diferentes directivas de soporte. Asegúrese de consultar con ellos para saber cómo se admite .NET.

1. Instalar el SDK

Los paquetes de snaps para el SDK de .NET se publican con el mismo identificador: dotnet-sdk. Se puede instalar una versión específica del SDK mediante la especificación del canal. El SDK incluye tanto ASP.NET Core como .NET runtime, versionados al SDK.

Sugerencia

La página del paquete Snapcraft .NET SDK incluye instrucciones específicas para cada distribución sobre cómo instalar Snapcraft y .NET.

  1. Abra un terminal.

  2. Utilice snap install para instalar el paquete Snap de .NET SDK. Por ejemplo, el siguiente comando instala el canal latest/stable, que es el predeterminado.

    sudo snap install dotnet-sdk --classic
    
    • El parámetro --classic es obligatorio.
    • Utilice el parámetro --channel para especificar la versión que desea instalar. Si se omite este parámetro, se usa latest/stable. Por ejemplo, --channel 8.0/stable instala el SDK de .NET 8.0.

El alias del Snap dotnet se crea automáticamente y se asigna al comando del paquete Snap dotnet.

La siguiente tabla enumera los canales de paquetes que puede instalar:

Versión de .NET Canal de paquetes de Snap
8 (LTS) 8.0/stable
latest/stable
lts/stable
7 7.0/stable (fuera de soporte técnico)
6 (LTS) 6.0/stable
5 5.0/stable (fuera de soporte técnico)
3.1 3.1/stable (fuera de soporte técnico)
2.1 2.1/stable (fuera de soporte técnico)

2. Exportación de la ubicación de instalación

Las herramientas suelen usar la variable de entorno DOTNET_ROOT para determinar dónde está instalado .NET. Cuando .NET se instala mediante Snap, esta variable de entorno no está configurada. Debe configurar la variable de entorno DOTNET_ROOT en el perfil. La ruta a Snap usa el siguiente formato: /snap/{package}/current.

export DOTNET_ROOT=/snap/dotnet-sdk/current

Exportación permanente de la variable de entorno

El comando export anterior solo establece la variable de entorno para la sesión de terminal en la que se ha ejecutado.

Puede editar el perfil del shell para agregar los comandos de forma permanente. Hay muchos shells diferentes disponibles para Linux y cada uno tiene un perfil diferente. Por ejemplo:

  • Shell de Bash: ~/.bash_profile, ~/.bashrc
  • Shell de Korn: ~/.kshrc or .profile
  • Z Shell: _~/.zshrc* o .zprofile

Edite el archivo de código fuente adecuado para el shell y agregue export DOTNET_ROOT=/snap/dotnet-sdk/current.

3. Utilice la CLI de .NET

Abra un terminal y escriba dotnet.

dotnet

Se muestra el siguiente resultado:

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 obtener información sobre cómo usar la CLI de .NET, consulte Información general sobre la CLI de .NET.

Solución de problemas

El comando dotnet terminal no funciona

Los paquetes Snap pueden asignar un alias a un comando proporcionado por el paquete. Por defecto, los paquetes Snap del SDK .NET crean un alias para el comando dotnet. Si el alias no se creó o se eliminó previamente, el siguiente comando muestra cómo asignar el alias:

sudo snap alias dotnet-sdk.dotnet dotnet

No se puede instalar Snap en WSL2

systemd debe estar habilitado en la instancia de WSL2 para poder instalar Snap.

  1. Abra /etc/wsl.conf en un editor de texto de su elección.

  2. Pegue la siguiente configuración:

    [boot]
    systemd=true
    
  3. Guarde el archivo y reinicie la instancia de WSL2 a través de PowerShell. Use el comando wsl.exe --shutdown.

No se puede resolver el comando dotnet o SDK

Es habitual que otras aplicaciones, como un IDE de código o una extensión en Visual Studio Code, intenten resolver la ubicación del SDK .NET. Normalmente, el descubrimiento se realiza comprobando la variable de entorno DOTNET_ROOT o averiguando dónde se encuentra el ejecutable dotnet. Un SDK .NET instalado a presión podría confundir a estas aplicaciones. Cuando estas aplicaciones no pueden resolver el SDK .NET, aparece un error similar a uno de los siguientes mensajes:

  • No se encontró el SDK "Microsoft.NET.Sdk" especificado
  • No se encontró el SDK "Microsoft.NET.Sdk.Web" especificado
  • No se encontró el SDK "Microsoft.NET.Sdk.Razor" especificado

Pruebe los siguientes pasos para solucionar el problema:

  1. Asegúrese de exportar la variable DOTNET_ROOT de entorno de forma permanente.

  2. Intente establecer un vínculo simbólico con el ejecutable de Snap dotnet en la ubicación que busca el programa.

    Dos rutas comunes que busca el comando dotnet son:

    • /usr/local/bin/dotnet
    • /usr/share/dotnet

    Utilice el siguiente comando para crear un vínculo simbólico al paquete Snap:

    ln -s /snap/dotnet-sdk/current/dotnet /usr/local/bin/dotnet
    

Errores de certificado TLS/SSL

Cuando .NET se instala a través de Snap, es posible que en algunas distribuciones no se encuentren los certificados TLS/SSL de .NET y reciba un error 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, establezca algunas variables de entorno:

export SSL_CERT_FILE=[path-to-certificate-file]
export SSL_CERT_DIR=/dev/null

La ubicación del certificado varía según la distribución. A continuación se indican las ubicaciones de las distribuciones en las que se ha observado el problema:

Distribución Ubicación
Fedora /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
OpenSUSE /etc/ssl/ca-bundle.pem
Solus /etc/ssl/certs/ca-certificates.crt