Поделиться через


Обзор .NET в Ubuntu

В этой статье описано, как установить .NET в Ubuntu. Начиная с Ubuntu 22.04, большинство поддерживаемых версий .NET доступны в встроенном веб-канале Ubuntu. Репозиторий пакетов серверной части Ubuntu .NET содержит оставшиеся поддерживаемые версии .NET. Дополнительные сведения о доступных версиях см. в разделе "Поддерживаемые дистрибутивы ".

Canonical взяла на себя публикацию .NET в Ubuntu. Начиная с Ubuntu 22.04 корпорация Майкрософт больше не распространяет .NET для Ubuntu в репозиторий пакетов Майкрософт.

Предупреждение

Рекомендуется выбрать между источниками Ubuntu или Microsoft для загрузки пакетов .NET. Не смешивайте пакеты .NET из нескольких репозиториев пакетов, так как это приводит к проблемам при попытке приложений устранить определенную версию .NET.

Способ Плюсы Минусы
Диспетчер пакетов
(встроенный
Веб-канал Ubuntu)
  • Обычно доступна последняя версия.
  • Исправления доступны сразу.
  • Включены зависимости.
  • Простое удаление.
  • Доступные версии .NET поддерживаются для периода поддержки конкретной версии Ubuntu.
  • Поддержка платформы IBM System Z для .NET 8 в Ubuntu 24.04.
  • Недоступно для Ubuntu 16.04, 18.04, 20.04.
  • Доступные версии .NET зависят от версии Ubuntu.
  • Предварительные версии выпусков недоступны.
Диспетчер пакетов
(Внутренние порты .NET
Лента новостей Ubuntu)
  • Содержит любую поддерживаемую версию, которая не содержится в встроенном веб-канале Ubuntu.
  • Исправления доступны сразу.
  • Включены зависимости.
  • Простое удаление.
  • Совместим со встроенным каналом Ubuntu.
  • Недоступно для Ubuntu 16.04, 18.04, 20.04.
  • Требуется регистрация репозитория пакетов серверной части Ubuntu .NET.
  • Предварительные версии выпусков недоступны.
Диспетчер пакетов
(веб-канал Майкрософт)
  • Поддерживаемые версии всегда доступны.
  • Исправления доступны немедленно.
  • Включены зависимости.
  • Простое удаление.
  • Недоступно для Ubuntu 24.04+.
  • Требуется регистрация репозитория пакетов Майкрософт.
  • Предварительные версии выпусков недоступны.
  • Поддерживается только Ubuntu x64.
Скрипт \ Извлечение вручную
  • Управляйте местом установки .NET.
  • Доступны предварительные выпуски.
  • Установка обновлений вручную.
  • Вручную установите зависимости.
  • Удаление вручную.

Рекомендации по обновлению Ubuntu

Обновление Ubuntu до версии 22.04 или более поздней версии? Сначала рекомендуется удалить .NET.

Если вы использовали диспетчер пакетов для установки .NET из репозитория пакетов Майкрософт, после обновления Ubuntu у вас возникнет проблема с перепутыванием пакетов. Теперь, когда Canonical публикует .NET в пакетные ленты для Ubuntu 22.04 (и более поздние версии), диспетчер пакетов не будет учитывать ранее установленную версию .NET. Пакеты нельзя обновить до последней версии .NET. Сначала удалите их, а затем переустановите их из [репозитория пакетов Ubuntu].

Решите, как установить .NET

Если ваша версия Ubuntu поддерживает .NET через встроенные или назадпортированные веб-каналы Ubuntu, поддержка этих сборок .NET предоставляется Canonical, и сборки могут быть оптимизированы для разных рабочих нагрузок. Корпорация Майкрософт предоставляет поддержку пакетов в канале репозитория пакетов компании Майкрософт.

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

Я использую Ubuntu 22.04 или более поздней версии, и мне нужен только .NET

Если вам не нужны другие пакеты Майкрософт, например powershell, mdatpили mssql, установите .NET через веб-канал Ubuntu. Дополнительные сведения см. на следующих страницах:

Внимание

Если вы используете пакет SDK для .NET 8 и Ubuntu 22.04, учтите, что версии пакета SDK, предлагаемые Canonical, всегда находятся в группе функциональных обновлений .1xx. Если вы хотите использовать более новый выпуск группы компонентов, используйте веб-канал Майкрософт для установки пакета SDK. Убедитесь, что вы изучаете информацию в статье Проблемы с пакетами .NET на Linux, чтобы понять последствия переключения между источниками репозиториев.

Если вы собираетесь установить репозиторий Майкрософт для использования других пакетов Майкрософт, таких как powershell, mdatp или mssql, необходимо уменьшить приоритет пакетов .NET, предоставляемых репозиторием Майкрософт. Инструкции по отмене использования пакетов см. в разделе "Мой дистрибутив Linux" предоставляет пакеты .NET, и я хочу их использовать.

Я использую версию Ubuntu до 22.04

Используйте инструкции на странице Ubuntu для конкретной версии.

Чтобы получить дополнительную информацию о поддерживаемых версиях .NET для вашей версии Ubuntu, см. раздел "Поддерживаемые дистрибутивы". Если вы устанавливаете версию, которая не поддерживается, ознакомьтесь с разделом "Регистрация репозитория пакетов Майкрософт".

Я использую другие пакеты Майкрософт, например powershell, mdatpили mssql

Если ваша версия Ubuntu поддерживает .NET через источники Ubuntu, необходимо решить, из какого источника установить .NET. В разделе "Поддерживаемые дистрибутивы" представлена таблица, в которой перечислены версии .NET, доступные в веб-каналах пакетов.

Если вы хотите получать пакеты .NET из источника Ubuntu, необходимо понизить приоритет пакетов .NET, предоставляемых репозиторием Майкрософт. Инструкции по отмене использования пакетов см. в разделе "Мой дистрибутив Linux" предоставляет пакеты .NET, и я хочу их использовать.

Я хочу создать приложение .NET

Используйте те же источники пакетов для пакета SDK, что и для среды выполнения. Рекомендуется установить .NET через веб-канал Ubuntu. Если вы хотите установить .NET из другого источника (например, репозитория пакетов Майкрософт для доступа к более высоким уровням функциональности SDK), удалите .NET, настройте диспетчер пакетов, чтобы игнорировать пакеты .NET из канала пакетов Ubuntu и переустановите его из другого источника.

Ознакомьтесь с другими предложениями в разделе "Решение о том, как установить .NET ".

Я хочу запустить приложение .NET в контейнере, облаке или сценарии непрерывной интеграции

Если ваша версия Ubuntu предоставляет требуемую версию .NET, установите ее из веб-канала Ubuntu. В противном случае зарегистрируйте репозиторий пакетов Майкрософт и установите .NET из этого репозитория. Просмотрите сведения в разделе "Поддерживаемые дистрибутивы ".

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

Мой дистрибутив Ubuntu не включает нужную версию .NET, или мне нужна не поддерживается версия .NET.

Рекомендуется использовать APT и репозиторий пакетов Майкрософт. Дополнительные сведения см. в разделе "Регистрация и установка" в разделе репозитория пакетов Майкрософт.

Я хочу установить предварительную версию

Используйте один из следующих способов установки .NET:

Я не хочу использовать APT

Если требуется автоматическая установка, используйте сценарий установки Linux.

Если требуется полный контроль над интерфейсом установки .NET, скачайте tarball и вручную установите .NET. Дополнительные сведения см. в разделе "Установка вручную".

Я использую центральный процессор на основе Arm

Если ваша версия Ubuntu предоставляет требуемую версию .NET, установите её из встроенного хранилища. Просмотрите сведения в разделе "Поддерживаемые дистрибутивы ".

Если нужная версия .NET недоступна, попробуйте установить .NET одним из следующих способов:

Я использую платформу IBM System Z

Начиная с версии .NET 8 на Ubuntu 24.04, Canonical обеспечивает поддержку .NET для платформы IBM System Z. Компания Canonical работает над расширением поддержки для других версий .NET и Ubuntu.

Установите .NET через встроенный веб-канал Ubuntu. Дополнительные сведения см. на следующей странице:

Поддерживаемые дистрибутивы

В приведенной ниже таблице содержится список поддерживаемых сейчас выпусков .NET и версий Ubuntu, в которых они поддерживаются. Каждая ссылка переходит на определенную страницу версии Ubuntu с определенными инструкциями по установке .NET для этой версии Ubuntu.

Ubuntu Поддерживаемые версии .NET Доступно в
встроенный веб-канал Ubuntu
Доступно в
Обратные портирования .NET
Веб-канал Ubuntu
Доступно в
Лента Майкрософт
24.10 9.0, 8.0 9.0, 8.0 нет нет
24.04 (LTS) 9.0, 8.0 8.0 9.0, 7.0, 6.0 нет
22.04 (LTS) 9.0, 8.0 8.0, 7.0, 6.0 9.0 8.0, 7.0, 6.0, 3.1
20.04 (LTS) 9.0, 8.0 нет нет 8.0, 7.0. 6.0, 5.0, 3.1, 2.1

Когда версия Ubuntu достигнет окончания срока поддержки, .NET больше не поддерживается с этой конкретной версией Ubuntu.

Canonical поддерживает версии .NET в встроенном хранилище Ubuntu на протяжении всего жизненного цикла этой версии Ubuntu, даже после окончания поддержки, предоставляемой Microsoft, и обеспечивает поддержку версий .NET в репозитории пакетов .NET backports, которая не выходит за пределы срока поддержки Microsoft.

Следующие версии .NET больше не поддерживаются (❌).

  • .NET 7
  • .NET 6
  • .NET 5
  • .NET Core 3.1.
  • .NET Core 3.0
  • .NET Core 2.2
  • .NET Core 2.1
  • .NET Core 2.0;

Регистрация репозитория пакетов

В зависимости от версии Ubuntu может потребоваться зарегистрировать серверные порты Ubuntu или репозиторий пакетов Майкрософт.

Внимание

Убедитесь, что вы учитываете информацию в разделе Решить, как установить .NET.

Репозиторий пакетов обратных портов Ubuntu .NET

Репозиторий пакетов Ubuntu .NET backports предоставляет версии .NET, недоступные в встроенном хранилище Ubuntu. В разделе "Поддерживаемые дистрибутивы" представлена таблица, в которой перечислены версии .NET, доступные в веб-канале пакетов. Canonical поддерживает пакеты, содержащиеся в данном репозитории, и обеспечивает поддержку, которая не превышает срок поддержки от Microsoft или периода поддержки конкретной версии Ubuntu.

Для получения дополнительных сведений см. веб-представление репозитория пакетов обратной портировки Ubuntu .NET.

Зарегистрируйте репозиторий пакетов backports для Ubuntu .NET

Откройте терминал и выполните следующую команду:

sudo add-apt-repository ppa:dotnet/backports

Примечание.

Репозиторий пакетов серверной части Ubuntu .NET совместим со встроенным веб-каналом Ubuntu. Поэтому вам не нужно настраивать диспетчер пакетов, чтобы игнорировать пакеты .NET в встроенном репозитории Ubuntu.

Отменить регистрацию репозитория пакетов Ubuntu .NET backports

Если вы больше не хотите использовать пакеты из репозитория пакетов Ubuntu .NET backports, вы можете удалить его регистрацию. Откройте терминал и выполните следующую команду:

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

Внимание

Отмена регистрации репозитория пакетов Ubuntu .NET backports не удаляет пакеты.

Команда add-apt-repository не найдена

Программа add-apt-repository(1) предварительно установлена на большинстве установок Ubuntu.

Если вы получите сообщение об ошибке, что add-apt-repository команда не найдена, необходимо установить software-properties-common пакет, который предоставляет эту команду. Откройте терминал и выполните следующие команды:

sudo apt update
sudo apt install software-properties-common

Регистрация репозитория пакетов Майкрософт

Внимание

Это относится только к версиям Ubuntu до 24.04. Начиная с Ubuntu 24.04 корпорация Майкрософт больше не публикует пакеты в репозитории пакетов Майкрософт. Используйте таблицу поддерживаемых дистрибутивов, чтобы определить оптимальный способ установки .NET.

Репозиторий пакетов Майкрософт содержит все версии .NET, которые были ранее или поддерживаются в вашей версии Ubuntu. Если ваша версия Ubuntu предоставляет пакеты .NET, вам потребуется отменять использование пакетов Ubuntu и использовать репозиторий Майкрософт. Для получения инструкций по понижению приоритета пакетов см. раздел Мне нужна версия .NET, которая не предоставляется моим дистрибутивом Linux.

Внимание

Репозиторий пакетов Майкрософт поддерживает только пакеты .NET, предназначенные для архитектуры x64 . Другие архитектуры, такие как Arm, должны устанавливать .NET другими средствами, например с скриптом установщика или ручной установкой.

Предварительные версии выпусков недоступны в репозитории пакетов Майкрософт. Дополнительные сведения см. в разделе "Установка предварительных версий".

Внимание

Рекомендуется использовать только один репозиторий для управления всеми установками .NET. Если вы ранее установили .NET с репозиторием Ubuntu, необходимо очистить систему пакетов .NET и настроить APT, чтобы игнорировать веб-каналы Ubuntu. Дополнительные сведения о том, как это сделать, см. в статье о том, что мне нужна версия .NET, которая не предоставляется дистрибутивом Linux.

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

Откройте терминал и выполните следующие команды:

# 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

Совет

Предыдущий сценарий был написан для Ubuntu и может не работать, если вы используете производный дистрибутив, например Linux Mint. Скорее всего, переменные $ID и $VERSION_ID не будут назначены правильным значениям, что приведёт к недействительности URI для команды wget. $ID соответствует дистрибутиву (например, ubuntu), в то время как $VERSION_ID соответствует конкретной версии Ubuntu, для которой вы хотите получить пакеты, например 22.04 или 23.10.

Например, в Ubuntu 22.04 $ID будет ubuntu и $VERSION_ID будет 22.04. URL-адрес будет выглядеть следующим образом: https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb

Вы можете использовать веб-браузер и перейти на https://packages.microsoft.com/config/ubuntu/, чтобы увидеть, какие версии Ubuntu доступны для использования в качестве значения $repo_version.

Установка, удаление или обновление .NET

В следующих разделах описывается управление .NET с помощью диспетчера пакетов.

Установка .NET

Установите .NET с помощью команды sudo apt install <package-name> через диспетчер пакетов. Замените <package-name> именем пакета .NET, который требуется установить. Например, чтобы установить пакет SDK для .NET 9.0, используйте команду sudo apt install dotnet-sdk-9.0. В следующей таблице перечислены поддерживаемые в настоящее время пакеты .NET (которые могут отличаться в зависимости от версии Ubuntu):

Продукт Тип Пакет
9.0 ASP.NET Core Параметры выполнения aspnetcore-runtime-9.0
9.0 .NET Параметры выполнения dotnet-runtime-9.0
9.0 .NET SDK dotnet-sdk-9.0
8.0 ASP.NET Core Параметры выполнения aspnetcore-runtime-8.0
8.0 .NET Параметры выполнения dotnet-runtime-8.0
8.0 .NET SDK dotnet-sdk-8.0

Совет

Если вы не создаете приложения .NET, установите среду выполнения ASP.NET Core, так как она включает среду выполнения .NET, а также поддерживает ASP.NET приложения Core.

Некоторые переменные среды влияют на запуск .NET после его установки. Для получения дополнительной информации см. раздел .NET SDK и переменные среды CLI.

Удалите .NET

Если вы установили .NET через диспетчер пакетов, удалите его аналогичным образом с помощью команды apt-get remove.

sudo apt-get remove dotnet-sdk-6.0

Дополнительные сведения см. в разделе "Удаление .NET".

Обновление .NET

Если вы установили .NET через диспетчер пакетов, вы можете обновить пакет с помощью apt upgrade команды. Например, следующие команды обновляют dotnet-sdk-9.0 пакет с последней версией:

sudo apt update
sudo apt upgrade dotnet-sdk-9.0

Совет

Если вы обновили дистрибутив Linux с момента установки .NET, может потребоваться перенастроить репозиторий пакетов Майкрософт. Выполните инструкции по установке для текущей версии дистрибутива, чтобы обновить репозиторий пакетов для обновлений .NET до соответствующей версии.

Управление версиями предварительной версии

В следующих разделах описывается установка и удаление предварительных выпусков .NET.

Установка предварительных версий

Предварительные версии и версии-кандидаты на выпуск .NET недоступны в репозиториях пакетов. Предварительные версии и кандидаты на выпуск .NET можно установить одним из следующих способов:

Удалите предварительные версии

При использовании диспетчера пакетов для управления установкой .NET вы можете столкнуться с конфликтом, если ранее вы установили предварительную версию. Диспетчер пакетов может интерпретировать выпуск, не являющийся предварительной версией, в качестве более ранней версии .NET. Чтобы установить выпуск, не относящийся к предварительной версии, сначала удалите предварительные версии. Дополнительные сведения об удалении .NET см. в разделе Удаление среды выполнения .NET и пакета SDK.

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

Начиная с Ubuntu 22.04, вы можете столкнуться с ситуацией, когда доступна только часть .NET. Например, вы установили среду выполнения и пакет SDK, но при запуске dotnet --info отображается только среда выполнения. Эта ситуация может быть связана с использованием двух разных источников пакетов. Встроенные веб-каналы пакетов Ubuntu 22.04 и Ubuntu 22.10 включают некоторые версии .NET, но не все, и вы также могли установить .NET из веб-каналов Майкрософт. Дополнительные сведения об устранении этой проблемы см. в статье "Устранение ошибок .NET, связанных с отсутствующими файлами в Linux".

Проблемы APT

В этом разделе содержатся сведения об распространенных ошибках, которые могут возникнуть при использовании APT для установки .NET.

Не удалось найти пакет

Внимание

Использование диспетчера пакетов для установки .NET из источника пакетов Microsoft поддерживает только архитектуру x64. Другие архитектуры, такие как Arm, не поддерживаются каналом пакетов Microsoft.

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

Не удалось найти \ Не удалось установить некоторые пакеты

Примечание.

Эта информация применяется только при установке .NET из репозитория пакетов Майкрософт.

Если появляется сообщение об ошибке, похожее на Не удалось найти пакет {dotnet-package} или Не удалось установить некоторые пакеты, выполните проведенные ниже команды.

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

  • {dotnet-package}
    Данный текстовый элемент обозначает устанавливаемый пакет .NET, например, aspnetcore-runtime-8.0. Это используется в следующей команде sudo apt-get install.

Сначала попробуйте очистить список пакетов.

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

Затем попробуйте установить .NET еще раз. Если проблема не решена, можно выполнить установку вручную с помощью приведенных ниже команд.

Если вы используете Ubuntu 23.10 или более поздней версии, попробуйте выполнить следующие команды:

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

Если вы используете версию Ubuntu до версии 23.10, попробуйте выполнить следующие команды:

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

Не удалось загрузить

При установке пакета .NET может появиться примерно такое сообщение об ошибке: Failed to fetch ... File has unexpected size ... Mirror sync in progress?. Эта ошибка может означать, что канал пакетов для .NET обновляется до более новых версий пакетов и вам следует повторить попытку позже. Во время обновления поток пакетов не должен быть недоступен более 30 минут. Если вы продолжаете получать эту ошибку через 30 минут, отправьте заявку о проблеме на адрес https://github.com/dotnet/core/issues.

Зависимости

Если для установки используется диспетчер пакетов, эти библиотеки устанавливаются автоматически. Но если вы вручную устанавливаете .NET или публикуете автономное приложение, необходимо установить эти зависимости для запуска приложения:

  • сертификаты удостоверяющего центра
  • libc6
  • libgcc1 (для 16.x и 18.x)
  • libgcc-s1 (для версии 20.x или более поздней версии)
  • libgssapi-krb5-2
  • libicu55 (для 16.x)
  • libicu60 (для 18.x)
  • libicu66 (для 20.x)
  • libicu70 (для 22.04)
  • libicu72 (для 23.10)
  • libicu74 (для 24.04 или более поздней версии)
  • liblttng-ust1 (для 22.x или более поздней версии)
  • libssl1.0.0 (для 16.x)
  • libssl1.1 (для 18.x, 20.x)
  • libssl3 (для версии 22.x или более поздней версии)
  • libstdc++6
  • libunwind8 (для 22.x или более поздней версии)
  • zlib1g

Зависимости можно установить с помощью apt install команды. В следующем фрагменте кода показано, как установить библиотеку zlib1g :

sudo apt install zlib1g

Если приложение .NET использует сборку System.Drawing.Common , необходимо установить libgdiplus . Дополнительные сведения см. в статье System.Drawing.Common, поддерживаемой только в Windows.

Вы можете установить последнюю версию libgdiplus , добавив репозиторий Mono в систему.

Следующие шаги