참고 항목
설치 스크립트의 동작이 변경되었습니다. 새 네트워크 위치에서 .NET을 다운로드합니다. 자세한 내용은 중요: .NET 설치 링크가변경됩니다.
이름
dotnet-install.ps1
|
dotnet-install.sh
- .NET SDK 및 공유 런타임을 설치하는 데 사용되는 스크립트입니다.
개요
윈도우:
dotnet-install.ps1 [-Architecture <ARCHITECTURE>] [-AzureFeed]
[-Channel <CHANNEL>] [-DryRun] [-FeedCredential]
[-InstallDir <DIRECTORY>] [-JSonFile <JSONFILE>]
[-NoPath] [-ProxyAddress] [-ProxyBypassList <LIST_OF_URLS>]
[-ProxyUseDefaultCredentials] [-Quality <QUALITY>] [-Runtime <RUNTIME>]
[-SkipNonVersionedFiles] [-UncachedFeed] [-KeepZip] [-ZipPath <PATH>] [-Verbose]
[-Version <VERSION>]
Get-Help ./dotnet-install.ps1
리눅스/맥OS:
dotnet-install.sh [--architecture <ARCHITECTURE>] [--azure-feed]
[--channel <CHANNEL>] [--dry-run] [--feed-credential]
[--install-dir <DIRECTORY>] [--jsonfile <JSONFILE>]
[--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의 비관리자 설치를 수행합니다. 다음과 같은 두 가지 스크립트가 있습니다.
- Windows에서 작동하는 PowerShell 스크립트 설치 지침은 Windows에 설치를 참조하세요.
- Linux/macOS에서 작동하는 bash 스크립트 설치 지침은 Linux에 설치 및 macOS에 설치를 참조하세요.
참고 항목
.NET은 원격 분석 데이터를 수집합니다. 옵트아웃하는 방법에 관한 자세한 내용은 .NET SDK 원격 분석을 참조하세요.
용도
이 스크립트는 다음과 같은 CI(연속 통합) 시나리오에 사용하기 위한 것입니다.
사용자 조작 및 관리자 권한 없이 SDK를 설치해야 합니다.
SDK 설치를 여러 CI 실행 간에 유지할 필요가 없습니다.
일반적인 이벤트 시퀀스는 다음과 같습니다.
- CI가 트리거됩니다.
- CI에서 이러한 스크립트 중 하나를 사용하여 SDK를 설치합니다.
- CI에서 작업을 완료하고 SDK 설치를 비롯해 임시 데이터를 지웁니다.
개발 환경을 설정하거나 앱을 실행하려면 이러한 스크립트가 아니라 설치 관리자를 사용합니다.
추천 버전
안정적인 버전의 스크립트를 사용하는 것이 좋습니다.
- Bash(Linux/macOS): https://dot.net/v1/dotnet-install.sh
- PowerShell(Windows): https://dot.net/v1/dotnet-install.ps1
스크립트 원본은 dotnet/install-scripts GitHub 리포지토리에 있습니다.
스크립트 동작
두 스크립트의 동작은 동일합니다. 스크립트는 CLI 빌드 저장 위치에서 ZIP/tarball 파일을 다운로드하여 기본 위치나 -InstallDir|--install-dir
로 지정한 위치에 설치를 계속 진행합니다.
기본적으로 설치 스크립트는 SDK를 다운로드하고 설치합니다. 공유 런타임만 가져오려는 경우 -Runtime|--runtime
인수를 지정합니다.
기본적으로 스크립트는 현재 세션에 대한 $PATH에 설치 위치를 추가합니다.
-NoPath|--no-path
인수를 지정하여 이 기본 동작을 재정의합니다. 스크립트는 DOTNET_ROOT
환경 변수를 설정하지 않습니다.
중요합니다
스크립트는 사용자의 PATH
환경 변수에 설치 위치를 추가하지 않으므로 수동으로 추가해야 합니다.
스크립트를 실행하기 전에 운영 체제가 지원되는지 확인합니다. 자세한 내용은 Windows, Linux 및 macOS에 .NET 설치를 참조하세요.
-Version|--version
인수를 사용하여 특정 버전을 설치할 수 있습니다. 버전은 2.1.0
과 같이 세 부분으로 구성된 버전 번호로 지정해야 합니다. 버전을 지정하지 않은 경우 스크립트는 latest
버전을 설치합니다.
설치 스크립트는 Windows에서 레지스트리를 업데이트하지 않습니다. 단지 압축된 이진 파일을 다운로드하여 폴더에 복사합니다. 레지스트리 키 값을 업데이트하려면 .NET 설치 관리자를 사용합니다.
옵션
-Architecture|--architecture <ARCHITECTURE>
설치할 .NET 이진 파일의 아키텍처입니다. 가능한 값은
<auto>
, ,amd64
,x64
x86
,arm64
arm
,s390x
ppc64le
및 .riscv64
기본값은 현재 실행 중인 OS 아키텍처를 나타내는<auto>
입니다.-AzureFeed|--azure-feed
내부 전용입니다. 다른 스토리지를 사용하여 SDK 보관 파일을 다운로드할 수 있습니다. 기본값은
https://builds.dotnet.microsoft.com/dotnet
입니다.-Channel|--channel <CHANNEL>
설치에 대한 소스 채널을 지정합니다. 가능한 값은 다음과 같습니다.
-
STS
: 최신 표준 기간 지원 릴리스 -
LTS
: 가장 최근의 장기 지원 릴리스 - 특정 릴리스를 나타내는 A.B 형식의 두 부분으로 된 버전입니다(예:
3.1
또는8.0
). - 특정 SDK 릴리스(예: 8.0.1xx 또는 8.0.2xx)를 나타내는 A.B.Cxx 형식의 세 부분으로 구성된 버전입니다. 5\.0 릴리스부터 사용할 수 있습니다.
version
매개 변수는channel
이외의 버전이 사용되는 경우latest
매개 변수를 재정의합니다.기본값은
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
의 값이 있어야 합니다.-NoPath|--no-path
설정하면 설치 폴더를 현재 세션의 경로로 내보내지 않습니다. 기본적으로 스크립트는 PATH를 수정하므로 설치 후 바로 .NET CLI를 사용할 수 있습니다.
-ProxyAddress
설정된 경우 설치 관리자에서 웹 요청을 만들 때 프록시를 사용합니다. (Windows에만 유효함)
-ProxyBypassList <LIST_OF_URLS>
ProxyAddress
를 사용하여 설정하는 경우 프록시를 우회하는 쉼표로 구분된 URL 목록을 제공합니다. (Windows에만 유효함)-ProxyUseDefaultCredentials
설정하면 설치 관리자가 프록시 주소를 사용할 때 현재 사용자의 자격 증명을 사용합니다. (Windows에만 유효함)
-Quality|--quality <QUALITY>
채널에서 지정된 품질의 최신 빌드를 다운로드합니다. 가능한 값은 다음과
daily
preview
GA
같습니다.다양한 품질 값은 설치된 SDK 또는 런타임 릴리스 프로세스의 다양한 단계를 나타냅니다.
-
daily
: SDK 또는 런타임의 최신 빌드입니다. 매일 만들어지며 테스트되지 않습니다. 프로덕션 용도로는 권장되지 않지만 제품에 병합된 후 즉시 특정 기능이나 수정 사항을 테스트하는 데 사용할 수 있는 경우가 많습니다. 이러한 빌드는dotnet/installer
리포지토리에서 가져온 것이므로dotnet/sdk
에서 수정 사항을 찾고 있다면 코드가 일별 빌드에 나타나기 전에 SDK에서 설치 프로그램으로 이동하고 병합될 때까지 기다려야 합니다. -
preview
: 공용 사용을 목적으로 하는 다음 버전의 .NET의 월간 공용 릴리스입니다. 프로덕션 용도로는 권장되지 않습니다. 사용자가 릴리스 전에 새로운 주 버전을 실험하고 테스트할 수 있도록 하기 위한 것입니다. -
GA
: .NET SDK 및 런타임의 최종 안정적인 릴리스입니다. 공용 사용 및 프로덕션 지원을 목적으로 합니다.
--quality
옵션은--channel
과 결합해서만 작동하지만STS
및LTS
채널에는 적용할 수 없으며 해당 채널 중 하나가 사용되는 경우 무시됩니다.SDK 설치의 경우
channel
또는A.B
형식의A.B.Cxx
값을 사용합니다. 런타임 설치의 경우channel
형식의A.B
을 사용합니다.version
및quality
매개 변수를 둘 다 사용하지는 마세요.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 보관 파일을 다운로드할 수 있습니다. 이 매개 변수는
-AzureFeed|--azure-feed
덮어씁니다.-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(장기 지원) 버전을 설치합니다.
윈도우:
./dotnet-install.ps1 -Channel LTS
맥OS/리눅스:
./dotnet-install.sh --channel LTS
6\.0.1xx SDK의 최신 미리 보기 버전을 지정된 위치에 설치합니다.
윈도우:
./dotnet-install.ps1 -Channel 6.0.1xx -Quality preview -InstallDir C:\cli
맥OS/리눅스:
./dotnet-install.sh --channel 6.0.1xx --quality preview --install-dir ~/cli
6.0.0 버전의 공유 런타임을 설치합니다.
윈도우:
./dotnet-install.ps1 -Runtime dotnet -Version 6.0.0
맥OS/리눅스:
./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 예제를 설치합니다.
윈도우:
# 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>"
맥OS/리눅스:
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
스크립트의 신뢰성을 확인하는 방법에 대한 단계별 가이드입니다.
- GPG 설치: GPG(GNU Privacy Guard)는 데이터 암호화 및 서명을 위한 무료 오픈 소스 도구입니다. GPG 웹 사이트의 지침에 따라 설치할 수 있습니다.
-
공개 키 가져오기: 설치 스크립트 공개 키 파일을 다운로드한 다음
gpg --import dotnet-install.asc
명령을 실행하여 GPG 인증 키로 가져옵니다. -
서명 파일 다운로드: bash 스크립트의 서명 파일은
https://dot.net/v1/dotnet-install.sig
에서 다운로드할 수 있습니다.wget
또는curl
과 같은 도구를 사용하여 다운로드할 수 있습니다. -
서명 확인: bash 스크립트의 서명을 확인하려면
gpg --verify dotnet-install.sig dotnet-install.sh
명령을 실행합니다. 그러면dotnet-install.sh
파일의 서명과 비교하여dotnet-install.sig
파일의 서명을 확인합니다. -
결과 확인: 서명이 유효하면
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
이어야 합니다.
참고 항목
.NET