Scoop 介紹及用法
簡介 Scoop 及使用 Scoop 切換 JDK 版本

Linux 有 apt, yum、MacOS 有 Homebrew、Windows 有 Chocolatey

但今天要介紹 Windows 環境的另外一個 command line 套件管理工具 Scoop

在 Windows 環境,比較有名的 command line 套件管理工具是 Chocolatey,但今天要介紹的 Scoop 有一項 Chocolatey 沒辦法做到的好處,就是可以切換 Path Environment Variable

安裝

Scoop 的安裝非常簡單,打開 Administrator (系統管理員) 的 Powershell,並輸入以下指令即可安裝

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
irm get.scoop.sh | iex

使用

Scoop 既然是套件管理工具,那重要的工作就是安裝套件,而 Scoop 有支援什麼套件固然可以直接 Google 的到,但其實也不是沒有方式直接在 command line 搜尋

例如想安裝 7zip 壓縮工具,可以在 powershell 當中這樣搜尋

scoop search 7zip

應該會出現如下的結果

Scoop Search Result

第一行說明代表這次結果是在本地的 bucket 當中搜尋到的,表格當中的 Name 就是套件名稱,之後所有操作都要輸入 Name 當中顯示的完整名稱,Source 就是指套件所在的 bucket

這邊如果你不確定是哪個套件名稱,也可以用以下指令看一下簡介,例如

scoop info 7zip

Scoop Info Result

這時候確定要安裝哪一個套件名稱,這時候就可以輸入以下指令做安裝

scoop install 7zip

這時候 console 會顯示經過一連串的操作,最後看到這一行就代表安裝成功

Scoop Installation Result

如果要解除安裝也是簡單輸入以下指令

scoop uninstall 7zip

Scoop Uninstallation Result

如果想查詢本地安裝了哪些套件

scoop list

Scoop Local Installed App Result

也可以搜尋本地安裝的套件名稱

scoop list maven

Scoop Search Local Installed App Result

最後如果要更新某個套件,可以輸入

scoop update maven

Bucket

接著這邊要了解的是 Scoop 並不像 Chocolatey 的搜尋是在網路上對所有套件做即時搜尋,Scoop 有 bucket 的概念,每個 bucket 都像是一組套件的資料夾

在安裝 Scoop 時就會預設安裝 main bucket,裡面應該預設就有一千多種常用套件,而 Scoop 的搜尋也是優先在本地已安裝的 bucket 裡面做搜尋,如果本地的 bucket 搜尋不到,才會到網路上其他已知 (known) 的 bucket 中做搜尋

Scoop Remote Search Result

所以首先想要確認本地安裝了哪些 bucket 就輸入以下指令

scoop bucket list

Scoop Local Installed Bucket Result

如果想查詢有哪些已知的 bucket (本地及遠端)

scoop bucket known

Scoop Known Bucket Result

但這個列表也許已過時,這時候可以輸入以下指令更新 Scoop 後,再做查詢

scoop update

Scoop Update Result

如果想安裝指定 bucket 到本地

scoop bucket add games

Scoop Add Bucket Result

移除 bucket

scoop bucket rm games

以上差不多就是 Scoop 常見的基本用法

JDK 切換

有一種情境我們會安裝某一種套件,但要同時安裝多種版本,使用的時候需要切換不同的版本,例如安裝 JDK,可能會需要同時安裝 1.8、11 甚至 17,但使用的時候會需要按照需要執行的專案來切換不同版本的環境變數

在 Unix-like 的環境,大多都可以使用 SDKMAN,但偏偏 SDKMAN 原生並不支援在 Powershell 操作,只能透過 Cygwin 等方式 workaround,但同時也限制環境變數只在 Cygwin 當中生效,而無法使用 Powershell 操作

如果要在 Powershell 中操作,以往只能安裝好 JDK 後,再設定環境變數 JAVA_HOME 指定到安裝好的位置,然後每次要使用不同 JDK 版本,就要手動修改 JAVA_HOME 環境變數,或輸入不太好記的指令去操作,如果 JDK 版本更新,又要整個重頭再來,相當的麻煩

但 Scoop 本身提供了相當方便的指令,可以如 SDKMAN 一樣簡單的安裝多種不同版本的 JDK,並且在需要的時候非常簡單的切換不同的版本

首先我們可以先安裝幾種不同版本的 JDK

scoop bucket add java
scoop install zulu-jdk
scoop install zulu11-jdk

Scoop List Local JDK Result

此時我們本地已安裝了 11 及 20 兩種版本的 JDK,在安裝的時候就會自動設定好環境變數

Java Version after JDKs Installation

JDK Position after JDKs Installation

接著如果我們要切換使用 JDK 20

scoop reset zulu-jdk

Scoop Reset JDK Version Result

Java Version after Scoop Reset

JDK Position after Scoop Reset

這時我們就可以看到 Java 的版本被改變了

Reference


Last modified on 2023-06-20