Обзор .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) |
|
|
Диспетчер пакетов (веб-канал Майкрософт) |
|
|
Скрипт \ Извлечение вручную |
|
|
Решите, как установить .NET
Если ваша версия Ubuntu поддерживает .NET через встроенный или внутренний веб-канал Ubuntu .NET, поддержка этих сборок .NET предоставляется каноническим, а сборки могут быть оптимизированы для разных рабочих нагрузок. Корпорация Майкрософт предоставляет поддержку пакетов в веб-канале репозитория пакетов Майкрософт.
Используйте следующие разделы, чтобы определить, как установить .NET:
- Я использую Ubuntu 22.04 или более поздней версии, и мне нужен только .NET
- Я использую версию Ubuntu до 22.04
- Я использую другие пакеты Майкрософт, например
powershell
,mdatp
илиmssql
- Я хочу создать приложение .NET
- Я хочу запустить приложение .NET в контейнере, облаке или сценарии непрерывной интеграции
- Мой дистрибутив Ubuntu не включает нужную версию .NET, или мне нужна не поддерживается версия .NET.
- Я хочу установить предварительную версию
- Я не хочу использовать APT
- Я использую ЦП на основе Arm
- Я использую платформу IBM System Z
Я использую Ubuntu 22.04 или более поздней версии, и мне нужен только .NET
Установите .NET через веб-канал Ubuntu. Дополнительные сведения см. на следующих страницах:
- Установите .NET в Ubuntu 24.04.
- Установите .NET в Ubuntu 23.10.
- Установите .NET в Ubuntu 23.04.
- Установите .NET в Ubuntu 22.04.
Внимание
Версии пакета SDK для .NET, предлагаемые Каноническим, всегда находятся в группе функций .1xx. Если вы хотите использовать более новый выпуск группы компонентов, используйте веб-канал Майкрософт для установки пакета SDK. Убедитесь, что вы просматриваете сведения в пакете .NET в статье Linux , чтобы понять последствия переключения между веб-каналами репозитория.
Если вы собираетесь установить репозиторий Майкрософт для использования других пакетов Майкрософт, таких как powershell
mdatp
, или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, 6.0 | 8.0 | 7.0, 6.0 | нет |
23.10 | 8.0, 6.0 | 8.0, 7.0, 6.0 | нет | 8.0, 7.0, 6.0 |
22.04 (LTS) | 8.0, 6.0 | 8.0, 7.0, 6.0 | нет | 8.0, 7.0, 6.0, 3.1 |
20.04 (LTS) | 8.0, 6.0 | нет | нет | 8.0, 7.0. 6.0, 5.0, 3.1, 2.1 |
18.04 (LTS) | 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 7
- .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 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
дистрибутиву (например, при $VERSION_ID
сопоставлении с конкретной версией Ubuntu, 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
После регистрации репозитория пакетов Майкрософт или если веб-каналы 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 |
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-8.0
пакет с последней версией:
sudo apt update
sudo apt upgrade dotnet-sdk-8.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 или более поздней версии, попробуйте выполнить следующие команды:
# 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 или публикуете автономное приложение, необходимо установить эти зависимости для запуска приложения:
- 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 в систему.