Обзор .NET в Ubuntu

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

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

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

Способ Плюсы Минусы
Диспетчер пакетов
(веб-канал Майкрософт)
  • Поддерживаемые версии всегда доступны.
  • Исправления доступны правильно.
  • Включены зависимости.
  • Простое удаление.
  • Требуется регистрация репозитория пакетов Майкрософт.
  • Предварительные версии выпусков недоступны.
  • Поддерживается только x64 Ubuntu.
Диспетчер пакетов
(веб-канал Ubuntu)
  • Обычно доступна последняя версия.
  • Исправления доступны правильно.
  • Включены зависимости.
  • Простое удаление.
  • Доступные версии .NET зависят от версии Ubuntu.
  • Предварительные версии выпусков недоступны.
  • Поддерживается только x64 Ubuntu. (За исключением Ubuntu 23.04+, который также поддерживает Arm64)
Скрипт \ Извлечение вручную
  • Управление установкой .NET.
  • Доступны предварительные выпуски.
  • Установка обновлений вручную.
  • Вручную установите зависимости.
  • Удаление вручную.

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

Если ваша версия Ubuntu поддерживает .NET через встроенный веб-канал Ubuntu, поддержка этих сборок .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, что и для среды выполнения. Например, если вы используете Ubuntu 22.04 и .NET 6, но не .NET 7, рекомендуется установить .NET через встроенный веб-канал Ubuntu. Однако если вы переходите к .NET 7, который не предоставляется Каноническим для Ubuntu 22.04, удалите .NET и переустановите его с помощью репозитория пакетов Майкрософт. Дополнительные сведения см. в разделе "Регистрация и установка" в репозитории пакетов Майкрософт. Кроме того, ознакомьтесь с другими предложениями в разделе "Решить, как установить .NET ".

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

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

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

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

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

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

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

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

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

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

Я использую ЦП на основе Arm

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

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

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

Ubuntu Поддерживаемые версии .NET Доступно в веб-канале Ubuntu Доступно в веб-канале Майкрософт
24.04 8.0 8.0 нет
23.10 8.0, 7.0, 6.0 8.0, 7.0, 6.0 8.0, 7.0, 6.0
23.04 8.0, 7.0, 6.0 7.0, 6.0 8.0, 7.0, 6.0
22.04 (LTS) 8.0, 7.0, 6.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 больше не поддерживается с этой версией.

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

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

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

Репозиторий пакетов Майкрософт содержит все версии .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.10 или 23.04.

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

Установка .NET

После регистрации репозитория пакетов Майкрософт или если ваша версия веб-канала Ubuntu по умолчанию поддерживает пакет .NET, вы можете установить .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 2.1, используйте имя aspnetcore-runtime-2.1пакета.

Совет

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

  • 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)
  • libicu71 (для 22.10)
  • libicu72 (для 23.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 в систему.

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