Обзор .NET в Ubuntu

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

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

Рекомендуется выбрать один из веб-каналов Ubuntu или Майкрософт для исходных пакетов .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+.
  • Требуется регистрация репозитория пакетов Майкрософт.
  • Предварительные версии выпусков недоступны.
  • Поддерживается только x64 Ubuntu.
Скрипт \ Извлечение вручную
  • Управление установкой .NET.
  • Доступны предварительные выпуски.
  • Установка обновлений вручную.
  • Вручную установите зависимости.
  • Удаление вручную.

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

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

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

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

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

Внимание

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

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

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

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

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

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

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

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

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

Используйте те же источники пакетов для пакета SDK, что и для среды выполнения. Рекомендуется установить .NET через веб-канал Ubuntu. Если вы хотите установить .NET из другого источника (например , репозиторий пакетов Майкрософт для доступа к более высоким группам компонентов ПАКЕТА), удалите .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, канонический поддерживает .NET для платформы IBM System Z. Каноническая работа по расширению поддержки для других версий .NET и Ubuntu.

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

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

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

Ubuntu Поддерживаемые версии .NET Доступно в
встроенный веб-канал Ubuntu
Доступно в
Внутренние порты .NET
Веб-канал Ubuntu
Доступно в
Веб-канал Майкрософт
24.04 (LTS) 8.0, 7.0, 6.0 8.0 7.0, 6.0 нет
23.10 8.0, 7.0, 6.0 8.0, 7.0, 6.0 нет 8.0, 7.0, 6.0
22.04 (LTS) 8.0, 7.0, 6.0 8.0, 7.0, 6.0 нет 8.0, 7.0, 6.0, 3.1
20.04 (LTS) 8.0, 7.0, 6.0 нет нет 8.0, 7.0. 6.0, 5.0, 3.1, 2.1
18.04 (LTS) 7.0, 6.0 нет нет 7.0. 6.0, 5.0, 3.1, 2.2, 2.1
16.04 (LTS) 6,0 нет нет 6.0, 5.0, 3.1, 3.0, 2.2, 2.1, 2.0

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

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

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

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

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

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

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

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

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

sudo add-apt-repository ppa:dotnet/backports

Совет

Не нужно вызывать apt update. Эта add-apt-repository команда выполняется по умолчанию.

Примечание.

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

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

Если вы больше не хотите использовать пакеты из репозитория пакетов серверной части 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

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

Репозиторий пакетов Майкрософт содержит все версии .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
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. Скорее всего $repo_version , переменная не будет назначена правильному значению, что делает URI для команды недопустимым wget . Эта переменная сопоставляется с конкретной версией Ubuntu, для которой требуется получить пакеты, например 22.04 или 23.10.

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

Установка .NET

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

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

Если вы хотите установить неподдерживаемую версию .NET, проверка раздел поддерживаемых дистрибутивов, чтобы узнать, доступна ли эта версия .NET. Затем замените версию .NET, которую необходимо установить. Например, чтобы установить ASP.NET Core 8.0, используйте имя aspnetcore-runtime-8.0пакета.

Совет

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

Некоторые переменные среды влияют на запуск .NET после его установки. Дополнительные сведения см. в разделе sdk для .NET и переменных среды CLI.

Удаление .NET

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

sudo apt-get remove dotnet-sdk-6.0

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

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

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

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

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

Обновление .NET с помощью APT

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

sudo apt update
sudo apt upgrade dotnet-sdk-7.0

Совет

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

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

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

Проблемы APT

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

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

Внимание

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

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

# 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

# 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 или публикуете автономное приложение, необходимо установить эти зависимости для запуска приложения:

  • ca-certificates
  • 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 больше не поддерживается в Linux, это работает только в .NET 6 и требует установки System.Drawing.EnableUnixSupport параметра конфигурации среды выполнения.

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

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