教程_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:最好用的Windows包管理器

参考资料
Scoop Documentation
再谈谈 Scoop 这个 Windows 下的软件包管理器
「一行代码」搞定软件安装卸载,用 Scoop 管理你的 Windows 软件
Scoop - 最好用的 Windows 包管理器
scoop的安装及基本使用
你需要掌握的Scoop技巧和知识

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

上一篇:AcWing 3800. 奇数还是偶数


下一篇:WPF 文本框焦点导致的内存泄露问题