dotnet-install 스크립트 참조

이름

dotnet-install.ps1 | dotnet-install.sh - .NET SDK 및 공유 런타임을 설치하는 데 사용되는 스크립트입니다.

개요

Windows:

dotnet-install.ps1 [-Architecture <ARCHITECTURE>] [-AzureFeed]
    [-Channel <CHANNEL>] [-DryRun] [-FeedCredential]
    [-InstallDir <DIRECTORY>] [-JSonFile <JSONFILE>]
    [-NoCdn] [-NoPath] [-ProxyAddress] [-ProxyBypassList <LIST_OF_URLS>]
    [-ProxyUseDefaultCredentials] [-Quality <QUALITY>] [-Runtime <RUNTIME>]
    [-SkipNonVersionedFiles] [-UncachedFeed] [-KeepZip] [-ZipPath <PATH>] [-Verbose]
    [-Version <VERSION>]

Get-Help ./dotnet-install.ps1

Linux/macOS:

dotnet-install.sh  [--architecture <ARCHITECTURE>] [--azure-feed]
    [--channel <CHANNEL>] [--dry-run] [--feed-credential]
    [--install-dir <DIRECTORY>] [--jsonfile <JSONFILE>]
    [--no-cdn] [--no-path] [--quality <QUALITY>]
    [--runtime <RUNTIME>] [--runtime-id <RID>]
    [--skip-non-versioned-files] [--uncached-feed] [--keep-zip] [--zip-path <PATH>] [--verbose]
    [--version <VERSION>]

dotnet-install.sh --help

또한 bash 스크립트는 PowerShell 스위치를 읽으므로 Linux/macOS 시스템에서 스크립트와 함께 PowerShell 스위치를 사용할 수 있습니다.

설명

dotnet-install 스크립트는 .NET CLI 및 공유 런타임을 포함하는 .NET SDK의 비관리자 설치를 수행합니다. 다음과 같은 두 가지 스크립트가 있습니다.

참고 항목

.NET은 원격 분석 데이터를 수집합니다. 옵트아웃하는 방법에 관한 자세한 내용은 .NET SDK 원격 분석을 참조하세요.

용도

이 스크립트는 다음과 같은 CI(연속 통합) 시나리오에 사용하기 위한 것입니다.

  • 사용자 조작 및 관리자 권한 없이 SDK를 설치해야 합니다.

  • SDK 설치를 여러 CI 실행 간에 유지할 필요가 없습니다.

    일반적인 이벤트 시퀀스는 다음과 같습니다.

    • CI가 트리거됩니다.
    • CI에서 이러한 스크립트 중 하나를 사용하여 SDK를 설치합니다.
    • CI에서 작업을 완료하고 SDK 설치를 비롯해 임시 데이터를 지웁니다.

개발 환경을 설정하거나 앱을 실행하려면 이러한 스크립트가 아니라 설치 관리자를 사용합니다.

안정적인 버전의 스크립트를 사용하는 것이 좋습니다.

스크립트 원본은 dotnet/install-scripts GitHub 리포지토리에 있습니다.

스크립트 동작

두 스크립트의 동작은 동일합니다. 스크립트는 CLI 빌드 저장 위치에서 ZIP/tarball 파일을 다운로드하여 기본 위치나 -InstallDir|--install-dir로 지정한 위치에 설치를 계속 진행합니다.

기본적으로 설치 스크립트는 SDK를 다운로드하고 설치합니다. 공유 런타임만 가져오려는 경우 -Runtime|--runtime 인수를 지정합니다.

기본적으로 스크립트는 현재 세션에 대한 $PATH에 설치 위치를 추가합니다. -NoPath|--no-path 인수를 지정하여 이 기본 동작을 재정의합니다. 스크립트는 DOTNET_ROOT 환경 변수를 설정하지 않습니다.

Important

스크립트는 사용자의 PATH 환경 변수에 설치 위치를 추가하지 않으므로 수동으로 추가해야 합니다.

스크립트를 실행하기 전에 필요한 모든 종속성을 설치하세요.

-Version|--version 인수를 사용하여 특정 버전을 설치할 수 있습니다. 버전은 2.1.0과 같이 세 부분으로 구성된 버전 번호로 지정해야 합니다. 버전을 지정하지 않은 경우 스크립트는 latest 버전을 설치합니다.

설치 스크립트는 Windows에서 레지스트리를 업데이트하지 않습니다. 단지 압축된 이진 파일을 다운로드하여 폴더에 복사합니다. 레지스트리 키 값을 업데이트하려면 .NET 설치 관리자를 사용합니다.

옵션

  • -Architecture|--architecture <ARCHITECTURE>

    설치할 .NET 이진 파일의 아키텍처입니다. 가능한 값은 <auto>, amd64, x64, x86, arm64, arm, s390xppc64le입니다. 기본값은 현재 실행 중인 OS 아키텍처를 나타내는 <auto>입니다.

  • -AzureFeed|--azure-feed

    내부 전용입니다. 다른 스토리지를 사용하여 SDK 보관 파일을 다운로드할 수 있습니다. 이 매개 변수는 --no-cdn이 false인 경우에만 사용됩니다. 기본값은 https://dotnetcli.azureedge.net/dotnet입니다.

  • -Channel|--channel <CHANNEL>

    설치에 대한 소스 채널을 지정합니다. 가능한 값은 다음과 같습니다.

    • STS: 최신 표준 기간 지원 릴리스
    • LTS: 가장 최근의 장기 지원 릴리스
    • 특정 릴리스를 나타내는 A.B 형식의 두 부분으로 된 버전입니다(예: 3.1 또는 6.0).
    • 특정 SDK 릴리스(예: 6.0.1xx 또는 6.0.2xx)를 나타내는 A.B.Cxx 형식의 세 부분으로 구성된 버전입니다. 5\.0 릴리스부터 사용할 수 있습니다.

    version 매개 변수는 latest 이외의 버전이 사용되는 경우 channel 매개 변수를 재정의합니다.

    기본값은 LTS입니다. .NET 지원 채널에 대한 자세한 내용은 .NET 지원 정책 페이지를 참조하세요.

  • -DryRun|--dry-run

    설정하면 스크립트에서 설치를 수행하지는 않지만, 대신 현재 요청된 버전의 .NET CLI를 일관되게 설치하기 위해 사용할 명령줄을 표시합니다. 예를 들어 latest 버전을 지정하면 빌드 스크립트에서 이 명령을 결정적으로 사용할 수 있도록 특정 버전에 대한 링크를 표시합니다. 또한 직접 설치하거나 다운로드하는 것을 선호하는 경우 이진 파일 위치를 표시합니다.

  • -FeedCredential|--feed-credential

    Azure 피드에 추가할 쿼리 문자열로 사용됩니다. public이 아닌 Blob 스토리지 계정을 사용하도록 URL을 변경할 수 있습니다.

  • --help

    스크립트에 대한 도움말을 출력합니다. Bash 스크립트에만 적용됩니다. PowerShell의 경우 Get-Help ./dotnet-install.ps1을 사용합니다.

  • -InstallDir|--install-dir <DIRECTORY>

    설치 경로를 지정합니다. 디렉터리가 없을 경우 만듭니다. 기본값은 %LocalAppData%\Microsoft\dotnet(Windows) 또는 $HOME/.dotnet(Linux/macOS)입니다. 이진 파일은 이 디렉터리에 바로 배치됩니다.

  • -JSonFile|--jsonfile <JSONFILE>

    SDK 버전을 확인하는 데 사용되는 global.json 파일의 경로를 지정합니다. global.json 파일에 sdk:version의 값이 있어야 합니다.

  • -NoCdn|--no-cdn

    Azure CDN(Content Delivery Network)에서 다운로드할 수 없도록 설정하고 캐시되지 않은 피드를 바로 사용합니다.

  • -NoPath|--no-path

    설정하면 설치 폴더를 현재 세션의 경로로 내보내지 않습니다. 기본적으로 스크립트는 PATH를 수정하므로 설치 후 바로 .NET CLI를 사용할 수 있습니다.

  • -ProxyAddress

    설정된 경우 설치 관리자에서 웹 요청을 만들 때 프록시를 사용합니다. (Windows에만 유효함)

  • -ProxyBypassList <LIST_OF_URLS>

    ProxyAddress를 사용하여 설정하는 경우 프록시를 우회하는 쉼표로 구분된 URL 목록을 제공합니다. (Windows에만 유효함)

  • -ProxyUseDefaultCredentials

    설정하면 설치 관리자가 프록시 주소를 사용할 때 현재 사용자의 자격 증명을 사용합니다. (Windows에만 유효함)

  • -Quality|--quality <QUALITY>

    채널에서 지정된 품질의 최신 빌드를 다운로드합니다. 가능한 값은 daily, signed, validated, previewGA입니다. 대부분의 사용자는 daily, preview 또는 GA 특성을 사용해야 합니다.

    다양한 품질 값은 설치된 SDK 또는 런타임 릴리스 프로세스의 다양한 단계를 나타냅니다.

    • daily: SDK 또는 런타임의 최신 빌드입니다. 매일 만들어지며 테스트되지 않습니다. 프로덕션 용도로는 권장되지 않지만 제품에 병합된 후 즉시 특정 기능이나 수정 사항을 테스트하는 데 사용할 수 있는 경우가 많습니다. 이러한 빌드는 dotnet/installer 리포지토리에서 가져온 것이므로 dotnet/sdk에서 수정 사항을 찾고 있다면 코드가 일별 빌드에 나타나기 전에 SDK에서 설치 프로그램으로 이동하고 병합될 때까지 기다려야 합니다.
    • signed: 유효성 검사되지 않았거나 공개적으로 릴리스되지 않은 Microsoft 서명 빌드입니다. 서명된 빌드는 유효성 검사, 미리 보기 및 GA 릴리스의 후보입니다. 이 품질 수준은 공개적으로 사용하려고 한 것이 아닙니다.
    • validated: 일부 내부 테스트가 완료되었지만 아직 미리 보기 또는 GA로 릴리스되지 않은 빌드입니다. 이 품질 수준은 공개적으로 사용하려고 한 것이 아닙니다.
    • preview: 공용 사용을 목적으로 하는 다음 버전의 .NET의 월간 공용 릴리스입니다. 프로덕션 용도로는 권장되지 않습니다. 사용자가 릴리스 전에 새로운 주 버전을 실험하고 테스트할 수 있도록 하기 위한 것입니다.
    • GA: .NET SDK 및 런타임의 최종 안정적인 릴리스입니다. 공용 사용 및 프로덕션 지원을 목적으로 합니다.

    --quality 옵션은 --channel과 결합해서만 작동하지만 STSLTS 채널에는 적용할 수 없으며 해당 채널 중 하나가 사용되는 경우 무시됩니다.

    SDK 설치의 경우 A.B 또는 A.B.Cxx 형식의 channel 값을 사용합니다. 런타임 설치의 경우 A.B 형식의 channel을 사용합니다.

    versionquality 매개 변수를 둘 다 사용하지는 마세요. quality를 지정하면 스크립트는 자체적으로 적절한 버전을 결정합니다.

    5\.0 릴리스부터 사용할 수 있습니다.

  • -Runtime|--runtime <RUNTIME>

    전체 SDK가 아닌 공유 런타임만 설치합니다. 가능한 값은 다음과 같습니다.

    • dotnet: Microsoft.NETCore.App 공유 런타임입니다.
    • aspnetcore: Microsoft.AspNetCore.App 공유 런타임입니다.
    • windowsdesktop: Microsoft.WindowsDesktop.App 공유 런타임입니다.
  • --os <OPERATING_SYSTEM>

    도구를 설치할 운영 체제를 지정합니다. 가능한 값은 osx, macos, linux, linux-musl, freebsd입니다.

    매개 변수는 선택 사항이며 스크립트로 검색된 운영 체제를 재정의해야 하는 경우에만 사용해야 합니다.

  • -SharedRuntime|--shared-runtime

    참고

    이 매개 변수는 더 이상 사용되지 않으며 스크립트의 이후 버전에서 제거될 수 있습니다. 대신 -Runtime|--runtime 옵션을 사용하는 것이 좋습니다.

    전체 SDK가 아니라 공유 런타임 비트만 설치합니다. 이 옵션은 -Runtime|--runtime dotnet을 지정하는 것과 같습니다.

  • -SkipNonVersionedFiles|--skip-non-versioned-files

    dotnet.exe와 같은 버전이 없는 파일이 있을 경우 해당 파일의 설치를 건너뜁니다.

  • -UncachedFeed|--uncached-feed

    내부 전용입니다. 다른 스토리지를 사용하여 SDK 보관 파일을 다운로드할 수 있습니다. 이 매개 변수는 --no-cdn이 true인 경우에만 사용됩니다.

  • -KeepZip|--keep-zip

    설정하면 다운로드한 SDK 보관이 설치 후에도 유지됩니다.

  • -ZipPath|--zip-path <PATH>

설정한 경우 다운로드한 SDK 보관이 지정된 경로에 저장됩니다.

  • -Verbose|--verbose

    진단 정보를 표시합니다.

  • -Version|--version <VERSION>

    특정 빌드 버전을 나타냅니다. 가능한 값은 다음과 같습니다.

    • latest: 채널의 최신 빌드입니다(-Channel 옵션과 함께 사용됨).
    • 특정 빌드 버전을 나타내는 X.Y.Z 형식의 세 부분으로 구성된 버전이며 -Channel 옵션을 대체합니다. 예를 들어 2.0.0-preview2-006120을 참조하십시오.

    지정하지 않으면 -Version은 기본값인 latest로 설정됩니다.

  • 기본 위치에 최신 LTS(장기 지원) 버전을 설치합니다.

    Windows:

    ./dotnet-install.ps1 -Channel LTS
    

    macOS/Linux:

    ./dotnet-install.sh --channel LTS
    
  • 6\.0.1xx SDK의 최신 미리 보기 버전을 지정된 위치에 설치합니다.

    Windows:

    ./dotnet-install.ps1 -Channel 6.0.1xx -Quality preview -InstallDir C:\cli
    

    macOS/Linux:

    ./dotnet-install.sh --channel 6.0.1xx --quality preview --install-dir ~/cli
    
  • 6.0.0 버전의 공유 런타임을 설치합니다.

    Windows:

    ./dotnet-install.ps1 -Runtime dotnet -Version 6.0.0
    

    macOS/Linux:

    ./dotnet-install.sh --runtime dotnet --version 6.0.0
    
  • 스크립트를 얻어 회사 프록시 뒤에 6.0.2 버전을 설치합니다(Windows에만 해당).

    Invoke-WebRequest 'https://dot.net/v1/dotnet-install.ps1' -Proxy $env:HTTP_PROXY -ProxyUseDefaultCredentials -OutFile 'dotnet-install.ps1';
    ./dotnet-install.ps1 -InstallDir '~/.dotnet' -Version '6.0.2' -Runtime 'dotnet' -ProxyAddress $env:HTTP_PROXY -ProxyUseDefaultCredentials;
    
  • 스크립트 가져와서 .NET CLI one-liner 예제를 설치합니다.

    Windows:

    # Run a separate PowerShell process because the script calls exit, so it will end the current PowerShell session.
    &powershell -NoProfile -ExecutionPolicy unrestricted -Command "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; &([scriptblock]::Create((Invoke-WebRequest -UseBasicParsing 'https://dot.net/v1/dotnet-install.ps1'))) <additional install-script args>"
    

    macOS/Linux:

    curl -sSL https://dot.net/v1/dotnet-install.sh | bash /dev/stdin <additional install-script args>
    

환경 변수 설정

.NET을 수동으로 설치해도 시스템 전체에 환경 변수가 추가되지 않으며 일반적으로 .NET이 설치된 세션에서만 작동합니다. 운영 체제에 대해 다음 두 가지 환경 변수를 설정해야 합니다.

  • DOTNET_ROOT

    이 변수는 .NET이 설치된 폴더(예: Linux 및 macOS용 $HOME/.dotnet, Windows용 PowerShell의 $HOME\.dotnet)로 설정됩니다.

  • PATH

    이 변수에는 DOTNET_ROOT 폴더와 사용자의 .dotnet/tools 폴더가 모두 포함되어야 합니다. 일반적으로 Linux 및 macOS에서는 $HOME/.dotnet/tools, Windows의 PowerShell에서는 $HOME\.dotnet\tools입니다.

Linux 및 macOS의 경우 echo 명령을 사용하여 셸 프로필에서 .bashrc와 같은 변수를 설정합니다.

echo 'export DOTNET_ROOT=$HOME/.dotnet' >> ~/.bashrc
echo 'export PATH=$PATH:$DOTNET_ROOT:$DOTNET_ROOT/tools' >> ~/.bashrc

제거

제거 스크립트가 없습니다. .NET을 수동으로 제거하는 방법에 대한 자세한 내용은 .NET 런타임 및 SDK를 제거하는 방법을 참조하세요.

dotnet-install.sh의 서명 유효성 검사

서명 유효성 검사는 스크립트의 신뢰성과 무결성을 보장하는 데 도움이 되는 중요한 보안 측정값입니다. 스크립트의 서명을 확인하면 해당 스크립트가 변조되지 않았으며 신뢰할 수 있는 원본에서 제공되었는지 확인할 수 있습니다.

다음은 GPG를 사용하여 dotnet-install.sh 스크립트의 신뢰성을 확인하는 방법에 대한 단계별 가이드입니다.

  1. GPG 설치: GPG(GNU Privacy Guard)는 데이터 암호화 및 서명을 위한 무료 오픈 소스 도구입니다. GPG 웹 사이트의 지침에 따라 설치할 수 있습니다.
  2. 공개 키 가져오기: 설치 스크립트 공개 키 파일을 다운로드한 다음 gpg --import dotnet-install.asc 명령을 실행하여 GPG 인증 키로 가져옵니다.
  3. 서명 파일 다운로드: bash 스크립트의 서명 파일은 https://dot.net/v1/dotnet-install.sig에서 다운로드할 수 있습니다. wget 또는 curl과 같은 도구를 사용하여 다운로드할 수 있습니다.
  4. 서명 확인: bash 스크립트의 서명을 확인하려면 gpg --verify dotnet-install.sig dotnet-install.sh 명령을 실행합니다. 그러면 dotnet-install.sig 파일의 서명과 비교하여 dotnet-install.sh 파일의 서명을 확인합니다.
  5. 결과 확인: 서명이 유효하면 Good signature from "Microsoft DevUXTeamPrague <devuxteamprague@microsoft.com>"이 포함된 메시지가 표시됩니다. 이는 스크립트가 변조되지 않았으며 신뢰할 수 있음을 의미합니다.

환경 준비

GPG 설치 및 공개 키 가져오기는 일회성 작업입니다.

sudo apt install gpg
wget https://dot.net/v1/dotnet-install.asc
gpg --import dotnet-install.asc

성공하면 다음과 같은 출력이 표시됩니다.

gpg: directory '/home/<user>/.gnupg' created
gpg: keybox '/home/<user>/.gnupg/pubring.kbx' created
gpg: /home/<user>/.gnupg/trustdb.gpg: trustdb created
gpg: key B9CF1A51FC7D3ACF: public key "Microsoft DevUXTeamPrague <devuxteamprague@microsoft.com>" imported
gpg: Total number processed: 1
gpg:               imported: 1

다운로드 및 확인

가져온 키를 사용하면 이제 스크립트와 서명을 다운로드한 다음 스크립트가 서명과 일치하는지 확인할 수 있습니다.

wget https://dot.net/v1/dotnet-install.sh
wget https://dot.net/v1/dotnet-install.sig
gpg --verify dotnet-install.sig dotnet-install.sh

성공하면 다음과 같은 출력이 표시됩니다.

gpg: Signature made <datetime>
gpg:                using RSA key B9CF1A51FC7D3ACF
gpg: Good signature from "Microsoft DevUXTeamPrague <devuxteamprague@microsoft.com>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 2B93 0AB1 228D 11D5 D7F6  B6AC B9CF 1A51 FC7D 3ACF

경고는 인증 키의 공개 키를 신뢰하지 않지만 스크립트는 여전히 확인되었음을 의미합니다. 확인 명령에서 반환된 종료 코드는 성공을 나타내는 0이어야 합니다.

참고 항목