1. 程式人生 > 其它 >Scoop包管理工具介紹

Scoop包管理工具介紹

Scoop 包管理工具介紹

Windows下常用的包管理工具有

  • WinGet
  • Chocolatey
  • Scoop

其中WinGet需要在Microsoft Store安裝,Chocolatey許可權較為混亂,而Scoop需要的許可權更少,對系統產生的副作用也更少。

Scoop的安裝與配置

要求:

  • PowerShell >= 5.0 (如果是 Window10 則預設滿足此條件)
  • 已允許PowerShell執行本地指令碼,可以使用下面的命令開啟:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

預設安裝路徑:

使用者級別安裝的程式和Scoop本身預設安裝於 C:\Users\<user>\scoop
全域性安裝的程式(所有使用者可用,使用--global或 -g 選項)位
C:\ProgramData\scoop路徑中。
可以通過更改對應的環境變數更改這些路徑 。

將 Scoop 安裝到自定義目錄 :

開啟PowerShell配置以下環境變數:

  • 使用者環境變數SCOOP,用於更改Scoop及普通程式安裝位置
$env:SCOOP='D:\Applications\Scoop'
[Environment]::SetEnvironmentVariable('SCOOP', $env:SCOOP, 'User')
  • 系統環境變數,用於某些需要管理員許可權的程式(可以不改)
$env:SCOOP_GLOBAL='D:\Applications\ScoopGlobal'
[Environment]::SetEnvironmentVariable('SCOOP_GLOBAL', $env:SCOOP_GLOBAL, 'Machine')
  • 系統環境變數,用於更改下載快取位置(可以不改)
$env:SCOOP_CACHE='D:\Applications\ScoopCache'
[Environment]::SetEnvironmentVariable('SCOOP_CACHE', $env:SCOOP_CACHE, 'Machine')

配置完成後可以開始下載安裝(注意不可使用管理員許可權的PowerShell):

iwr -useb get.scoop.sh | iex

首次安裝完成後建議通過scoop checkup檢測當前安裝是否有問題。

$ scoop checkup

可以看到以下資訊:

ERROR 'Inno Setup Unpacker' is not installed! It's required for unpacking InnoSetup files. Please run 'scoop install innounp'.
ERROR 'dark' is not installed! It's required for unpacking installers created with the WiX Toolset. Please run 'scoop install dark' or 'scoop install wixtoolset'.
WARN  Found 2 potential problems.

按照提示解決即可。

初次安裝 Scoop 後,建議安裝以下程式:

scoop install sudo
sudo scoop install 7zip git --global
scoop install curl grep sed less touch

安裝完git後,為避免以後出現證書問題或者本地資料夾安全提醒,建議執行以下兩條命令對git進行配置(第一條非必須):

git config --global http.sslVerify false
git config --global --add safe.directory "*"

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 appName1 appName2 # 更新某些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 AppName

# 安裝特定版本的 APP;語法 AppName@[version],示例
scoop install [email protected]

# 解除安裝 APP 
scoop uninstall #解除安裝 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 alias add|list|rm [<args>]

## 新增別名,格式:
scoop alias add <name> <command> <description>

# 示例:(注意:必須在 Powershell中執行)
scoop alias add st 'scoop status' '檢查更新'
# 檢查已新增的別名
scoop alias list -v

Name Command      Summary
---- -------      -------
st   scoop status 檢查更新

# 測試已新增的別名 st
scoop st


# 另一個示例:
scoop alias add rm 'scoop uninstall $args[0]' '解除安裝某 app'

在同一程式的不同版本之間切換

scoop reset [app]@[version]

其它命令

# 顯示某個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/chawyehsu/dorado
# 或者使用國內映象,速度快但是非實時同步
scoop bucket add dorado https://gitee.com/chawyehsu/dorado

並且明確指定安裝此 bucket (軟體源)中的的程式:

scoop install dorado/<app_name>
# 下面是dorado中特有的軟體,測試其是否新增成功
scoop search trash

推薦的 Bucket(軟體源):

  • extras:Scoop 官方維護的一個倉庫,涵蓋了大部分因為種種原因不能被收錄進主倉庫的常用軟體。(比如Windows Terminal就在這個Bucket內)
  • dorado:(添加了一些國內的app)
  • java:新增後可以通過它安裝各種 jdk 、 jre
  • nerd-fonts:包含各種字型

如何利用 aria2 進行斷點續傳?

首先安裝aria2:

scoop install aria2

以vscode為例:

# 更新 vscode
scoop update vscode-portable

假設更新 vscode 時下載到一半失敗了(安裝時處理方法也一樣)。我們需要在提示中找到如下內容:

'D:\Scoop\Applications\apps\aria2\current\aria2c.exe' --input-file='D:\Scoop\Applications\cache\vscode-portable.txt' 
--user-agent='Scoop/1.0 (+http://scoop.sh/) PowerShell/5.1 (Windows NT 10.0; Win64; x64; Desktop)' 
--allow-overwrite=true --auto-file-renaming=false 
--retry-wait=2 --split=5 --max-connection-per-server=5 
--min-split-size=5M --console-log-level=warn --enable-color=false 
--no-conf=true --follow-metalink=true --metalink-preferred-protocol=https 
--min-tls-version=TLSv1.2 --stop-with-process=15584 --continue

我們從上面的資訊中提取出下面的命令;若要進行斷點續傳,只需再次執行下面的命令即可:

aria2c.exe --input-file='D:\Scoop\Applications\cache\vscode-portable.txt'

當提示下載完成後,我們需要再次執行 scoop 對應的 app 更新命令(或安裝命令),即可完成 app 更新(或安裝):

scoop update vscode-portable