Ubuntu에 .NET SDK 또는 .NET 런타임 설치

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

경고

앱이 특정 버전의 .NET을 해결하려고 할 때 문제가 발생하므로 .NET용 Microsoft 및 Ubuntu 패키지 리포지토리를 모두 사용하지 않는 것이 좋습니다.

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

.NET을 설치하는 방법 결정

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

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

Ubuntu 22.10을 사용하고 있으며 .NET 6.0 또는 .NET 7.0만 필요합니다.

Ubuntu 피드를 통해 .NET을 설치합니다. 자세한 내용은 Ubuntu 22.10에 .NET 설치를 참조하세요.

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

Ubuntu 22.04를 사용하고 있으며 .NET 6.0만 필요합니다.

Ubuntu 피드를 통해 .NET을 설치합니다. 자세한 내용은 Ubuntu 22.04에 .NET 설치를 참조하세요.

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

Ubuntu 22.04를 사용하고 있으며 .NET 7.0이 필요합니다.

.NET 7은 기본 Ubuntu 패키지 피드에 제공되지 않습니다. Microsoft 패키지 리포지토리를 추가한 다음 .NET을 설치해야 합니다. 자세한 내용은 Microsoft 패키지 리포지토리에 등록 및 설치 섹션을 참조하세요.

22.04 이전 버전의 Ubuntu를 사용하고 있습니다.

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

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

, mdatp또는 같은 powershell다른 Microsoft 패키지를 사용하고 있습니다.mssql

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

Ubuntu 피드에서 .NET 패키지를 원본으로 사용하려면 Microsoft 리포지토리에서 제공하는 .NET 패키지의 우선 순위를 해제해야 합니다. 패키지의 우선 순위를 해제하는 방법에 대한 지침은 내 Linux 배포판에서 .NET 패키지를 제공하고 사용하려는 경우를 참조하세요.

.NET 앱을 만들고 싶습니다.

런타임에 사용하는 것과 동일한 패키지 원본을 SDK에 사용합니다. 예를 들어 .NET 7이 아닌 Ubuntu 22.04 및 .NET 6을 사용하는 경우 기본 제공 Ubuntu 피드를 통해 .NET을 설치하는 것이 좋습니다. 그러나 Ubuntu 22.04용 Canonical에서 제공하지 않는 .NET 7로 이동하는 경우 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 피드에서 사용 가능
22.10 7.0, 6.0 7.0, 6.0 7.0, 6.0, 3.1
22.04(LTS) 7.0, 6.0 6.0 7.0, 6.0, 3.1
20.04(LTS) 7.0, 6.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 버전이 필요했음을 참조하세요.

중요

패키지 관리자 설치는 x64 아키텍처에서만 지원됩니다. Arm과 같은 다른 아키텍처는 설치 관리자 스크립트 또는 수동 설치와 같은 다른 수단으로 .NET을 설치해야 합니다.

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

주의

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

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

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

# Get Ubuntu version
declare repo_version=$(if command -v lsb_release &> /dev/null; then lsb_release -r -s; else grep -oP '(?<=^VERSION_ID=).+' /etc/os-release | tr -d '"'; fi)

# Download Microsoft signing key and repository
wget https://packages.microsoft.com/config/ubuntu/$repo_version/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

.NET 설치

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

제품 형식 패키지
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 앱을 만들지 않는 경우 .NET 런타임을 포함하고 ASP.NET Core 앱을 지원하므로 ASP.NET Core 런타임을 설치합니다.

일부 enviornment 변수는 .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을 설치할 때 발생할 수 있는 일반적인 오류에 대한 정보를 제공합니다.

패키지를 찾을 수 없음

중요

패키지 관리자 설치는 x64 아키텍처에서만 지원됩니다. Arm과 같은 다른 아키텍처는 Snap, 설치 관리자 스크립트 또는 수동 이진 설치와 같은 다른 수단으로 .NET을 설치해야 합니다.

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

\ 일부 패키지를 찾을 수 없습니다.

참고

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

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

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

  • {dotnet-package}
    aspnetcore-runtime-7.0과 같이 설치 중인 .NET 패키지를 나타냅니다. 다음 sudo apt-get install 명령에 사용됩니다.

  • {os-version}
    이는 현재 배포 버전을 나타냅니다. 아래의 wget 명령에서 사용됩니다. 배포 버전은 Ubuntu의 20.04 또는 Debian의 10과 같은 숫자 값입니다.

먼저, 다음 패키지 목록을 제거해 봅니다.

sudo dpkg --purge packages-microsoft-prod && sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get update

그런 다음, .NET을 다시 설치해 봅니다. 이 방법으로 문제가 해결되지 않으면 다음 명령을 사용하여 수동 설치를 실행할 수 있습니다.

sudo apt-get install -y gpg
wget -O - https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor -o microsoft.asc.gpg
sudo mv microsoft.asc.gpg /etc/apt/trusted.gpg.d/
wget https://packages.microsoft.com/config/ubuntu/{os-version}/prod.list
sudo mv prod.list /etc/apt/sources.list.d/microsoft-prod.list
sudo chown root:root /etc/apt/trusted.gpg.d/microsoft.asc.gpg
sudo chown root:root /etc/apt/sources.list.d/microsoft-prod.list
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
  • libgcc-s1(22.x의 경우)
  • libgssapi-krb5-2
  • libicu55(16.x용)
  • libicu60(18.x용)
  • libicu66(20.x용)
  • libicu70(22.04용)
  • libicu71(22.10의 경우)
  • liblttng-ust1(22.x의 경우)
  • libssl1.0.0(16.x의 경우)
  • libssl1.1(18.x용, 20.x용)
  • libssl3(22.x의 경우)
  • libstdc++6
  • libunwind8(22.x의 경우)
  • zlib1g

.NET 앱이 System.Drawing.Common 어셈블리를 사용하는 경우 libgdiplus도 설치해야 합니다. System.Drawing.Common은 Linux에서 더 이상 지원되지 않으므로 .NET 6에서만 작동하며 런타임 구성 스위치를 System.Drawing.EnableUnixSupport 설정해야 합니다.

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

다음 단계