Установка пакета SDK .NET с помощью Snap

В этой статье описывается, как установить snap-пакет .NET SDK. Пакеты Snap SDK .NET предоставляются и поддерживаются компанией Canonical. Пакеты Snap — это отличная альтернатива диспетчеру пакетов, встроенному в дистрибутив Linux.

Snap — это пакет, включающий приложение и его зависимости, работающий во многих разных дистрибутивах Linux. Snap-пакеты можно найти и установить с помощью Snap Store. Для получения дополнительной информации о Snap см. Начало работы.

Внимание

Если установить .NET с помощью Snap, используйте Snap для управления всеми .NET установками. Избегайте смешивания Snap с другими методами установки, например с менеджером пакетов или установкой с помощью скрипта, так как смешивание этих методов может привести к конфликтам.

Внимание

При установке .NET через Snap могут возникнуть проблемы с запуском средств .NET. Если вы хотите использовать средства .NET, рекомендуется установить .NET с помощью скрипта dotnet-install или диспетчера пакетов для конкретного дистрибутива Linux.

Известная проблема, из-за которой команда dotnet watch не работает при установке .NET через Snap.

Если вы собираетесь использовать средства .NET или команду dotnet watch, рекомендуется установить .NET с использованием dotnet-install script.

Предварительные условия

  • Дистрибутив Linux, поддерживающий привязку.
  • snapd демон Snap.

Ваш дистрибутив Linux уже может содержать snap. Попробуйте запустить snap из терминала, чтобы узнать, работает ли команда. Список поддерживаемых дистрибутивов Linux и инструкции по установке snap см. в разделе «Установка snapd».

выпуски .NET

Корпорация Майкрософт публикует .NET в двух разных политиках поддержки, долгосрочной поддержке (LTS) и стандартной поддержке (STS). Качество всех выпусков одинаково. Единственное различие заключается в продолжительности поддержки. Выпуски LTS получают бесплатную поддержку и исправления в течение трех лет. Выпуски STS получают бесплатную поддержку и исправления в течение двух лет. Дополнительные сведения см. в разделе .NET Политика поддержки.

Версии .NET, которые в настоящее время поддерживаются корпорацией Майкрософт:

  • 10.0 (LTS)— поддержка заканчивается 14 ноября 2028 г.
  • 9.0 (STS) — поддержка заканчивается 10 ноября 2026 г.
  • 8.0 (LTS)— поддержка заканчивается 10 ноября 2026 г.

Другие организации, которые создают и выпускают .NET, могут вводить различные политики поддержки. Обязательно ознакомьтесь с ними, чтобы понять, как поддерживается .NET.

1. Установка пакета SDK

Чтобы установить пакет SDK для .NET, используйте идентификаторы пакетов оснастки для конкретной версии, так как этот подход позволяет устанавливать и управлять несколькими версиями пакета SDK параллельно. Например, используйте dotnet-sdk-80 для .NET 8 и dotnet-sdk-100 для .NET 10. SDK включает ASP.NET Core и среду выполнения .NET, версии которых соответствуют версии SDK. В этой статье используется snap-пакет .NET SDK 10; если вы используете другой пакет, подставьте его вместо него.

Совет

Страница пакета SDK .NET для Snapcraft (.NET 8, .NET 9, .NET 10) содержит инструкции для конкретных дистрибутивов по установке Snapcraft и .NET.

  1. Откройте окно терминала.

  2. Используйте snap install для установки snap-пакета .NET SDK.

    Следующая команда устанавливает пакет SDK 10 .NET:

    sudo snap install dotnet-sdk-100
    

В следующей таблице перечислены snap-пакеты SDK .NET, которые можно установить:

версия .NET Пакет программного обеспечения Snap
10 (LTS) dotnet-sdk-100
9 (STS) dotnet-sdk-90
8 (LTS) dotnet-sdk-80

2. Сопоставьте команду dotnet

Поскольку Snap не создает команду dotnet без указания версии, создайте символическую ссылку, чтобы команда dotnet была доступна во всей системе. Создайте эту ссылку только в том случае, если вы хотите связать команду dotnet с этой конкретной установкой Snap. Если у вас уже установлен .NET другим способом и вы создадите эту ссылку, эта ссылка перезапишет эту привязку.

Если /usr/local/bin/dotnet уже существует, удалите ее перед тем, как создать ссылку.

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

3. Экспорт расположения установки

DOTNET_ROOT Настройте переменную среды в профиле оболочки, так как средства используют ее для определения места установки .NET. Пакеты Snap не задают эту переменную автоматически. Путь использует следующий формат: /snap/{package}/current/usr/lib/dotnet

export DOTNET_ROOT=/snap/dotnet-sdk-100/current/usr/lib/dotnet

Замените 100 на версию SDK, которую вы установили, например 80 для .NET 8 или 90 для .NET 9.

Экспорт переменной среды на постоянной основе

Предыдущая команда export задает переменную среды только для сеанса терминала, в котором она была запущена.

Вы можете изменить настройки профиля оболочки, чтобы добавить команды на постоянной основе. Существует множество различных оболочков, доступных для Linux, и каждый из них имеет другой профиль. Например:

  • Оболочка Bash: ~/.bash_profile, ~/.bashrc
  • Оболочка Korn: ~/.kshrc или .profile
  • Z Shell: _~/.zshrc* или .zprofile

Измените соответствующий исходный файл оболочки, добавьте команду экспорта для установленной версии .NET и сохраните изменения.

Например: export DOTNET_ROOT=/snap/dotnet-sdk-100/current/usr/lib/dotnet.

4. Использование интерфейса командной строки .NET

Откройте терминал и выполните dotnet команду.

dotnet

Выводится следующий результат.

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.

Сведения об использовании интерфейса командной строки .NET см. в статье .NET CLI.

Устранение неполадок

Не удается установить Snap в WSL2

systemd надо включить в WSL2 перед установкой Snap.

  1. Откройте /etc/wsl.conf в текстовом редакторе на ваш выбор.

  2. Вставьте следующую конфигурацию:

    [boot]
    systemd=true
    
  3. Сохраните файл и перезапустите экземпляр WSL2 с помощью PowerShell. Используйте команду wsl.exe --shutdown.

Не удается найти команду dotnet или SDK

Обычно другие приложения, такие как интегрированная среда разработки (IDE) или расширение в Visual Studio Code, пытаются определить расположение пакета SDK .NET. Как правило, обнаружение выполняется путем проверки переменной DOTNET_ROOT среды или определения расположения исполняемого dotnet файла. .NET SDK, установленный через систему snap, может сбить с толку эти приложения. Если эти приложения не могут устранить пакет SDK для .NET, отображается ошибка, аналогичная одному из следующих сообщений:

  • Указанный SDK 'Microsoft.NET.Sdk' не найден
  • Не удалось найти указанный SDK 'Microsoft.NET.Sdk.Web'
  • Не удалось найти указанный SDK 'Microsoft.NET.Sdk.Razor'

Чтобы устранить проблему, выполните следующие действия.

  1. Завершите 2. Сопоставление команды dotnet.
  2. Задайте переменную среды DOTNET_ROOT навсегда, следуя инструкциям в разделе Экспорт переменной среды на постоянной основе.

Ошибки СЕРТИФИКАТА TLS/SSL

При установке .NET с помощью Snap возможно, что в некоторых дистрибутивах .NET TLS/SSL-сертификаты могут не быть найдены, и во время 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]

Чтобы устранить эту проблему, задайте несколько переменных среды:

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

Расположение сертификата зависит от распределения. Ниже приведены расположения для дистрибутивов, в которых обнаружена проблема:

Распределение Расположение
Федора /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
OpenSUSE /etc/ssl/ca-bundle.pem
Solus /etc/ssl/certs/ca-certificates.crt