Scoop 包管理器

Scoop是一个Windows下的包管理器,完全免费,依赖于Github

应注意以下几点

  • 用户名不含中文字符
  • 能正常、快速的访问 GitHub 并下载上面的资源
  • 如果下载scoop的过程中断,那么必须先删除(C:\Users\<user>\scoop)文件夹,再执行以上命令安装。
  • Windows 7 SP1+ / Windows Server 2008+
  • PowerShell 3+
  • .NET Framework 4.5+

若Powershell或.NET Franmework版本过旧,更新后重启即可。 若不清楚版本号,可Win+R运行powershell,输入以下命令获取版本号。

$PSVersionTable.PSVersion.Major   #查看Powershell版本 > 3
$PSVersionTable.CLRVersion.Major  #查看.NET Framework版本 > 4.5

获取 Scoop 包管理器

安装 scoop

# 准备将 Scoop 本体安装到已定义目录
$env:SCOOP='D:\Scoop'
# 先添加用户级别的环境变量 SCOOP
[environment]::setEnvironmentVariable('SCOOP',$env:SCOOP,'User')

# 允许本地脚本的执行:
set-executionpolicy remotesigned -scope currentuser
# 安装 Scoop:
Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')
# 或者更短
#iwr -useb get.scoop.sh | iex

# 安装完成,查看 scoop 的版本和 main bucket 的版本
scoop -v

修改默认全局安装路径,体现在额外的参数-g

$env:SCOOP_GLOBAL='D:\GlobalScoopApps'
[environment]::setEnvironmentVariable('SCOOP_GLOBAL',$env:SCOOP_GLOBAL,'Machine')

更新 Scoop

scoop update

卸载 Scoop

scoop uninstall scoop

管理仓库

Scoop 默认使用的是 main 仓库,官方维护的另一个 Bucketextras ,需要手动添加。有些软件并没有收录在仓库中,需要额外添加其他仓库。

# scoop help bucket
Usage: scoop bucket add|list|known|rm [<args>]
# ...

查询仓库

# 查看可直接添加的仓库
scoop bucket known
# 查看已添加的仓库
scoop bucket list

添加仓库

# 添加 extras 仓库
scoop bucket add extras
# 添加第三方 bucket
scoop bucket add <bucketname> https://github.com/xxx/xxx

删除仓库

# 删除 extras
scoop bucket rm extras

更新仓库

# 更新 extras
scoop update

其他仓库

bucket 排行榜 - 链接1 - 链接2

一些 bucket 简单介绍 - main: 默认的主仓库 - extras: 常用,诸多有用的软件都在里面。地址 lukesampson/scoop-extras - nirsoft: NirSoft 开发的小工具的安装合集,包括系统工具、网络工具、密码恢复等 - 地址: kodybrown/scoop-nirsoft - 官网地址: NirSoft - dorado: 添加了一些国内的app,比如 qqplayer 👍🏻️ h404bi/dorado - nerd-fonts: 编程字体一览无遗 - ash258: Ash258/scoop-Ash258 - nonportable: 收录神奇的UWP应用 windows平台应用 - versions: 收录软件包的历史版本 - java: 可以通过它安装各种 jdk 、 jre

仓库的多少影响搜索软件包的搜索结果、搜索速度、「一键更新」的速度、清理的速度。所以收录/订阅必要的软件仓库即可,也不必盲目添加。

管理APP

查询APP

# 查找APP, 不带APP即查询所有软件
scoop search <APP>
# 查看已安装的 APP
scoop list

安装APP

## scoop help install
# scoop install <app> [options]
# -g, --global              全局安装应用
# -i, --independent         不要自动安装依赖
# -k, --no-cache            不使用下载缓存
# -u, --no-update-scoop     如果已经过时,安装前不要更新 Scoop
# -s, --skip                跳过哈希验证(谨慎使用!)
# -a, --arch <32bit|64bit>  使用指定的架构,如果应用支持的话

# 安装APP
scoop install <app>

更新APP

## scoop help update
# scoop update <app> [options]
# -f, --force       即使没有更新版本也强制更新
# -g, --global      更新全局安装的应用
# -i, --independent 不要自动安装依赖
# -k, --no-cache    不使用下载缓存
# -s, --skip        跳过哈希验证(谨慎使用!)
# -q, --quiet       隐藏无关消息
# -a, --all         更新所有应用程序(替代“*”)

# 更新APP,  不带APP即更新scoop本身及bucket
scoop update <app>

卸载APP

## scoop help uninstall
# scoop uninstall <app> [options]
# -g, --global  卸载全局安装的应用
# -p, --purge   删除所有持久数据

# 卸载并删除配置文件
scoop uninstall -gp <app>

缓存的安装包

# 显示安装包的缓存
scoop cache show
# 删除 指定APP的安装包
scoop cache rm <app>
# 删除所有APP安装包
scoop cache rm *
# 禁用安装包缓存 -k 或 --no-cache
scoop install -k <app>
scoop update -k *

删除旧版本APP

由于自身的特性(滚动更新,当更新时是立刻拉取最新的commit)可能会导致程序异常,所以当软件被更新后 Scoop 还会保留软件的旧版本,更新软件后可以通过 scoop cleanup 命令进行删除。

# 删除指定APP旧版本
scoop cleanup <app>
# 删除所有APP旧版本
scoop cleanup *
# 不仅删除所有APP旧版本,也包括缓存的安装包
scoop cleanup -k *

推荐软件

必装

  • 7zip
  • git
  • aria2 # 安装aria2后,scoop会自动调用aria2进行多线程下载以加速下载
  • curl
  • miniconda3 # 由于scoop不保留 Conda envs 和 pkgs,在更新后创建的虚拟环境会丢失,所以建议设置 envs_dirs 以使用 '~/.conda/envs'
    修改配置文件 ~/.condarc
    envs_dirs: - D:/Scoop/apps/miniconda3/envs pkgs_dirs: - D:/Scoop/apps/miniconda3/pkgs

可选

  • vscode
  • mactype-np # 装机必备的字体优化工具
  • motrix # 开源美观的下载工具
  • potplayer # 超强的视频播放器
  • quicklook # 快速预览工具
  • snipaste # 大名鼎鼎的截图工具
  • typora # 久负盛名的 Markdown 编辑器
  • windows-terminal # windows官方的终端应用
  • fluent-terminal-np # Windows平台终端工具
  • sudo
  • gcc
  • vim

其他

  • gimp
  • inkscape
  • latex
  • calibre
  • zotero

加速下载

在使用scoop安装aria2后,scoop会自动调用aria2进行多线程下载以加速下载:

scoop install aria2

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

# aria2-enabled (默认值: true)
# aria2-retry-wait (默认值: 2)
# aria2-split (默认值: 5)
# aria2-max-connection-per-server (默认值: 5)
# aria2-min-split-size (默认值: 5M)

# scoop config proxy 127.0.0.1:10809 (额外的代理,如果有的话)

字体

# 添加 nerd-fonts 仓库
scoop bucket add nerd-fonts
# 搜索字体
scoop search "-NF"
# 安装字体
sudo scoop install FiraCode-NF

提权

如果不是以管理员的身份运行PowerShell,常常会出现一些错误。此时sudo来了。

scoop install -g sudo
sudo scoop install -g <app>

其他问题

1. 添加extras失败

使用命令scoop bucket add extras添加仓库时出现错误:

Checking repo... ok
efatal: the remote end hung up unexpectedly
rror: RPC failed; curl 18 transfer closed with outstanding read data remaining
fatal: early EOF
fatal: index-pack failed
The extras bucket was added successfully.
虽然提示添加成功,但在安装anaconda3软件时出现:
Updating Scoop...
Updating 'extras' bucket...
fatal: not a git repository (or any of the parent directories): .git
fatal: not a git repository (or any of the parent directories): .git
fatal: not a git repository (or any of the parent directories): .git
Updating 'main' bucket...
 * 9d903fc3 git-up: Update to version 2.0.0                              9 hours ago
Scoop was updated successfully!
Couldn't find manifest for 'anaconda3'.
看起来是文件夹里缺少一些必要的东西,于是去查看仓库所在路径(C:\<user>),发现extras只是一个空文件夹,为此在网络上搜罗解决办法: - 说是缓冲区溢出,需要执行git config --global http.postBuffer 524288000,无果! - 说是网络太慢,需要执行git config --global http.lowSpeedLimit 0git config --global http.lowSpeedTime 999999,无果!
Checking repo... ok
efrror: RPC failed; curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054
fatal: the remote end hung up unexpectedly
atal: early EOF
fatal: index-pack failed
The extras bucket was added successfully.
- 需要执行git config --global http.sslVerify "false",无果!
Checking repo... ok
efrror: RPC failed; curl 18 transfer closed with outstanding read data remaining
atal: the remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed
The extras bucket was added successfully.
- 需要执行git clone --depth=1 https://github.com/lukesampson/scoop-extras.git成功!! 这里是先找到extras仓库分支,然后在路径(C:\<user>)下clone这个分支,再修改下这个下载下来的文件夹的名称为extras,就可以正常使用了。 > 注:--depth=1参数是指只克隆最近一次commit,只会把默认分支clone下来。对不是参与整个项目的开发工作的我们来说问题不大。


相关链接