简介
Scoop 是一个 Windows 应用安装器,可以从命令行安装和管理各种应用。
需要注意的是,Scoop 不是一个软件包管理器,它没有提供任何注册发布应用的仓库。简单而言,Scoop 的“仓库”只提供应用的下载地址、安装方式以及依赖等信息。通常,应用还是从其官方下载地址下载到本地进行安装的。
安装
Scoop 依赖于 Powershell 和 .NET Framework,因此,安装 Scoop 前请确保已经正确安装了它们。
随着 Scoop 版本升级,依赖的 Powershell 及 .Net Framework(或 .Net Core)版本也在升级,需确保依赖版本符合要求。
【FAQ】Scoop 安装成功后,执行某些 scoop 命令会报错。推测可能是 Powershell 某些版本的 Bug,尝试使用新版本通常可以解决。
Scoop 是基于 PowerShell 的,因此,下文中命令行特指的是 PowerShell 命令行环境。
通常需要事先设置 PowerShell 的执行策略。
1 | Set-ExecutionPolicy RemoteSigned -scope CurrentUser |
默认情况(Windows 客户端)下,PowerShell 执行脚本是受限的,所以需要设置执行策略,以使安装脚本可执行。
命令行执行如下命令即可安装:
1 | irm get.scoop.sh | iex |
该命令将从 GitHub 下载并安装 Scoop,因此如果访问速度较慢,可以使用代理。
注意:默认需要在非管理员权限下安装,否则将阻止安装。
自定义安装
如果使用上面的命令直接安装 Scoop,那么 Scoop 会使用默认配置——应用的安装位置将是默认的。
Scoop 安装用户应用的默认位置是:
~/scoop
,安装全局应用的默认位置是:C:\ProgramData\scoop
。
scoop install
命令默认情况下仅为当前用户安装应用,除非指定-g
选项将应用安装为全局的。对于个人电脑而言,一般只有一个用户,所以,通常我们不太关心应用是否全局安装。
通过高级安装可以进行更多配置。
1 | # 下载安装脚本(也可在 GitHub 库下载) |
【过时的配置】
老版本通过环境变量设置安装目录,虽然已不推荐使用,但目前仍是有效的。
1 | # 设置用户环境变量 SCOOP |
设置环境变量后执行
irm get.scoop.sh | iex
会安装 Scoop 到环境变量指向的位置。
-g
是--global
的缩写。
卸载
Scoop 可以在命令行自己卸载自己哦:
1 | scoop uninstall scoop |
开始使用
要上手 Scoop 这样的工具,最简单的当然是使用它自带的帮助系统了。
1 | scoop help |
该命令会列出 Scoop 所有可用的子命令。
然后,还可以进一步查看这些子命令的帮助信息:
1 | scoop help <SUB-CMD> |
这会列出子命令的详细描述、用法、示例、选项等等信息。参考示例便可以快速上手熟悉这些命令。
常用命令
使用 Scoop 最常用的操作就是查找、安装、更新、卸载……
以下便是最常用的命令:
1 | # 查找指定应用,可仅提供部分应用名 |
Bucket
作为一个“应用安装器”,Scoop 使用 Bucket 来定义软件源。
注意:Bucket 维护的是应用相关信息清单,而不是应用本身。Scoop 没有用于存放应用的中央仓库。
Scoop 提供了一个内置的 main bucket,存放了许多“符合标准”的应用。
默认情况下,当执行 scoop search
、scoop install
等命令时,Scoop 便是从 main bucket 中搜索应用的。
但这不足以满足各种人群的需要,因此,Scoop 还提供了几个 known bucket,通过以下命令可查看它们的名字:
1 | scoop bucket known |
这些 known bucket 通常都是 GitHub 项目,使用如下命令可为 Scoop 添加指定的 known bucket:
1 | scoop bucket add <NAME> |
添加 known bucket 后就可以从其中搜索安装应用了。
如果这些 bucket 还满足不了你的需求,那么,我们甚至可以自己创建一个 bucket,但这已超出了本文的讨论范围,这里就不展开了。但是,GitHub 已有很多别人创建的 bucket,可以直接拿来就用——只需要在添加 bucket 时指定其 GitHub 库地址即可:
1 | scoop bucket add ericzone https://github.com/ericzong/ericzone.git |
那要怎么发现这些 bucket 呢?答案是使用 scoop-directory。
这个在线工具可以搜索 GitHub 上的 bucket 中的应用,搜索应用的同时可以发现这些 bucket 了。
实践
学习了常用命令,以及添加资源库后,就可以开始实践了,真正使用才能熟练并且深入理解。
示例
切换 JDK 版本
像 JDK 这样的应用,通常会安装多个版本,使用 scoop reset
命令可以轻易地在多个版本间切换。
1 | scoop install openjdk12 |
其原理是将
bin
目录重新添加到path
环境变量的最前面。
多线程下载
默认情况下,Scoop 在下载应用时是单线程的,直接的感受是——慢,借助 aria2 可以使 Scoop 具有多线程下载的能力。当然,你需要先安装 aria2,然后执行以下命令:
1 | scoop install aria2 |
代理配置
命令行代理
1 | set http_proxy=http://host:port |
通过代理安装 scoop
1 | # If you want to use a proxy that isn't already configured in Internet Options |
为 scoop 配置代理
1 | scoop config proxy [username:password@]host:port |
为 git 配置代理
scoop 很多更新操作是基于 GitHub 的,因此,通常也会为 git 配置代理。
1 | git config --global http.proxy http://host:port |
参考
命令列表
命令 | 说明 |
---|---|
alias | Manage scoop aliases |
bucket | Manage Scoop buckets |
cache | Show or clear the download cache |
checkup | Check for potential problems |
cleanup | Cleanup apps by removing old versions |
config | Get or set configuration values |
create | Create a custom app manifest |
depends | List dependencies for an app |
export | Exports (an importable) list of installed apps |
help | Show help for a command |
home | Opens the app homepage |
info | Display information about an app |
install | Install apps |
list | List installed apps |
prefix | Returns the path to the specified app |
reset | Reset an app to resolve conflicts |
search | Search available apps |
status | Show status and check for new app versions |
uninstall | Uninstall an app |
update | Update apps, or Scoop itself |
virustotal | Look for app’s hash on virustotal.com |
which | Locate a shim/executable (similar to ‘which’ on Linux) |
这是
scoop help
的输出。