前言

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下载简述