1. 程式人生 > 其它 >教程_Scoop:最好用的Windows包管理器

教程_Scoop:最好用的Windows包管理器

前言

Scoop 是一個 Win­dows 包管理工具,類似於 De­bian 的 apt、ma­cOS 的 homebrew。它由開源社群驅動,體驗可能是是目前所有 Win­dows 包管理工具中最好的。對開發者來說,包管理器能非常方便的部署開發環境,比如 Python 、Node.js 。而對於像博主這樣的普通的計算機使用者來說,可以方便的安裝一些常用軟體,尤其是開源軟體,免去了手動去官網下載的繁瑣步驟,而且後續對軟體進行升級只需要輸入一行命令,非常便捷。

環境要求

  • Windows 7 SP1 + / Windows Server 2008+
  • PowerShell 5(或更高版本,包括 PowerShell Core)和 .NET Framework 4.5(或更高版本)Win10(11)預設滿足此條件
  • Windows 使用者名稱為英文(Windows 使用者環境變數中路徑值不支援中文字元)
  • 正常、快速的訪問 GitHub 並下載資源

安裝 Scoop

Scoop 預設使用普通使用者許可權,其本體和安裝的軟體預設會放在 %USERPROFILE%\scoop(即 C:\Users\使用者名稱\scoop),使用管理員許可權進行全域性安裝 (-g) 的軟體在 C:\ProgramData\scoop

。如果有自定安裝路徑的需求,那麼要提前設定好環境變數,否則後續再改不是一件容易的事情。

  • 開啟 PowerShell
  • 設定使用者安裝路徑
$env:SCOOP='D:\Scoop'
[Environment]::SetEnvironmentVariable('SCOOP', $env:SCOOP, 'User')

  • 設定全域性安裝路徑(需要管理員許可權)
$env:SCOOP_GLOBAL='D:\Scoop_Global'
[Environment]::SetEnvironmentVariable('SCOOP_GLOBAL', $env:SCOOP_GLOBAL, 'Machine')

  • 設定允許 PowerShell 執行本地指令碼
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
  • 安裝 Scoop
iwr -useb get.scoop.sh | iex  
iex (new-object net.webclient).downloadstring('https://get.scoop.sh')

其實,上面兩種都不可行
先配置Host檔案,加上
199.232.68.133 raw.githubusercontent.com
然後執行另一條可用的網址的命令:

iex (new-object net.webclient).downloadstring('https://raw.githubusercontent.com/lukesampson/scoop/master/bin/install.ps1')  
  • 沒安裝過 Git 則需要安裝。
scoop install git

基礎使用

最基礎的使用方法和其它包管理器類似,這裡就不做贅述了,直接上命令列表:

  • scoop search <app> - 搜尋軟體
  • scoop install <app> - 安裝軟體
  • scoop info <app> - 檢視軟體詳細資訊
  • scoop list - 檢視已安裝軟體
  • scoop uninstall <app> - 解除安裝軟體,-p刪除配置檔案。
  • scoop update - 更新 scoop 本體和軟體列表
  • scoop update <app> - 更新指定軟體
  • scoop update * - 更新所有已安裝的軟體
  • scoop checkup - 檢查 scoop 的問題並給出解決問題的建議
  • scoop help - 檢視命令列表
  • scoop help <command> - 檢視命令幫助說明

進階使用

新增 bucket

所有的包管理器都會有相應的軟體倉庫 ,而 bucket 就是 Scoop 中的軟體倉庫。細心的你可能會發現 scoop 翻譯為中文是 “舀”,而 bucket 是 “水桶”,所以安裝軟體可以理解為從水桶裡舀水,似乎很形象的說。

Scoop 預設軟體倉庫(main bucket)軟體數量是有限的,但是可以進行額外的新增。通過 scoop bucket known 命令可以檢視官方認可的 bucket:

$ scoop bucket known
main
extras
versions
nightlies
nirsoft
php
nerd-fonts
nonportable
java
games
jetbrains

以上官方認可的 bucket 可以通過下面這個命令直接新增:

scoop bucket add <bucketname>

好像有人新增bucket出現問題?如有,請在評論區提出。

extras 涵蓋了大部分因為種種原因不能被收錄進主倉庫的常用軟體,這個是強推薦新增的。

scoop bucket add extras

常用的寫盤工具 Ru­fus 就在 extras 這個倉庫中。

scoop install rufus

nerd-fonts 包含了美化終端時會用到的 Pow­er­line 字型

scoop bucket add nerd-fonts

當新增 nerd-fonts 倉庫後可以通過以下命令搜尋到所有的字型:

scoop search "-NF"

安裝字型需要使用管理員許可權:

sudo scoop install FiraCode-NF

第三方 bucket

新增第三方 bucket

scoop bucket add <bucketname> https://github.com/xxx/xxx

從第三方 bucket 中安裝軟體

scoop install <bucketname>/<app>

清理安裝包快取

Scoop 會保留下載的安裝包,對於解除安裝後又想再安裝的情況,不需要重複下載。但長期累積會佔用大量的磁碟空間,如果用不到就成了垃圾。這時可以使用 scoop cache 命令來清理。

  • scoop cache show - 顯示安裝包快取
  • scoop cache rm <app> - 刪除指定應用的安裝包快取
  • scoop cache rm * - 刪除所有的安裝包快取

如果你不希望安裝和更新軟體時保留安裝包快取,可以加上 -k--no-cache 選項來禁用快取:

  • scoop install -k <app>
  • scoop update -k *

刪除舊版本軟體

當軟體被更新後 Scoop 還會保留軟體的舊版本,更新軟體後可以通過 scoop cleanup 命令進行刪除。

  • scoop cleanup <app> - 刪除指定軟體的舊版本
  • scoop cleanup * - 刪除所有軟體的舊版本

與安裝軟體一樣,刪除舊版本軟體的同時也可以清理安裝包快取,同樣是加上 -k 選項。

  • scoop cleanup -k <app> - 刪除指定軟體的舊版本並清除安裝包快取
  • scoop cleanup -k * - 刪除所有軟體的舊版本並清除安裝包快取

全域性安裝

全域性安裝就是給系統中的所有使用者都安裝,且環境變數是系統變數,對於需要設定系統變數的一些軟體就需要全域性安裝,比如 Node.js、Python ,否則某些情況會出現無法找到命令的問題。

使用 scoop install <app> 命令加上 -g--global 選項可對軟體進行全域性安裝,全域性安裝需要管理員許可權,所以需要提前以管理員許可權執行的 Pow­er­Shell 。更簡單的方式是先安裝 sudo,然後用 sudo 命令來提權執行:

scoop install sudo
sudo scoop install -g <app>

達成在 Win­dows 上使用sudo的成就

使用 scoop list 命令檢視已裝軟體時,全域性安裝的軟體末尾會有 *global* 標誌。

➜ scoop list
Installed apps:

  7zip 19.00
  adb 30.0.0
  aria2 1.35.0-1
  busybox 3466-g53c09d0e1
  CascadiaCode-NF 2.1.0 [nerd-fonts]
  colortool 1904.29002
  dark 3.11.2 *global*
  ffmpeg 4.2.3
  figlet 1.0-go
  FiraCode-NF 2.1.0 [nerd-fonts]
  git 2.26.2.windows.1 *global*
  innounp 0.49
  iperf3 3.1.3
  lessmsi 1.6.91 *global*
  lxrunoffline 3.4.1 [extras]
  nano 4.9-4
  neofetch 7.0.0
  nodejs-lts 12.17.0 *global*
  python 3.8.3 *global*
  rclone 1.52.0
  rufus 3.10 [extras]
  screentogif 2.24.2 [extras]
  sudo 0.2020.01.26

此外對於全域性軟體的更新和解除安裝等其它操作,都需要加上 -g 選項:

  • sudo scoop update -g * - 更新所有軟體(且包含全域性軟體)
  • sudo scoop uninstall -g <app> - 解除安裝全域性軟體
  • sudo scoop uninstall -gp <app> - 解除安裝全域性軟體(並刪除配置檔案)
  • sudo scoop cleanup -g * - 刪除所有全域性軟體的舊版本
  • sudo scoop cleanup -gk * - 刪除所有全域性軟體的舊版本(並清除安裝包包快取)

代理設定

Scoop 預設使用的是系統代理,如果你想手動指定代理,可以輸入下面的命令。需要注意的是隻支援 http 協議。

scoop config proxy localhost:1080

設定完可以通過scoop config proxy檢視。

如果你想取消代理,那麼輸入下面的命令,這將會恢復使用系統代理。

scoop config rm proxy

開啟多執行緒下載

使用 Scoop 安裝 Aria2 後,Scoop 會自動呼叫 Aria2 進行多執行緒加速下載。

scoop install aria2

使用 scoop config 命令可以對 Aria2 進行設定,比如 scoop config aria2-enabled false 可以禁止呼叫 Aria2 下載。以下是與 Aria2 有關的設定選項:

博主在這裡推薦以下優化設定,單任務最大連線數設定為 32,單伺服器最大連線數設定為 16,最小檔案分片大小設定為 1M

scoop config aria2-split 32
scoop config aria2-max-connection-per-server 16
scoop config aria2-min-split-size 1M

常用命令總結

看到這裡一定有很多小夥伴已經懵逼了,最後總結一波 Scoop 在日常使用中的常用命令:

# 更新 scoop 及軟體包列表
scoop update

## 安裝軟體 ##
# 非全域性安裝(並禁止安裝包快取)
scoop install -k <app>
# 全域性安裝(並禁止安裝包快取)
sudo scoop install -gk <app>

## 解除安裝軟體 ##
# 解除安裝非全域性軟體(並刪除配置檔案)
scoop uninstall -p <app>
# 解除安裝全域性軟體(並刪除配置檔案)
sudo scoop uninstall -gp <app>

## 更新軟體 ##
# 更新所有非全域性軟體(並禁止安裝包快取)
scoop update -k *
# 更新所有軟體(並禁止安裝包快取)
sudo scoop update -gk *

## 垃圾清理 ##
# 刪除所有舊版本非全域性軟體(並刪除軟體包快取)
scoop cleanup -k *
# 刪除所有舊版本軟體(並刪除軟體包快取)
sudo scoop cleanup -gk *
# 清除軟體包快取
scoop cache rm *

尾巴

文章仍有許多不足之處,希望大家可以指出,如有疑問,請大家在評論區中提出,也請看到的人積極回答,我將盡力解答並收集問題以完善文章。

遺留的問題

安裝軟體失敗

參考資料
Scoop Documentation
再談談 Scoop 這個 Windows 下的軟體包管理器
「一行程式碼」搞定軟體安裝解除安裝,用 Scoop 管理你的 Windows 軟體
Scoop - 最好用的 Windows 包管理器
scoop的安裝及基本使用
你需要掌握的Scoop技巧和知識