前言

1
2
sudo apt update
sudo apt install git

Ubuntu 安装软件的时候敲入上面的命令是一件令人舒适的事情,而且也很便捷,想要在 MacOS 上这样操作,也可以使用 homebrew 等诸多的包管理工具。然而如果想在 Windows 安装软件,你可能需要:

  1. 打开百度搜索软件
  2. 在搜索结果中找到无毒无捆绑的版本
  3. 进行安装,不停点击 Next 或者下一步
  4. 结束安装

在这个过程中,你还要担心是否会混入病毒,是否会有捆绑软件同时下载;软件还很可能会索要管理员权限,把它自己安装在 C 盘的好位置;有些开发工具还可能会搞乱你的环境变量;最最重要的是,最后你要卸载它的时候不知道有多麻烦。

所以就有天降猛男来解决这个问题,开发了 Windows 的包管理工具。在 scoop 之前,Windows 上的包管理工具中比较出名的是 Chocolaty。在 scoop 横空出世之后,由于其自定义程度高、拓展性强的特性而发展迅猛,目前社区中总计有 2000 + 的软件;另外 scoop 安装软件不依赖管理员权限,安装路径和环境变量管理也深得我这一类 “绿色用户” 的欢心。

安装 scoop

安装要求

  • Windows 7 或更高版本
  • PowerShell 5.0 或更高版本
  • .NET Framework 4.5 或更高版本
  • User Name 不含中文字符
  • 确认打开了远程安装权限
1
2
3
$PSVersionTable.PSVersion.Major                      # 查看Powershell版本
$PSVersionTable.CLRVersion.Major # 查看.NET Framework版本
set-executionpolicy remotesigned -scope currentuser # 打开远程权限

当然还有很重要的一点就是能够正常访问 Github

配置

默认情况下,scoop 以及大多数安装的软件都位于 %USERPROFILE%\scoop, 全局安装的程序位于 C:\ProgramData\scoop,当然我们也可以自定义安装位置:

1
2
3
4
5
$env:scoop='D:\scoop'
[Environment]::SetEnvironmentVariable('scoop', $env:scoop, 'User')

$env:scoop_GLOBAL='D:\scoop\GlobalApps'
[Environment]::SetEnvironmentVariable('scoop_GLOBAL', $env:scoop_GLOBAL, 'Machine')

安装

1
2
3
Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')
# or the shorter:
iwr -useb get.scoop.sh | iex

卸载

以毒攻毒,以 scoop 卸载 scoop(先卸载其他软件):

1
scoop uninstall scoop

基础

常用命令

scoop 的命令设计逻辑是 scoop + command + [object] + [options],例如 scoop install git -g,常用的基础命令有:

命令作用
help查看帮助
bucket add/rm [args]添加、删除仓库
bucket list/know查看已有 / 已知仓库
search匹配查找
info查看详情
home查看主页
install[options]安装
uninstall[options]卸载
update[options]更新
list查看已安装软件
cache show/rm [app]查看或删除缓存
cleanup[options]删除旧版本
checkup自检查



安装位置

配置这一步中,我们设置了 scoop 的安装位置为 D:\Scoop,在这个文件夹下,会有这几个子目录:

app 就是软件的安装位置;buckets 则是已添加的仓库(后文会提到,scoop 的仓库实际上就是 gitrepository,所以该文件夹下其实就是一个一个 git repository);cache 是下载缓存;GlobalApps 是自定义的全局安装位置;persist 则是一些配置文件;shim 会创建一些应用的软链接,让应用之间不会互相干扰。

加速

使用 aria2

aria2 可以利用多线程加速下载:

1
2
3
4
5
6
7
8
scoop install aria2
# 关闭aria2(默认开启)
scoop config aria2-enabled false
# 配置aria2 :重试秒数 单任务最大线程数(最大为16) 同一服务器最大连接数 最小文件分片大小
scoop config aria2-retry-wait 4
scoop config aria2-split 16
scoop config aria2-max-connection-per-server 16
scoop config aria2-min-split-size 4M

设置代理

scoop 在拉取仓库更新和下载大部分软件时,都需要从国外服务器下载,速度十分感人,因此使用代理可以大大加速下载。有两种方式可以在 scoop 下载时使用代理:

  1. 在 Powershell 内设置环境变量:$Env:http_proxy="http://127.0.0.1:1080";$Env:https_proxy="http://127.0.0.1:1080"
  2. 更改代理设置:scoop config proxy [username:password@]host:port,具体配置可以查看参考资料 5

Bucket 管理

介绍

Bucket 其实就是一个 git repository,主要组成就是描述如何安装软件的 json 文件。在安装 scoop 时已经附带安装 main bucket,然后这个仓库的收录标准十分严格:

  • 主流的开发者工具
  • 维护中的最新版本的软件
  • 完整版本的软件
  • 不可以有 GUI
  • ……

这使得我们只能在 main 中找到部分软件,不可以有 GUI 这一点使得大部分日常使用软件都无法下载,所以我们需要添加其他仓库,可以使用 scoop bucket know 查看官方维护的仓库,还可以在这里查看较受欢迎的仓库,较完整的仓库列表可以在这里查看。

管理

官方维护的仓库可以直接添加,例如 scoop bucket add extras;对于社区维护的仓库,使用 scoop bucket add <name> <url> 进行添加,例如 scoop bucket add dorado https://github.com/chawyehsu/dorado
每一次安装和更新软件之前,scoop 首先会从 github 拉取已添加仓库的更新,然后再进行操作。如果碰到不同的仓库中拥有名字相同的软件,可以加上仓库名以示区分,例如 scoop install main/git

建立自己的 bucket

参考 scoop 进阶 - 建立自己 的 Bucket

App 查询

为了在 scoop 的许多仓库中找到自己需要的软件,可以在这里查询安装脚本所在的 bucket。

Q&A

  • 还有其他的包管理工具吗?
    有呀,例如 winget,是由官方推出的推出命令行安装工具,全称 windows package manager client

仓库

名称简介
doradoYet another bucket for scoop.
scoopetA Bucket for the Best Windows Package Manager scoop : Continuously Assisting in Academic Research.
sushiA tasty and inclusive scoop bucket, providing various kinds of applications.

参考资料

  1. Windows 下最好的包管理器–scoop
  2. scoop—— 强大的 Windows 命令行包管理工具
  3. 给 scoop 加上这些软件仓库,让它变成强大的 Windows 软件管理器
  4. Using scoop behind a proxy
  5. Quick Start
  6. 再谈谈 scoop 这个 Windows 下的软件包管理器
  7. Aria2 下载简述