Windows 下最好的便携式包管理工具 - Scoop

发布时间 2023-04-09 23:26:49作者: lsq27
title: Windows 下最好的便携式包管理工具 - Scoop
date: 2022-02-07 12:51:14
tags: [Windows, package manager, Scoop, PowerShell]
description: 绿色便携软件爱好者的福音 - Scoop,在 Windows 下也可以享受 Linux 的包管理工具的快乐

Scoop 是什么

Scoop是一个 Windows 下的命令行安装器。其官网的自我介绍是

Scoop 以阻力最小的方式从命令行安装您熟悉和喜爱的程序,它可以:

  • 消除权限弹出窗口
  • 隐藏安装程序的界面
  • 防止安装大量程序对 PATH 的污染
  • 避免安装和卸载程序的意外副作用
  • 查找并安装依赖项
  • 执行所有额外的程序设置步骤

为什么要用 Scoop

以前我要安装一个软件,我会

  • 搜索引擎搜索 node
  • 打开官网 (注意避开广告!)
  • 寻找适合版本的下载链接,使用下载工具下载
  • 打开安装包配置我需要的参数并安装

通过 Scoop 安装一个软件的,只需输入一个命令,Scoop 帮我们

  • 下载安装包(压缩包)
  • 安装(解压)
  • 链接安装目录
  • 持久化文件
  • 执行脚本

Scoop 不只帮我们省略了找到安装包的过程,还免去了安装时的配置过程(Scoop 在安装脚本中写明了最佳的安装配置),更妙的是全程都没用到管理员权限,自然也不必担心安装包对操作系统未知的修改(比如偷偷装个证书,设置自己为开机启动)。

和自行安装软件相比,我认为 Scoop 的优点有

  • 软件数量多,官方桶中包含约 4000 个软件,第三方桶也有丰富应用
  • 安装不依赖管理员权限,除了极少数特殊软件需要修改注册表或者安装到管理员目录
  • 自动配置,安装时采用默认配置,Scoop 默认把路径设置为自己的目录,开机自启动等设置为否,简化安装步骤
  • 自动安装依赖
  • 自动添加命令行程序的链接到 ~/scoop/shims ,然后再将该目录添加到环境变量,自动添加 GUI 程序的快捷方式到开始菜单
  • 比 Linux 的包管理工具更便携的软件管理体验,即使重装系统也能快速恢复软件环境

快速开始

安装 Scoop

打开 PowerShell (版本号大于等于 5.1),执行以下命令

> Set-ExecutionPolicy RemoteSigned -Scope CurrentUser # 获取执行脚本权限
> irm get.scoop.sh | iex
> irm get.scoop.sh -Proxy 'http://<ip:port>' | iex # 使用代理连接 GitHub

Scoop 会被安装到 C:\Users\<YOUR USERNAME>\scoop 目录下,如果想自定义安装目录

> irm get.scoop.sh -outfile 'install.ps1'
> .\install.ps1 -ScoopDir 'D:\Applications\Scoop' -ScoopGlobalDir 'F:\GlobalScoopApps'

管理软件

搜索软件

搜索可安装软件,列出所有符合条件的软件

> scoop search name

查看已安装软件

列出已安装软件

> scoop list

查看软件信息

查看软件信息,如主页,描述,最后更新时间

> scoop info name

安装软件

安装指定名称软件

> scoop install nodejs-lts
> node -v

更新软件

更新指定软件

> scoop update name
> scoop update * # 更新所有软件

卸载软件

卸载指定软件,执行卸载脚本(删除环境变量等)

> scoop uninstall name

清理软件

软件更新后旧版本并不会被卸载,执行命令进行清理

> scoop uninstall *

桶管理

桶(bucket)保存着 Scoop 的可安装软件信息。安装完毕后只有一个桶 - main

搜索桶

只能在 web 中搜索可用桶

列出官方认证的桶

> scoop bucket known

列出已添加桶

> scoop bucket list

添加桶

> scoop bucket add extras # 含 GUI 的软件
> scoop bucket add versions # 旧版软件
> scoop bucket add nerd-fonts # 字体
> scoop bucket add nonportable # 非便携软件
> scoop bucket add java # 各种jdk
> scoop bucket add dorado https://github.com/chawyehsu/dorado # 半官方性质的桶

删除桶

> scoop bucket rm name

进阶用法

优化搜索速度

scoop 的 search 命令会搜索远程服务器,而 scoop-search 只搜索本地桶内容

> scoop install scoop-search
> scoop-search name

软件重名

如果软件重名,使用如下方式安装

> scoop install bucket/name

指定软件版本

如果要安装旧版软件且 versions 中没有,使用如下方式安装

> scoop install name@version

一个该软件的 manifest 将会被生成在 ~\scoop\workspace,该软件将不会被更新

多版本软件优先级

如果你安装了一个软件的多个衍生版本,例如 temurin-lts-jdk 和 temurin8-jdk,最后一个安装的版本将会在命令行生效,如果需要在命令行使用其他版本,执行

> scoop reset name