Scoop 是个优质的 Windows 包管理器。它不仅轻量,还将软件直接安装到我们的用户目录下,安装过程不需要申请管理员权限(UAC)也不会污染系统环境变量。

安装环境

  • 用户名不含中文字符
  • Windows 7 SP1+ / Windows Server 2008+
  • PowerShell 3+
  • .NET Framework 4.5+

若Powershell或.NET Franmework版本过旧,更新后重启即可。

若不清楚版本号,可Win+R运行powershell,输入以下命令获取版本号。

  1. $PSVersionTable.PSVersion.Major #查看Powershell版本
  2. $PSVersionTable.CLRVersion.Major #查看.NET Framework版本

安装 Scoop

在线安装

在 PowerShell 中输入下面内容,保证允许本地脚本的执行:

  1. set-executionpolicy remotesigned -scope currentuser

然后执行下面的命令安装 Scoop:

  1. iex (new-object net.webclient).downloadstring('https://get.scoop.sh')
  2. # 或
  3. iwr -useb get.scoop.sh | iex

静待脚本执行完成就可以了,安装成功后,让我们尝试一下:

  1. scoop help

Scoop默认安装到C:\Users\<user>\scoop

手动安装

如果在线安装不成功,可以克隆https://github.com/lukesampson/scoop到以下路径:

  1. C:\Users\<user>\scoop\apps\scoop\current

比如:

  1. C:\Users\quanzaiyu\scoop\apps\scoop\current

005.png
创建以下目录:

  1. C:\Users\quanzaiyu\scoop\buckets
  2. C:\Users\quanzaiyu\scoop\shims

002.png
将以下内容添加到环境变量:

  1. PATH
  2. C:\Users\quanzaiyu\scoop\apps\scoop\current\bin
  3. C:\Users\quanzaiyu\scoop\shims
  4. PATHEXTPS1

003.png
输入scoop查看是否生效:
004.png

bucket

什么是 bucket

在 Scoop 里面,bucket 就是一个软件仓库。Scoop 将一个个仓库缓存至本地,当我们想要安装一个软件的时候,Scoop 就从本地的仓库中挑选出我们想要安装的软件的安装配置文件,并依照这个配置文件进行软件的安装工作,包括:

  • 从哪里下载软件
  • 如何安装软件、安装到哪里、需要修改更新什么环境变量
  • 安装之前、之后都要做什么准备(善后)工作

这就是 Scoop 安装软件的一个具体过程。

Scoop 默认软件仓库(main bucket)软件数量是有限的。同时由于 Scoop 的设计初衷是为了方便 Windows 开发者安装和配置开发工具,其默认软件仓库的收录条件也就很苛刻:

  • 必须是主流的开发者工具
  • 必须是维护中的最新版本的软件
  • 必须是完整版本(非 Trial 版本)的软件
  • 不可以有复杂的安装前与安装后处理步骤
  • 不可以有 GUI

这个最后一点恐怕是最严格的条件了,直接否决了一系列用户向软件(Firefox、Typora 等等)的收录。但是我们一样可以安装我们常用的图形界面软件,这就涉及到接下来我要介绍的,与 Homebrew cask 的设计理念类似的 Scoop bucket。

官方维护的 bucket

extras 这个 bucket 是最有用,也是我们大部分人肯定会用到的仓库。除此之外,我们可以通过这个命令查看 Scoop 还能直接识别哪些 bucket:

  1. $ scoop bucket known
  2. main
  3. extras
  4. versions
  5. nightlies
  6. nirsoft
  7. php
  8. nerd-fonts
  9. nonportable
  10. java
  11. games
  12. jetbrains

添加bucket

下面列出的这几个仓库就是 Scoop 可以直接识别并添加的 bucket,即我们可以通过下面这个命令直接添加相应的 bucket:

  1. scoop bucket add <仓库名>

这里面,我来介绍一下和开发环境的安装没有太大关系的几个仓库:

  • extras:Scoop 官方维护的一个仓库,涵盖了大部分因为种种原因不能被收录进主仓库的常用软件。地址:lukesampson/scoop-extras
  • nirsoft:是一个 NirSoft 开发的小工具的安装合集。NirSoft 制作了大量的(dozens and dozens)小工具,包括系统工具、网络工具、密码恢复等等,孜孜不倦、持续更新。
  • games:顾名思义,是游戏(和与游戏相关的工具)合集。包含了大量免费/开源的小游戏,地址:Calinou/scoop-games

剩下的几个 bucket 都是和开发环境相关的,比如 java 这个 bucket 就是为了安装 JDK 用的 bucket,这些我在这里就不过多赘述了。

比如要安装main这个bucket(如果是在线安装的已经自带了),执行以下命令即可:

  1. scoop bucket add main

如果速度感觉太慢或网络问题,可以直接克隆对应的仓库到C:\Users\quanzaiyu\scoop\buckets下即可,比如:

  1. git clone https://github.com/ScoopInstaller/Main.git main
  2. git clone https://github.com/lukesampson/scoop-extras.git extras
  3. git clone https://github.com/ScoopInstaller/Java.git java
  4. git clone https://github.com/Ash258/Scoop-JetBrains.git jetbrains
  5. git clone https://github.com/matthewjberger/scoop-nerd-fonts.git nerd-fonts

社区提供的 bucket

上面几个 bucket 都是 Scoop 官方维护认证的 bucket,当然我们也有很多由社区(用户)维护的 bucket。这里是一个按照 Github score(由 Star 数量、Fork 数量和 App 数量综合决定的 Github score)排列的 bucket 列表:Scoop buckets by Github score

我们可以通过这样的方式来将社区维护的 bucket 添加至本机的 Scoop bucket 列表:

  1. scoop bucket add <仓库名> <仓库地址>

再举个例子,比如添加「dorado」仓:

  1. scoop bucket add dorado https://github.com/h404bi/dorado

当然,也可以到bucket目录下直接克隆:

  1. git clone https://github.com/h404bi/dorado.git dorado

这样之后,如果我们要安装「dorado」仓的某项 App,直接通过下面的这个命令安装即可:

  1. scoop install dorado/<App 名>

往往,Google 搜索「App 的名字 + scoop」就可以找到我们想要安装 App 的仓库有没有存在。

常用的Bucket:

  1. git clone https://github.com/h404bi/dorado.git
  2. git clone https://github.com/dodorz/scoop-bucket.git dodorz
  3. git clone https://github.com/lukesampson/scoop-extras.git lukesampson

查看安装的bucket

通过以下命令查看所有已经安装的bucket:

  1. $ scoop bucket list
  2. dodorz
  3. dorado
  4. extras
  5. java
  6. jetbrains
  7. lukesampson
  8. main
  9. nerd-fonts

安装软件

命令:

  1. scoop install 软件名

举例:安装aria2

  1. $ scoop install aria2
  2. Installing 'aria2' (1.35.0-1) [64bit]
  3. Loading aria2-1.35.0-win-64bit-build1.zip from cache
  4. Checking hash of aria2-1.35.0-win-64bit-build1.zip ... ok.
  5. Extracting aria2-1.35.0-win-64bit-build1.zip ... done.
  6. Linking ~\scoop\apps\aria2\current => ~\scoop\apps\aria2\1.35.0-1
  7. Creating shim for 'aria2c'.
  8. 'aria2' (1.35.0-1) was installed successfully!

安装后可以看到在C:\Users\quanzaiyu\scoop\shims下生成了以下文件:
006.png
测试是否生效:

  1. $ aria2c
  2. Specify at least one URL.
  3. Usage: aria2c [OPTIONS] [URI | MAGNET | TORRENT_FILE | METALINK_FILE]...
  4. See 'aria2c -h'.

一些常用的在官方bucket中收录的软件

编程开发相关:

  1. scoop install git
  2. scoop install nodejs
  3. scoop install yarn
  4. scoop install vim
  5. scoop install wget
  6. scoop install anaconda3
  7. scoop install go
  8. scoop install dart
  9. scoop install gcc

可视化程序:

  1. scoop install typora

字体:

  1. scoop install FiraCode
  2. scoop install SarasaGothic

一些常用的在社区bucket中收录的软件

  1. scoop install dodorz/quicker
  2. scoop install dodorz/everything
  1. scoop install lukesampson/fiddler
  2. scoop install lukesampson/dropit
  3. scoop install lukesampson/listary

搜索软件

如果不知道在scoop中有没有收录想要的软件,可以执行search命令查看,比如搜索ssh:

  1. $ scoop search ssh
  2. 'extras' bucket:
  3. processhacker (2.39)
  4. ssh-agent-wsl (2.5)
  5. winsshterm (2.9.4)
  6. wsl-ssh-pageant (20190513.14)
  7. 'main' bucket:
  8. git-with-openssh (2.26.2.windows.1)
  9. gow (0.8.0) --> includes 'ssh.bat'
  10. mls-software-openssh (8.2p1-1)
  11. openssh (8.2p1-1)
  12. ssh-copy-id (2015-03-22)
  13. win32-openssh (8.1.0.0p1-Beta)

可以看到,在extras和main两个bucket中均有收录

卸载与更新

卸载软件,比如:

  1. scoop uninstall 7zip

更新scoop及软件:

  1. scoop update #更新scoop
  2. scoop update 7zip #更新7zip
  3. scoop * #更新全部

移除所有旧版本:

  1. scoop cleanup *

查看已安装的软件

如果想要查看所有通过Scoop安装的软件,使用scoop list命令:

  1. $ scoop list
  2. Installed apps:
  3. 7zip 19.00
  4. anaconda3 2020.02 [dorado]
  5. aria2 1.35.0-1
  6. cacert 2020-01-01
  7. dart *failed*
  8. dropit 8.5.1 [lukesampson]
  9. erlang *failed*
  10. everything 1.4.1.969 [dodorz]
  11. fiddler *failed*
  12. FiraCode 3.1 [nerd-fonts]
  13. git 2.26.2.windows.1
  14. go 1.14.2
  15. innounp 0.49
  16. IntelliJ-IDEA *failed*
  17. listary 5.00.2843 [lukesampson]
  18. nodejs 14.0.0
  19. quicker 1.5.25.0 [dodorz]
  20. SarasaGothic 0.10.2 [nerd-fonts]
  21. typora 0.9.86 [extras]
  22. vim 8.2
  23. wget 1.20.3
  24. yarn 1.22.4

导出软件列表:

  1. scoop list > C:/scoop/ScoopAppList.txt

获取帮助

通过以下命令可以看到帮助:

  1. $ scoop -h
  2. Usage: scoop <command> [<args>]
  3. Some useful commands are:
  4. alias Manage scoop aliases
  5. bucket Manage Scoop buckets
  6. cache Show or clear the download cache
  7. checkup Check for potential problems
  8. cleanup Cleanup apps by removing old versions
  9. config Get or set configuration values
  10. create Create a custom app manifest
  11. depends List dependencies for an app
  12. export Exports (an importable) list of installed apps
  13. help Show help for a command
  14. hold Hold an app to disable updates
  15. home Opens the app homepage
  16. info Display information about an app
  17. install Install apps
  18. list List installed apps
  19. prefix Returns the path to the specified app
  20. reset Reset an app to resolve conflicts
  21. search Search available apps
  22. status Show status and check for new app versions
  23. unhold Unhold an app to enable updates
  24. uninstall Uninstall an app
  25. update Update apps, or Scoop itself
  26. virustotal Look for app's hash on virustotal.com
  27. which Locate a shim/executable (similar to 'which' on Linux)
  28. Type 'scoop help <command>' to get help for a specific command.

如果想要看某个命令的具体用法使用:

  1. scoop help <command>

比如:

  1. $ scoop help bucket
  2. Usage: scoop bucket add|list|known|rm [<args>]
  3. Add, list or remove buckets.
  4. Buckets are repositories of apps available to install. Scoop comes with
  5. a default bucket, but you can also add buckets that you or others have
  6. published.
  7. To add a bucket:
  8. scoop bucket add <name> [<repo>]
  9. e.g.:
  10. scoop bucket add extras https://github.com/lukesampson/scoop-extras.git
  11. Since the 'extras' bucket is known to Scoop, this can be shortened to:
  12. scoop bucket add extras
  13. To list all known buckets, use:
  14. scoop bucket known

其他命令

打开指定软件的主页,比如Typora:scoop home typora
007.gif

参考资料: