選單
GSS 技術部落格
在這個園地裡我們將從技術、專案管理、客戶對談面和大家分享我們多年的經驗,希望大家不管是喜歡或是有意見,都可以回饋給我們,讓我們有機會和大家對話並一起成長!
若有任何問題請來信:gss_crm@gss.com.tw
5 分鐘閱讀時間 (1089 個字)

Windows 套件管理工具 - Scoop

scoop

前言
 

首先官網列出幾點建議那些人可以試試看 Scoop 。

簡而言之, Scoop 、 Chocolatey 或 WinGet 這類工具可以讓你像是使用 Homebrew 或 apt-get 一樣在 Windows 上管理安裝的軟體。在建立新的開發環境時,不需要四處下載每個軟體的安裝檔。維護舊環境可以清楚知道那些軟體需要更新。

不同於 Chocolatey , Scoop 預設安裝位置在 home 目錄,所以安裝軟體時不會有討人厭的 UAC 。另外一個優點就是 Scoop 對環境變數的管理,可以方便開發者快速切換軟體版本。

安裝 

在 PowerShell 執行以下兩則命令就能安裝


> Set-ExecutionPolicy RemoteSigned -scope CurrentUser
> iwr -useb get.scoop.sh | iex 

Bucket 

 Scoop 原理是透過這些社群維護稱做 bucket 的 JSON 檔案,裡頭會包含每個軟體安裝時會需要從哪裡下載安裝檔,以及在安裝、移除時會需要執行的動作。

例如預設的 main 多蒐集常用開發工具且不含 GUI 的軟體,例如 Python 、 R 、 Git 、 7Zip 、 Ant 、 Maven 等等。可以在每個 JSON 檔案中檢查下載的來源、版本及雜湊值,例如 Maven

執行 scoop bucket known 看到官方維護的其他 bucket ,可以使用 scoop bucket add 可以加入搜尋範圍。

  • extras ,用來蒐集不符合 main bucket 規則,多數是包含有 GUI 的工具。
  • java ,蒐集各種不同發行版的 JDK 、 JRE ,像是 Oracle Java 、 OpenJDK 、 AdoptOpenJDK
  • version ,由於 main 只維護最新正式版本的軟體,有時需要舊版本可以從這裡安裝。例如最新版本的 Python 是 3.9 ,當需要 3.7 時可以透過這個 bucket 安裝並切換。
另外也能建立 git 倉庫來維護自己的 bucket ,像是 GitHub 的 CLI 工具可以透過加入這個 bucket 來安裝、更新。可以在 awesome-scoop 找到更多社群維護的 bucket 。

搜尋
 

例如今天需要安裝 Python ,可以透過 scoop search python 指令來搜尋各個 bucket 名稱或執行檔有 python 的所有項目。接著使用 scoop install python 就會安裝在 main bucket 的 Python 3.9.5 了。

> scoop search python
'extras' bucket:
    anaconda3 (2020.11) --> includes 'python.exe'
    miniconda3 (4.9.2) --> includes 'python.exe'

'main' bucket:
    python (3.9.5)
    winpython (3.8.9.0)

'versions' bucket:
    anaconda2 (2019.10) --> includes 'python.exe'
    miniconda2 (4.8.3) --> includes 'python.exe'
    python-alpha (3.10.0b1)
    python-beta (3.8.6rc1)
    python27-beta (2.7.18rc1)
    python27 (2.7.18)
    ... 

環境變數 

 預設所有軟體會安裝在 ~/scoop 中,除非單獨的軟體有特殊需求,否則 Scoop 會透過 ~/scoop/shims 中管理執行檔,所以使用者環境變數只需要有這條路徑。

切換版本 

 Scoop 對於環境變數的管理帶來一個很方便的功能,就是能方便快速的切換同一軟體的不同版本。以下圖舉例,安裝 JDK 8 、11 兩個版本之後,當要在兩個版本之間切換時只需要使用 scoop reset 就能管理開發環境使用的 Java 版本而不需要重頭安裝。

> java -version
openjdk version "1.8.0_262"
> scoop reset adopt11-openj9
Resetting adopt11-openj9 (11.0.8-10-0.21.0).
Linking ~\scoop\apps\adopt11-openj9\current => ~\scoop\apps\adopt11-openj9\11.0.8-10-0.21.0
> java -version
openjdk version "11.0.8" 2020-07-14 

資料遺失問題 

 所有安裝的軟體預設放在 ~/scoop/apps 中,每個版本會獨立一個目錄並把最新的版本 link 到 current 路徑。所以要小心某些軟體會將資料儲存在安裝目錄中,例如 Firefox 。當使用 scoop update 更新時新版本會安裝在新的目錄,如果不小心執行 scoop cleanup 將舊版本移除會連帶讓資料遺失。

後記 

Scoop 能幫助習慣 CLI 工具的開發者建立工作環境,目前 main 和 extra 兩個 bucket 已經包含大多數常見的工具,以下舉幾個很實用或很酷的例子

  •  著名的 UNIX 工具集 BusyBox ,像上面截圖用的 which 就包含在裡面。
  • 7-Zip ,開源的資料壓縮工具。(別再用過期的 WinRAR 了啦)
  • LibreOffice ,每次檢查更新很方便。
  • Microsoft PowerToys ,一個 Windows 的強化工具集,保哥介紹過早期的版本。
  • Wox ,可以用 Python 客製化功能的應用程式啟動器
  • PuTTY 、 WinSCP ,連線工具。
  • DbGate 、 DBeaver ,開源的 DB client 。
希望使用 Windows 的大家會喜歡
深入淺出 Ansible #2 - 安裝篇 - Linux(CentOS)
PWA - Web App Manifest

相關文章

 

評論

尚無評論
已經注冊了? 這裡登入
Guest
2024/04/18, 週四

Captcha 圖像