Scoop 自定義安裝及知識點
本文列舉了Windows下的Scoop包管理器的各種使用技巧和相關知識;包含:
- Scoop 的設計與實現理念;
- 自定義Scoop安裝路徑;
- Scoop潛在錯誤排查;
- 更新或禁用軟件更新;
- Scoop別名的使用;
- 如何在Scoop中使用aria2進行斷點續傳;
- 如何在同一程序的不同版本之間切換,比如切換不同版本的JDK;
- 等等各種實用技巧
Scoop 包管理工具介紹
Windows 下常用的包管理工具有:
- Scoop
- Chocolatey
相比於Chocolatey,Scoop則更專注於開源的命令行工具,使用 Scoop 安裝的應用程序通常稱為"便攜式"應用程序,需要的權限更少,對系統產生的副作用也更少,所以我這里選擇了使用 Scoop。
Scoop 安裝與配置
要求:
- PowerShell >= 5.0 (如果是 Window10 則默認滿足此條件)
- 請確保已允許PowerShell執行本地腳本,可以使用下面的命令開啟:
set-executionpolicy remotesigned -scope currentuser
# 或者 (但是它沒有上面的命令安全)
set-executionpolicy Unrestricted -scope currentuser
安裝路徑:
- 用戶級別安裝的程序 和 Scoop 本身默認安裝於
C:\Users\<user>\scoop - 全局安裝的程序(所有用戶可用,使用
--global或-g選項)位 於C\ProgramData\scoop路徑中。
可以通過更改對應的環境變量更改這些路徑 。
將 Scoop 安裝到自定義目錄 :
打開 PowerShell 先配置環境變量 SCOOP,再運行 iex
$env:SCOOP='D:\Scoop'
# 先添加用戶級別的環境變量 SCOOP
[environment]::setEnvironmentVariable('SCOOP',$env:SCOOP,'User')
## 下載安裝
# 然后下載安裝 Scoop (如果使用默認安裝路徑則直接運行下面的命令)
iex (new-object net.webclient).downloadstring('https://get.scoop.sh')
# 或者使用下面的命令安裝:
iwr -useb get.scoop.sh | iex
配置全局安裝路徑 (可選,建議不改)
$env:SCOOP_GLOBAL='D:\GlobalScoopApps'
[environment]::setEnvironmentVariable('SCOOP_GLOBAL',$env:SCOOP_GLOBAL,'Machine')
相當於在系統變量中設置:
SCOOP_GLOBAL=D:\GlobalScoopApps;默認是在C:\ProgramData\scoop。
為什么需要全局安裝?
對於那些需要管理員權限的程序需要進行全局安裝。我當前遇到的是當使用 Scoop 安裝字體時需要使用全局安裝,因為字體需要給所有用戶使用。
初次安裝 Scoop 后,建議安裝的程序:
# 但 scoop 進行全局安裝時需要使用到 sudo 命令
scoop install sudo
# scoop下載程序時支持使用 aria2 來加速下載
scoop install aria2
我們可以發現,下載的過程中自動下載了依賴 7-zip。 在安裝方面,它利用了 7zip 去解 壓安裝包/壓縮包,因此它對綠色軟件有天生的友好屬性 。不僅如此,下載之后的內容會自 動將加入到(Path)環境變量中,十分方便。
補充: 初次安裝之后我們可以通過運行
scoop checkup來檢測當前潛在問題,然后根據提示進行修正。# 檢測本人當前環境存在的問題 $ scoop checkup
Scoop 的設計與實現理念 :
- 分離用戶數據:默認將程序的 用戶數據 存儲到
persist目錄中,這樣當用戶日 后升級該程序后之前的用戶配置依然可用。(但是對於部分程序支持的不是很完善) shim軟鏈接: scoop 會自動在 scoop 應用安裝路徑下的shims文件夾下為新安裝 的程序添加對應的.exe文件,而shims文件夾提前就已被添加到PATH環境變 量中,所以程序一旦安裝就可以直接在命令行中運行。- 對於 GUI 程序 ,scoop 還會自動為其在開始菜單中添加快捷方式 ,路徑:
C:\Users\<user>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Scoop Apps
Scoop 常用命令
scoop help #查看幫助
scoop help <某個命令> # 具體查看某個命令的幫助
scoop install <app> # 安裝 APP
scoop uinstall <app> # 卸載 APP
scoop list # 列出已安裝的 APP
scoop search # 搜索 APP
scoop status # 檢查哪些軟件有更新
scoop update # 更新 Scoop 自身
scoop update <app1> <app2> # 更新某些app
scoop update * # 更新所有 app (前提是需要在apps目錄下操作)
scoop bucket known #通過此命令列出已知所有 bucket(軟件源)
scoop bucket add bucketName #添加某個 bucket
scoop cache rm <app> # 移除某個app的緩存
安裝卸載軟件
# 安裝之前,通過 search 搜索 APP, 確定軟件名稱
scoop search xxx
# 安裝 APP
scoop install <app>
# 安裝特定版本的 APP;語法 AppName@[version],示例
scoop install git@2.23.0.windows.1
# 卸載 APP
scoop uninstall <app> #卸載 APP
更新軟件
包含:如何禁用更新
scoop update # 更新 Scoop 自身
scoop update appName1 appName2 # 更新某些app
# 更新所有 app (可能需要在apps目錄下操作)
scoop update *
# 禁止某程序更新
scoop hold <app>
# 允許某程序更新
scoop unhold <app>
清除緩存與舊版本
# 查看所有以下載的緩存信息
scoop cache show
# 清除指定程序的下載緩存
scoop cache rm <app>
# 清除所有緩存
scoop cache rm *
# 刪除某軟件的舊版本
scoop cleanup <app>
# 刪除全局安裝的某軟件的舊版本
scoop cleanup <app> -g
# 刪除過期的下載緩存
scoop cleanup <app> -k
在同一程序的不同版本之間切換
使用命令:
scoop reset [app]@[version]
scoop reset idea-ultimate-eap@201.6668.13
scoop reset idea-ultimate-eap@201.6073.9
# 切換到最新版本
scoop reset idea-ultimate-eap
對應版本的程序需要已經安裝於本地系統中;所以在你清除某個軟件的舊版本時考慮一下自己是否還會再次使用到此舊版本。
另外 idea-ultimate-eap 切換過程可能需要更長時間。
其它命令
# 顯示某個app的信息
scoop info <app>
# 在瀏覽器中打開某app的主頁
scoop home <app>
# 比如
scoop home git
添加軟件源 Bucket
Scoop 可安裝的軟件信息存儲在 Bucket(翻譯為:桶)中,也可以稱其為軟件源。Scoop 默認的 Bucket 為 main ;官方維護的另一個 Bucket 為 extras,我們需要手動添加。
# bucket的用法
scoop bucket add|list|known|rm [<args>]
添加 extras :
scoop bucket add extras
我們也可以添加第三方 bucket ,示例:
scoop bucket add dorado https://github.com/h404bi/dorado
並且明確指定安裝此 bucket (軟件源)中的的程序:
scoop install dorado/<app_name>
# 下面是dorado中特有的軟件,測試其是否添加成功
scoop search trash
推薦的 Bucket(軟件源):
extras:Scoop 官方維護的一個倉庫,涵蓋了大部分因為種種原因不能被收錄進主倉庫 的常用軟件(在我看來是必須要添加的)。地址 :lukesampson/scoop-extras- nirsoft:是一個 NirSoft 開發的小工具的安裝合集。NirSoft 制作了大量的小工具,包括系統工具、網絡工具、密碼恢復等等,孜孜不倦、持續更新。
- Bucket 地址 :kodybrown/scoop-nirsoft
- NirSoft 官網地址:NirSoft
- dorado(添加了一些國內的app,比如 qqplayer 👍🏻️ )h404bi/dorado
- ash258:Ash258/scoop-Ash258
- java:添加后可以通過它安裝各種 jdk 、 jre
- nerd-fonts :包含各種字體
# 先添加bucket
scoop bucket add extras
scoop bucket add nirsoft
scoop bucket add dorado https://github.com/h404bi/dorado
scoop bucket add Ash258 'https://github.com/Ash258/Scoop-Ash258.git'
scoop bucket add nerd-fonts
# 對於開發人員,可添加下面的兩個
scoop bucket add java
scoop bucket add versions
