September 15, 2023
By: Kevin

Scoop: Windows下的命令行软件包管理器

  1. 安装
    1. 直接安装
    2. 使用国内镜像安装
    3. 安装emacs或clojure需要添加extras库
    4. 高级安装选项
    5. 管理员(admin)安装
  2. 工作原理
  3. 术语
  4. 常用命令
    1. 查找应用
    2. 安装命令行程序
    3. 卸载程序
    4. 更新程序
    5. 查看所有已经安装的应用
    6. 添加新的源(Bucket)
    7. 查看软件状态
  5. 备份与迁移已安装的Scoop软件
    1. 导出已安装的软件列表
    2. 将Scoop文件夹复制到新电脑
    3. 在新电脑上导入软件列表
    4. 更新Shim(可选)

Scoop 是由开发者 Luke Sampson 开发的开源软件包管理工具, 主要针对 Windows 操作系统. 类似于 macOS 上的 Homebrew, Scoop 可以帮助用户轻松安装, 卸载和管理软件.

Scoop 主要专注于命令行工具的安装, 对于软件开发者和高级用户来说非常便捷. 以下是我scoop中安装的软件列表, 相信你也一样需要的.

scoop list
Installed apps:

Name         Version       Source        Updated             Info
----         -------       ------        -------             ----
7zip         23.01         main          2023-08-25 13:58:33
ag           2.2.5         main          2023-06-07 10:58:10
autohotkey   2.0.10        extras        2023-11-19 14:38:28
babashka     1.3.186       scoop-clojure 2023-11-19 14:44:48
clojure      1.11.1.1413   scoop-clojure 2023-11-19 14:44:52
emacs        29.1          extras        2023-08-25 17:18:58
fzf          0.44.1        main          2023-11-19 14:44:54
git          2.43.0        main          2023-11-29 17:53:49
leiningen    2.10.0        main          2023-03-09 10:48:41
nmap         7.94          main          2023-05-26 12:16:01
nodejs       21.2.0        main          2023-11-19 14:45:53
openjdk19    19.0.2-7      java          2023-03-09 10:20:17
pandoc       3.1.9         main          2023-11-19 14:46:01
perfview     3.1.6         extras        2023-11-19 14:49:28
sqlite       3.44.2        main          2023-11-29 17:53:53
time         0.2018.07.25  main          2023-11-27 17:40:19
unxutils     2007.03.01    main          2023-03-09 11:26:59
vcredist2015 14.0.24215.1  extras        2023-03-09 11:54:55
vcredist2022 14.38.33130.0 extras        2023-11-19 14:46:41

注意到不同的程序来自不同的bucket, 比如emacs就来自extras这个bucket.

最初安装scoop之后, 只有一个main bucket, 其他需要手动添加, 比如说:scoop bucket add extras.

安装

直接安装

通过 PowerShell 运行以下命令进行安装:

Set-ExecutionPolicy RemoteSigned -scope CurrentUser
iex (new-object net.webclient).downloadstring('https://get.scoop.sh')

使用国内镜像安装

由于直接访问 GitHub 在国内可能会有些不稳定, 你也可以选择使用国内的镜像源来进行安装.

请参考:

https://github.com/lzwme/scoop-proxy-cn

安装emacs或clojure需要添加extras库

安装scoop-clojure 参考:https://github.com/littleli/scoop-clojure

# if you don't have git version control system installed
# it is required for adding new external buckets to your scoop installer
# you can skip this step otherwise
scoop install git

# add scoop bucket for Java
scoop bucket add java

# add scoop bucket with extras, here there is a dependency on visual studio redistributable 'extras/vcredist2022'
scoop bucket add extras

# add scoop bucket for clojure build
scoop bucket add scoop-clojure https://github.com/littleli/scoop-clojure

Tips:下载bucket的时候需要翻墙,参考:好心人局域网

高级安装选项

scoop安装时候如果想加入一些高级设置(比如说安安装到D盘). 需要先把脚本下载到本地, 然后可以加参数执行.

irm get.scoop.sh -outfile 'install.ps1'

可以查看所有的高级选项:

.\install.ps1 -?

举个例子: scoop程序本身安装到D盘, 通过scoop安装的程序放到F盘, 而且安装时候绕过系统代理(如果已经配置)

.\install.ps1 -ScoopDir 'D:\Applications\Scoop' -ScoopGlobalDir 'F:\GlobalScoopApps' -NoProxy

管理员(admin)安装

scoop默认是低权限执行的(非admin用户), 如果以admin用户的权限执行, 会遭到拒绝.

如果确实想以admin身份安装, 可以通过执行时候添加参数-RunAsAdmin执行.

irm get.scoop.sh -outfile 'install.ps1'
.\install.ps1 -RunAsAdmin [-OtherParameters ...]
# I don't care about other parameters and want a one-line command
iex "& {$(irm get.scoop.sh)} -RunAsAdmin"

工作原理

Scoop 使用一个简单的 JSON 格式文件(即"桶"(bucket))来获取软件的信息和安装方式.

  • 从指定的桶(bucket)获取软件信息(即" 配方" (formula)或" 小木桶" (keg)).
  • 根据配方进行依赖解析和软件安装.
  • 软件被安装在用户的 ~/scoop/ 目录下, 不会影响系统目录.

术语

  • Bucket(桶): Scoop的软件源, 存储了多个软件的安装信息.
  • App(应用): 在Scoop中, 软件被称为 App.
  • Manifest(清单): 存储在桶里的JSON文件, 描述了如何安装和卸载应用.
  • Shim(垫片): 一个轻量级的代理执行文件, 用于在命令行下直接运行应用.

常用命令

查找应用

使用 scoop search 命令:

scoop search git

安装命令行程序

例如安装 Git:

scoop install git

卸载程序

scoop uninstall git

更新程序

scoop update git

或更新所有:

scoop update *

查看所有已经安装的应用

scoop list

添加新的源(Bucket)

scoop bucket add my-bucket

查看软件状态

scoop info git

备份与迁移已安装的Scoop软件

如果你已经在一台电脑上通过 Scoop 安装了多个软件, 而现在你希望将这些软件复制或迁移到另一台电脑上, 以下是一些方法:

导出已安装的软件列表

首先, 在源电脑上, 你可以导出所有已安装的软件列表到一个文本文件中:

scoop export > installed_apps.txt

这会生成一个名为 installed_apps.txt 的文本文件, 其中包含所有通过 Scoop 安装的软件.

将Scoop文件夹复制到新电脑

接下来, 你可以将源电脑上的 ~/scoop/ 文件夹整个复制到新电脑上的同一位置.

注意: 请确保目标电脑上没有预先安装 Scoop, 否则这一步可能会覆盖目标电脑上的 Scoop 安装.

在新电脑上导入软件列表

installed_apps.txt 文件复制到目标电脑上, 并在目标电脑的 PowerShell 中运行以下命令:

scoop import installed_apps.txt

这会从文本文件 installed_apps.txt 中读取软件列表, 并开始在新电脑上安装这些软件.

更新Shim(可选)

在复制文件和导入软件列表之后, 你可能还需要更新 Shim 以确保所有的命令行工具都能正常运行:

scoop reset *

这样, 你就成功地将所有通过 Scoop 安装的软件从一台电脑复制或迁移到了另一台电脑.

注意: 某些软件可能依赖于特定的系统环境或配置, 因此即使你复制了所有的文件和安装信息, 也不能保证所有软件都能在新电脑上正常运行.

通过这些步骤, 可以更方便地将一台电脑上的 Scoop 配置迁移到另一台电脑, 从而节省重新安装和配置软件所需的时间和精力.

Tags: 工具 powershell windows