Ubuntu의 .NET 개요

이 문서에서는 Ubuntu에 .NET을 설치하는 방법을 설명합니다. Microsoft 패키지 리포지토리에는 Ubuntu에서 현재 지원되거나 이전에 지원되었던 모든 .NET 버전이 포함되어 있습니다. Ubuntu 22.04부터 .NET 일부 버전을 Ubuntu 패키지 피드에서 사용할 수 있습니다. 사용 가능한 버전에 관한 자세한 내용은 지원되는 배포 섹션을 참조하세요.

Warning

.NET 패키지를 소싱하는 데 단일 리포지토리를 선택하는 것이 좋습니다. 여러 패키지 리포지토리의 .NET 패키지를 혼합하면 앱이 특정 버전의 .NET을 확인하려고 할 때 문제가 발생하므로 혼합하지 않아야 합니다.

메서드 장점 단점
패키지 관리자
(Microsoft 피드)
  • 지원되는 버전은 언제든지 사용할 수 있습니다.
  • 패치는 즉시 사용할 수 있습니다.
  • 종속성이 포함되어 있습니다.
  • 쉽게 제거할 수 있습니다.
  • Microsoft 패키지 리포지토리 등록이 필요합니다.
  • 미리 보기 릴리스는 사용할 수 없습니다.
  • x64 Ubuntu만 지원합니다.
패키지 관리자
(Ubuntu 피드)
  • 일반적으로 최신 버전을 사용할 수 있습니다.
  • 패치는 즉시 사용할 수 있습니다.
  • 종속성이 포함되어 있습니다.
  • 쉽게 제거할 수 있습니다.
  • 사용 가능한 .NET 버전은 Ubuntu 버전에 따라 다릅니다.
  • 미리 보기 릴리스는 사용할 수 없습니다.
  • x64 Ubuntu만 지원합니다. (Arm64도 지원하는 Ubuntu 23.04 이상은 제외)
스크립트 \ 수동 추출
  • .NET이 설치되는 위치를 제어합니다.
  • 미리 보기 릴리스를 사용할 수 있습니다.
  • 업데이트를 수동으로 설치합니다.
  • 종속성을 수동으로 설치합니다.
  • 수동으로 제거합니다.

.NET 설치 방법 결정

Ubuntu 버전이 기본 제공 Ubuntu 피드를 통해 .NET을 지원하는 경우 Canonical에서 이러한 .NET 빌드에 대한 지원을 제공하며 다른 워크로드에 맞게 빌드를 최적화할 수 있습니다. Microsoft는 Microsoft 패키지 리포지토리 피드의 패키지에 대한 지원을 제공합니다.

다음 섹션을 사용하여 .NET을 설치하는 방법을 결정합니다.

Ubuntu 22.04 이상을 사용하고 있으며 .NET만 필요합니다

Ubuntu 피드를 통해 .NET를 설치합니다. 자세한 내용은 다음 페이지를 참조하세요.

Important

Canonical에서 제공하는 .NET SDK 버전은 항상 .1xx 기능 밴드에 속합니다. 최신 기능 밴드 릴리스를 사용하려면 Microsoft 피드를 사용하여 SDK를 설치합니다. Linux의 .NET 패키지 혼합 문서 내 정보를 검토하여 리포지토리 피드 간 전환이 미치는 영향을 이해해야 합니다.

Microsoft 리포지토리를 설치하여 다른 Microsoft 패키지(예: powershell, mdatp, mssql)를 사용하려는 경우 Microsoft 리포지토리에서 제공하는 .NET 패키지의 우선순위를 해제해야 합니다. 패키지의 우선순위를 해제하는 방법에 대한 지침은 내 Linux 배포판에서 제공하는 .NET 패키지를 사용하려고 합니다를 참조하세요.

Ubuntu 22.04 이전 버전을 사용하고 있습니다

버전별 Ubuntu 페이지의 지침을 사용합니다.

Ubuntu 버전에서 지원되는 .NET 버전에 관한 자세한 내용은 지원되는 배포 섹션을 검토하세요. 지원되지 않는 버전을 설치하려는 경우 Microsoft 패키지 리포지토리 등록을 참조하세요.

다른 Microsoft 패키지(예: powershell, mdatp, mssql)를 사용하고 있습니다

Ubuntu 버전이 기본 제공 Ubuntu 피드를 통해 .NET을 지원하는 경우 .NET을 설치할 피드를 결정해야 합니다. 지원되는 배포 섹션에서는 패키지 피드에서 사용할 수 있는 .NET 버전을 나열한 표를 제공합니다.

Ubuntu 피드에서 .NET 패키지를 소싱하려는 경우 Microsoft 리포지토리에서 제공하는 .NET 패키지의 우선순위를 낮춰야 합니다. 패키지의 우선순위를 낮추는 방법에 대한 지침은 내 Linux 배포판에서 .NET 패키지를 제공하며, 이것을 사용하려고 합니다를 참조하세요.

.NET 앱을 만들려고 합니다

런타임에 사용하는 것과 동일한 패키지 소스를 SDK에 사용합니다. 예를 들어 Ubuntu 22.04와 .NET 6을 사용하지만 .NET 7은 사용하지 않는 경우 기본 제공 Ubuntu 피드를 통해 .NET을 설치하는 것이 좋습니다. 하지만 Ubuntu 22.04에 대해 Canonical에서 제공하지 않는 .NET 7로 이동하는 경우 .NET을 제거한 다음 Microsoft 패키지 리포지토리를 이용하여 다시 설치해야 합니다. 자세한 내용은 Microsoft 패키지 리포지토리로 등록 및 설치를 참조하세요. 또한 .NET 설치 방법 결정 섹션에서 다른 제안을 검토할 수 있습니다.

컨테이너, 클라우드 또는 연속 통합 시나리오에서 .NET 앱을 실행하려고 합니다

사용자의 Ubuntu 버전에서 필요한 .NET 버전을 제공하는 경우 기본 제공 피드에서 설치합니다. 그렇지 않은 경우 Microsoft 패키지 리포지토리를 등록하고 해당 리포지토리에서 .NET을 설치합니다. 지원되는 배포 섹션에서 정보를 확인하세요.

원하는 .NET 버전을 사용할 수 없는 경우 dotnet-install 스크립트를 사용해 보세요.

내 Ubuntu 배포판에 원하는 .NET 버전이 포함되어 있지 않거나 지원되지 않는 .NET 버전이 필요합니다

APT 및 Microsoft 패키지 리포지토리를 사용하는 것이 좋습니다. 자세한 내용은 Microsoft 패키지 리포지토리로 등록 및 설치 섹션을 참조하세요.

미리 보기 버전을 설치하려고 합니다

다음 방법 중 하나로 .NET을 설치합니다.

APT를 사용하고 싶지 않습니다

자동 설치를 원하는 경우 Linux 설치 스크립트를 사용합니다.

.NET 설치 환경을 완전히 제어하려면 tarball을 다운로드하여 수동으로 .NET을 설치합니다. 자세한 내용은 수동 설치를 참조하세요.

Arm 기반 CPU를 사용하고 있습니다

다음 방법 중 하나로 .NET을 설치합니다.

지원되는 배포

다음 표는 현재 지원되는 .NET 릴리스와 해당 릴리스가 지원되는 Ubuntu 버전의 목록입니다. 각 링크는 해당 버전의 Ubuntu에 .NET을 설치하는 방법에 대한 특정 지침이 포함된 특정 Ubuntu 버전 페이지로 이동합니다.

Ubuntu 지원되는 .NET 버전 Ubuntu 피드에서 사용 가능 Microsoft 피드에서 사용 가능
24.04 8.0 8.0 None
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

Microsoft 패키지 리포지토리 등록

Microsoft 패키지 리포지토리에는 사용자의 Ubuntu 버전에서 이전에 지원되었거나 현재 지원되는 모든 .NET 버전이 포함되어 있습니다. Ubuntu 버전에서 .NET 패키지를 제공하는 경우 Ubuntu 패키지의 우선순위를 낮추고 Microsoft 리포지토리를 사용해야 합니다. 패키지의 우선순위를 낮추는 방법에 대한 지침은 내 Linux 배포판에서 제공하지 않는 .NET 버전이 필요합니다를 참조하세요.

Important

Microsoft 패키지 리포지토리는 x64 아키텍처를 대상으로 하는 .NET 패키지만 지원합니다. Arm와 같은 다른 아키텍처는 설치 프로그램 스크립트 또는 수동 설치와 같은 다른 방법으로 .NET을 설치해야 합니다.

미리 보기 릴리스는 Microsoft 패키지 리포지토리에서 사용할 수 없습니다. 자세한 내용은 미리 보기 버전 설치를 참조하세요.

주의

하나의 리포지토리만 사용하여 모든 .NET 설치를 관리하는 것이 좋습니다. 이전에 Ubuntu 리포지토리에서 .NET을 설치한 경우 .NET 패키지 시스템을 정리하고 Ubuntu 피드를 무시하도록 APT를 구성해야 합니다. 이 작업을 수행하는 방법에 대한 자세한 내용은 내 Linux 배포판에서 제공하지 않는 .NET 버전이 필요합니다를 참조하세요.

몇 가지 명령을 사용하여 APT 설치를 완료할 수 있습니다. .NET을 설치하기 전에 다음 명령을 실행하여 신뢰 키 목록에 Microsoft 패키지 서명 키를 추가하고 패키지 리포지토리를 추가합니다.

터미널을 열고 다음 명령을 실행합니다.

# 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 변수에 올바른 값이 할당되지 않아 wget 명령에 대한 URI가 유효하지 않을 수 있습니다. 이 변수는 패키지를 가져올 특정 Ubuntu 버전(예: 22.10 또는 23.04)에 매핑됩니다.

웹 브라우저에서 https://packages.microsoft.com/config/ubuntu/(으)로 이동하여 $repo_version 값으로 사용할 수 있는 Ubuntu 버전을 확인할 수 있습니다.

.NET 설치

Microsoft 패키지 리포지토리 등록했거나 Ubuntu의 기본 피드 버전이 .NET 패키지를 지원하는 경우 패키지 관리자를 통해 sudo apt install <package-name> 명령을 사용하여 .NET을 설치할 수 있습니다. <package-name>을(를) 설치하려는 .NET 패키지의 이름으로 바꿉니다. 예를 들어 .NET SDK 8.0을 설치하려면 sudo apt install dotnet-sdk-8.0 명령을 사용합니다. 다음 표는 현재 지원되는 .NET 패키지 목록입니다.

Product Type Package(패키지)
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이 설치된 후 실행되는 방식에 영향을 줍니다. 자세한 내용은 .NET SDK 및 CLI 환경 변수를 참조하세요.

.NET 제거

패키지 관리자를 통해 .NET을 설치한 경우 apt-get remove 명령을 사용하여 동일한 방법으로 제거합니다.

sudo apt-get remove dotnet-sdk-6.0

자세한 내용은 .NET 제거를 참조하세요.

미리 보기 버전 설치

.NET의 미리 보기 및 릴리스 후보 버전은 패키지 리포지토리에서 사용할 수 없습니다. 다음 방법 중 하나로 .NET의 미리 보기 및 릴리스 후보를 설치할 수 있습니다.

미리 보기 버전 제거

패키지 관리자를 사용하여 .NET 설치를 관리하는 경우 미리 보기 릴리스를 이전에 설치했으면 충돌이 발생할 수 있습니다. 패키지 관리자는 미리 보기가 아닌 릴리스를 이전 버전의 .NET으로 해석할 수 있습니다. 미리 보기가 아닌 릴리스를 설치하려면 먼저 미리 보기 버전을 제거합니다. .NET 제거에 대한 자세한 내용은 .NET 런타임 및 SDK를 제거하는 방법을 참조하세요.

APT를 사용하여 .NET 업데이트

패키지 관리자를 통해 .NET을 설치한 경우 apt upgrade 명령을 사용하여 패키지를 업그레이드할 수 있습니다. 예를 들어 다음 명령은 dotnet-sdk-7.0 패키지를 최신 버전으로 업그레이드합니다.

sudo apt update
sudo apt upgrade dotnet-sdk-7.0

.NET을 설치한 후 Linux 배포를 업그레이드한 경우 Microsoft 패키지 리포지토리를 다시 구성해야 할 수 있습니다. 현재 배포 버전의 설치 명령을 실행하여 .NET 업데이트에 적합한 패키지 리포지토리로 업그레이드합니다.

문제 해결

Ubuntu 22.04부터 .NET의 일부만 사용 가능해 보이는 상황이 발생할 수 있습니다. 예를 들어 런타임과 SDK를 설치했지만 dotnet --info을(를) 실행할 때 런타임만 나열됩니다. 이 상황은 서로 다른 두 패키지 소스를 사용하는 경우와 관련이 있을 수 있습니다. 기본 제공 Ubuntu 22.04 및 Ubuntu 22.10 패키지 피드에는 .NET 전체 버전이 아닌 일부 버전이 포함되어 있으며, 사용자가 Microsoft 피드에서 .NET을 설치했을 수도 있습니다. 이 문제를 해결하는 방법에 관한 자세한 내용은 Linux에서 누락된 파일과 관련된 .NET 오류 문제 해결을 참조하세요.

APT 문제

이 섹션에서는 APT를 사용하여 .NET을 설치할 때 발생할 수 있는 일반적인 오류에 대한 정보를 제공합니다.

패키지를 찾을 수 없음

Important

패키지 관리자를 사용하여 Microsoft 패키지 피드에서 .NET을 설치하면 x64 아키텍처만 지원합니다. Arm과 같은 다른 아키텍처는 Microsoft 패키지 피드에서 지원되지 않습니다.

패키지 관리자 없이 .NET을 설치하는 방법에 대한 자세한 내용은 다음 문서 중 하나를 참조하세요.

찾을 수 없음\일부 패키지를 설치할 수 없음

참고 항목

이 정보는 Microsoft 패키지 피드에서 .NET이 설치된 경우에만 적용됩니다.

{netcore-package} 패키지를 찾을 수 없음 또는 일부 패키지를 설치할 수 없음과 같은 오류 메시지가 표시되는 경우 다음 명령을 실행합니다.

다음 명령 집합에는 두 개의 자리 표시자가 있습니다.

  • {dotnet-package}
    aspnetcore-runtime-8.0과 같이 설치 중인 .NET 패키지를 나타냅니다. 다음 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}

23.10 이전의 Ubuntu 버전을 사용하는 경우 다음 명령을 시도합니다.

# 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 런타임 구성 스위치를 설정해야 합니다.

시스템에 Mono 리포지토리를 추가하여 최신 버전의 libgdiplus를 설치할 수 있습니다.

다음 단계