Бөлісу құралы:


Руководство по принятию решений по установке .NET на Ubuntu

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

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

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

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

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

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

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

Следующие версии .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 до версии 22.04 или более поздней версии? Сначала рассмотрите возможность удаления .NET.

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

Определите, как установить .NET

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

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

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

Метод Плюсы Минусы
Диспетчер пакетов
(встроенный
Веб-канал Ubuntu)
  • Обычно доступна последняя версия.
  • Исправления доступны сразу.
  • Включены зависимости.
  • Простое удаление.
  • Доступные .NET версии поддерживаются для периода поддержки конкретной версии Ubuntu.
  • Поддержка платформ IBM System Z и Power для .NET 8 и более новых версий.
  • Недоступно для 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.
  • Доступны предварительные выпуски.
  • Установка обновлений вручную.
  • Вручную установите зависимости.
  • Удаление вручную.

Используйте следующие разделы, чтобы определить, как установить .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

Используйте инструкции в разделе, специфичном для версии, установите .NET SDK или .NET Runtime на Ubuntu.

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

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

Если версия Ubuntu поддерживает .NET через репозитории Ubuntu, необходимо решить, какой репозиторий использовать для установки .NET. Раздел Supported distributions предоставляет таблицу, в которой перечислены версии .NET, доступные в каналах поставки пакетов.

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

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

Используйте те же источники пакетов для пакета SDK, что и для среды выполнения. Рекомендуется установить .NET через веб-канал Ubuntu. Однако если вы хотите установить .NET из другого источника (например, репозиторий пакетов Microsoft для доступа к более высоким группам компонентов пакета 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 или Power

Начиная с .NET 8 на Ubuntu 22.04, Canonical поддерживает .NET для платформ IBM System Z и Power. Эта поддержка будет продолжаться для каждого .NET релиза.

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

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

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

Это важно

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

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

Репозиторий пакетов Ubuntu .NET Backports предоставляет версии .NET, недоступные в встроенном репозитории Ubuntu. Canonical поддерживает пакеты, содержащиеся в данном репозитории, и обеспечивает поддержку, которая не превышает срок поддержки от Microsoft или периода поддержки конкретной версии Ubuntu.

Этот репозиторий пакетов поддерживается в Ubuntu 24.04 LTS (Noble Numbat) и Ubuntu 22.04 LTS (Jammy Jellyfish). Раздел Supported distributions содержит таблицу, в которой перечислены доступные в канале пакетов версии .NET. Дополнительные сведения см. в разделе репозиторий пакетных обратных портов Ubuntu .NET.

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

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

Регистрация репозитория пакетов backports для Ubuntu .NET

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

sudo add-apt-repository ppa:dotnet/backports

Замечание

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

Отмена регистрации репозитория пакетов обратных портов Ubuntu .NET

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

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

Это важно

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

Команда 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 и использовать репозиторий компании Microsoft. Для инструкций по изменению приоритета пакетов см. в разделе "Мне нужна версия .NET, которая не предоставляется моим дистрибутивом Linux".

Это важно

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

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

Осторожность

Рекомендуется использовать только один репозиторий для управления всеми .NET установками. Если вы ранее установили .NET с репозиторием Ubuntu, необходимо очистить систему пакетов .NET и настроить APT, чтобы игнорировать веб-каналы Ubuntu. Дополнительные сведения о том, как это сделать, см. в статье I требуется версия .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 10.0, используйте команду sudo apt install dotnet-sdk-10.0. В следующей таблице перечислены поддерживаемые пакеты .NET (которые могут различаться в зависимости от версии Ubuntu):

Продукт Тип Пакет
10.0 ASP.NET Core Режим выполнения aspnetcore-runtime-10.0
10.0 .NET Режим выполнения dotnet-runtime-10.0
10.0 .NET Пакет SDK dotnet-sdk-10.0
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

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

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

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

sudo apt update
sudo apt upgrade dotnet-sdk-10.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. Другие архитектуры, такие как Arm64, не поддерживаются репозиторием пакетов Microsoft. Используйте каналы Ubuntu или вручную установите .NET. Будьте осторожны с проблемами путаницы пакетов при использовании нескольких источников данных. Дополнительные сведения см. в разделе Перепутанные пакеты .NET на Linux.

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

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

Замечание

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

Если появляется сообщение об ошибке, похожее на Не удалось найти пакет {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)
  • libicu76 (для 25.04 или более поздней версии)
  • libssl1.0.0 (для 16.x)
  • libssl1.1 (для 18.x, 20.x)
  • libssl3 (для версии 22.x или более поздней версии)
  • libstdc++6
  • tzdata
  • zlib1g

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

sudo apt install zlib1g

Дальнейшие шаги