在Server Core進行Python 3安裝
同事想在 Server Core 上安裝 Python 3,但看到 Server Core 純 command-line 畫面嚇到,不知如何安裝軟體。其實我也不會,但我有變通的方式。哈哈。
Step 1 - 進行 PowerShell 組態
Get-ExecutionPolicy -List
可以取得目前狀態清單:
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser Undefined
LocalMachine RemoteSigned
PowerShell 執行權限設計有以下種類,以下引用微軟文件的說明:
- Restricted Does not load configuration files or run scripts. Restricted is the default execution policy.
- AllSigned Requires that all scripts and configuration files be signed by a trusted publisher, including scripts that you write on the local computer.
- RemoteSigned Requires that all scripts and configuration files downloaded from the Internet be signed by a trusted publisher.
- Unrestricted Loads all configuration files and runs all scripts. If you run an unsigned script that was downloaded from the Internet, you are prompted for permission before it runs.
- Bypass Nothing is blocked and there are no warnings or prompts.
- Undefined Removes the currently assigned execution policy from the current scope. This parameter will not remove an execution policy that is set in a Group Policy scope.
cd ~
Set-ExecutionPolicy -Scope CurrentUser
在輸入提示的地方,我們輸入 RemoteSigned。
Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser RemoteSigned
LocalMachine RemoteSigned
Step 2 - 安裝 Chocolatey
Chocolatey 是一個套件管理器,讓我們可以透過簡單的指令來去管理套件的搜尋、安裝、更新與移除。這不正是我們 Server Core 上想要的功能嗎。 😉
$script = New-Object Net.WebClient
$script | Get-Member
可以查看 .NET 的 WebClient 成員方法有那些。
TypeName: System.Net.WebClient
Name MemberType Definition
---- ---------- ----------
...
DownloadData Method byte[] DownloadData(string address), byte[] DownloadData(uri address)
DownloadDataAsync Method void DownloadDataAsync(uri address), void DownloadDataAsync(uri address, System.Object userToken)
DownloadDataTaskAsync Method System.Threading.Tasks.Task[byte[]] DownloadDataTaskAsync(string address), System.Threading.Tasks.Task[byt...
DownloadFile Method void DownloadFile(string address, string fileName), void DownloadFile(uri address, string fileName)
DownloadFileAsync Method void DownloadFileAsync(uri address, string fileName), void DownloadFileAsync(uri address, string fileName,...
DownloadFileTaskAsync Method System.Threading.Tasks.Task DownloadFileTaskAsync(string address, string fileName), System.Threading.Tasks...
DownloadString Method string DownloadString(string address), string DownloadString(uri address)
DownloadStringAsync Method void DownloadStringAsync(uri address), void DownloadStringAsync(uri address, System.Object userToken)
DownloadStringTaskAsync Method System.Threading.Tasks.Task[string] DownloadStringTaskAsync(string address), System.Threading.Tasks.Task[s...
...
進行連線與讀取測試:
$script.DownloadString("https://chocolatey.org/install.ps1")
如果上述語法成功讀取,那麼我們就能來安裝 Chocolatey 套件管理器:
iwr https://chocolatey.org/install.ps1 -UseBasicParsing | iex
執行請求可以選擇 iwr
或 Invoke-WebRequest
cmdlet,然後將結果交給 iex
或 Invoke-Expression
cmdlet 執行。
成功之後可以更新一下 Chocolatey:
choco upgrade chocolatey
Step 3 — 安裝 Python 3
接下來就簡單至極:
choco install -y python3
注意一下安裝訊息中有一小段說明,需要重開當前的 shell 才能重新讀取新的環境路徑(PATH),或執行 refreshenv
指令。
python -V
確認 Python 安裝是否成功。
如果環境路徑(PATH)沒有加入 Python 的安裝路徑,那麼可以執行 $ENV:PATH="$ENV:PATH;c:\Python36"
來手動加入。
這樣未來就能透過 Chocolatey 的幫忙在 Server Core 來進行軟體套件的管理。當然,前提是軟體有發行至 Chocolatey 上。
沒有留言:
張貼留言
感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。