• 首页

  • 分类&标签

  • 归档

  • 手册

  • 项目池

  • 友链

  • 关于
伯 乐 讲 堂
伯 乐 讲 堂

查看「系列思维导图」

侠客 · Mr.潘

获取中...

04
21
其他

Windows 包管理器 - Scoop

发表于 2021-04-21 • 其他 效率工具 • 被 780 人看爆

Scoop 是做什么?

Scoop从命令行以最小的安装量安装程序。它试图消除类似的东西:

  • 权限弹出窗口
  • GUI向导样式的安装程序
  • 安装大量程序造成的路径污染
  • 安装和卸载程序产生的意外副作用
  • 查找和安装依赖项的需要
  • 需要执行额外的设置步骤才能获得有效的程序
    Scoop具有很好的脚本编写能力,因此您可以运行可重复的设置以使自己的环境如您所愿,例如:
scoop install sudo
sudo scoop install 7zip git openssh --global
scoop install aria2 curl grep sed less touch
scoop install python ruby go perl

前置条件

  • Windows 7 SP1+ / Windows Server 2008+
  • PowerShell >= 5.0 (如果是 Window10 则默认满足此条件)
# 查看 PowerShell 版本
$PSVersionTable
  • 请确保已允许PowerShell执行本地脚本,可以使用下面的命令开启
set-executionpolicy remotesigned -scope currentuser

# 或者 (但是它没有上面的命令安全)
set-executionpolicy Unrestricted -scope currentuser

Scoop 安装与配置

前置要求

  • Windows 7 SP1+ / Windows Server 2008+

  • PowerShell >= 5.0 (如果是 Window10 则默认满足此条件)

    # 查看 PowerShell 版本
    $PSVersionTable
    
  • 请确保已允许PowerShell执行本地脚本,可以使用下面的命令开启

    set-executionpolicy remotesigned -scope currentuser
    
    # 或者 (但是它没有上面的命令安全)
    set-executionpolicy Unrestricted -scope currentuser
    

默认安装

从你的PowerShell运行以下命令,将scoop安装到其默认位置(C:\Users\<user>\scoop)

# 方式一:
Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')

# 方式二:
iwr -useb get.scoop.sh | iex

安装完成后,运行scoop help以获取说明。
备注:

  • 用户级别安装的程序 和 Scoop 本身默认安装于 C:\Users\<user>\scoop。
  • 全局安装的程序(所有用户可用,使用 --global 或 -g 选项)位于C:\ProgramData\scoop路径中。

将 Scoop 安装到自定义目录

打开 PowerShell 先配置环境变量 SCOOP,再运行 iex

$env:SCOOP='D:\Scoop'
# 先添加用户级别的环境变量 SCOOP
[environment]::setEnvironmentVariable('SCOOP',$env:SCOOP,'User')

## 下载安装

# 然后下载安装 Scoop (如果使用默认安装路径则直接运行下面的命令)
iex (new-object net.webclient).downloadstring('https://get.scoop.sh')

# 或者使用下面的命令安装:
iwr -useb get.scoop.sh | iex

配置全局安装路径 (可选,建议不改)

$env:SCOOP_GLOBAL='D:\GlobalScoopApps'
[environment]::setEnvironmentVariable('SCOOP_GLOBAL',$env:SCOOP_GLOBAL,'Machine')

为什么需要全局安装

对于那些需要管理员权限的程序需要进行全局安装。我当前遇到的是当使用 Scoop 安装字体时需要使用全局安装,因为字体需要给所有用户使用。

初次安装 Scoop 后,建议安装的程序:

# 但 scoop 进行全局安装时需要使用到 sudo 命令
scoop install sudo

# scoop下载程序时支持使用 aria2 来加速下载,你可以用scoop config命令调整以下aria2设置。
# * aria2-enabled (default: true)
# * aria2-retry-wait (default: 2)
# * aria2-split (default: 5)
# * aria2-max-connection-per-server (default: 5)
# * aria2-min-split-size (default: 5M)
scoop install aria2

我们可以发现,下载的过程中自动下载了依赖 7-zip。 在安装方面,它利用了 7zip 去解 压安装包/压缩包,因此它对绿色软件有天生的友好属性 。不仅如此,下载之后的内容会自 动将加入到(Path)环境变量中,十分方便。

补充: 初次安装之后我们可以通过运行 scoop checkup 来检测当前潜在问题,然后根据提示进行修正。

# 检测本人当前环境存在的问题
scoop checkup

WARN  Windows Defender may slow down or disrupt installs with realtime scanning.
Consider running:
 sudo Add-MpPreference -ExclusionPath 'D:\Scoop\Applications'
(Requires 'sudo' command. Run 'scoop install sudo' if you don't have it.)
WARN  Windows Defender may slow down or disrupt installs with realtime scanning.
Consider running:
 sudo Add-MpPreference -ExclusionPath 'C:\ProgramData\scoop'
(Requires 'sudo' command. Run 'scoop install sudo' if you don't have it.)
WARN  LongPaths support is not enabled.
You can enable it with running:
 Set-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem' -Name 'LongPathsEnabled' -Value 1
ERROR 'dark' is not installed! It's required for unpacking installers created with the WiX Toolset. Please run 'scoop install dark' or 'scoop install wixtoolset'.
WARN  Found 4 potential problems.

可以看到存在三个警告(WARN),一个错误(ERROR),并给出了解决对应问题的命令:

  • 前两个警告(WARN)提示:杀毒软件 Windows Defender 有可能会使得下载变慢或阻止安装
  • 第三个警告(WARN)提示:Windows中的 NTFS 中默认不允许大于 260 个字符(byte)的文件全路径存在的限制还未解除。(可能需要添加sudo才能运行给出的命令)
  • 最后一个错误提示(ERROR):需要安装 dark 才能解压使用 WiX Toolset 创建的安装包。

Scoop 的设计与实现理念

  • 分离用户数据:默认将程序的 用户数据 存储到 persist 目录中,这样当用户日 后升级该程序后之前的用户配置依然可用。(但是对于部分程序支持的不是很完善)
  • shim软链接: scoop 会自动在 scoop 应用安装路径下的 shims 文件夹下为新安装 的程序添加对应的 .exe 文件,而 shims 文件夹提前就已被添加到 PATH 环境变 量中,所以程序一旦安装就可以直接在命令行中运行。
  • 对于 GUI 程序 ,scoop 还会自动为其在开始菜单中添加快捷方式 ,路径: C:\Users\<user>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Scoop Apps

Scoop 常用命令

scoop help # 查看帮助
scoop help <某个命令> # 具体查看某个命令的帮助

scoop install <app>   # 安装 APP
scoop uinstall <app>  # 卸载 APP

scoop list  # 列出已安装的 APP
scoop search # 搜索 APP
scoop status # 检查哪些软件有更新

scoop update # 更新 Scoop 自身
scoop update <app1> <app2> # 更新某些app
scoop update *  # 更新所有 app (前提是需要在apps目录下操作)

scoop bucket known #通过此命令列出已知所有 bucket(软件源)
scoop bucket add bucketName #添加某个 bucket

scoop cache rm <app> # 移除某个app的缓存

安装卸载软件

# 安装之前,通过 search 搜索 APP, 确定软件名称
scoop search  xxx

# 安装 APP
scoop install <app>

# 安装特定版本的 APP;语法 AppName@[version],示例
scoop install git@2.23.0.windows.1

# 卸载 APP 
scoop uninstall <app> # 卸载 APP

更新软件

scoop update # 更新 Scoop 自身

scoop update appName1 appName2 # 更新某些app

# 更新所有 app (可能需要在apps目录下操作)
scoop update *

# 禁止某程序更新
scoop hold <app>
# 允许某程序更新
scoop unhold <app>

清除缓存与旧版本

# 查看所有以下载的缓存信息
scoop cache show

# 清除指定程序的下载缓存
scoop cache rm <app>

# 清除所有缓存
scoop cache rm *

# 删除某软件的旧版本
scoop cleanup <app>

# 删除全局安装的某软件的旧版本
scoop cleanup <app> -g

# 删除过期的下载缓存
scoop cleanup <app> -k

在同一程序的不同版本之间切换

scoop reset [app]@[version]

# 示例
scoop reset idea-ultimate-eap@201.6668.13

scoop reset idea-ultimate-eap@201.6073.9

# 切换到最新版本
scoop reset idea-ultimate-eap

其它命令

# 显示某个app的信息
scoop info <app>

# 在浏览器中打开某app的主页
scoop home <app>

添加软件源 Bucket

Scoop 可安装的软件信息存储在 Bucket(翻译为:桶)中,也可以称其为软件源。Scoop 默认的 Bucket 为 main ;官方维护的另一个 Bucket 为 extras,我们需要手动添加。

# bucket的用法
scoop bucket add|list|known|rm [<args>]

添加 extras :

scoop bucket add extras

我们也可以添加第三方 bucket ,示例:

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

# 并且明确指定安装此 bucket (软件源)中的的程序:
scoop install dorado/<app_name>
# 下面是dorado中特有的软件,测试其是否添加成功
scoop search trash

推荐的 Bucket(软件源):

  • extras:Scoop 官方维护的一个仓库,涵盖了大部分因为种种原因不能被收录进主仓库 的常用软件(在我看来是必须要添加的)。地址 :lukesampson/scoop-extras
  • nirsoft:是一个 NirSoft 开发的小工具的安装合集。NirSoft 制作了大量的小工具,包括系统工具、网络工具、密码恢复等等,孜孜不倦、持续更新。
    • Bucket 地址 :kodybrown/scoop-nirsoft
    • NirSoft 官网地址:NirSoft
  • dorado(添加了一些国内的app,比如 qqplayer 👍🏻️ )h404bi/dorado
  • ash258:Ash258/scoop-Ash258
  • java:添加后可以通过它安装各种 jdk 、 jre
  • nerd-fonts :包含各种字体
  • scoop-apps:合并多个 scoop 仓库,kkzzhizhou/scoop-apps
# 先添加 bucket
scoop bucket add extras
scoop bucket add nirsoft
scoop bucket add dorado https://github.com/h404bi/dorado
scoop bucket add Ash258 'https://github.com/Ash258/Scoop-Ash258.git'
scoop bucket add nerd-fonts

# 对于开发人员,可添加下面的两个
scoop bucket add java
scoop bucket add versions

bucket 更新时遇到问题

情况是这样:当我运行 scoop update 进行更新时提示: extras bucket 更新失败。于是我将其删除后再添加,提示成功,但是它却把 main bucket (默认的 bucket) 给删除了。通过"scoop status"检查状态时出现 “These app manifests have been removed"并且下面列出了已被移除的软件名单。 那么如何解决此问题?

我们需要重新添加 main bucket :

scoop bucket add main # 添加 main bucket

网络问题导致 app 安装失败

scoop install mediainfo

# 当安装 mediainfo 时由于网络问题,安装包无法下载,从命令行输出信息中可以看到如下内容
ERROR Download failed! (Error 1) An unknown error occurred
ERROR https://mediaarea.net/download/binary/mediainfo/19.09/MediaInfo_CLI_19.09_Windows_x64.zip
    referer=https://mediaarea.net/download/binary/mediainfo/19.09/
    dir=D:\Scoop\Applications\cache
    out=mediainfo#19.09#https_mediaarea.net_download_binary_mediainfo_19.09_MediaInfo_CLI_19.09_Windows_x64.zip

ERROR & 'D:\Scoop\Applications\apps\aria2\current\aria2c.exe' --input-file='D:\Scoop\Applications\cache\mediainfo.txt'

我们可以发现文件的下载路径和下载后的文件名称,这里 out= 后面的压缩包就是下载后 文件的名称,(也可以在 scoop 的 cache 目录下的 mediainfo.txt 文件中找到下载路径与文件名称)

然后我们可以尝试在浏览器或其他下载程序中(可以 fq 的程序中)下载该程序,下载完成后再更改文件名并将其放入 scoop 的 cache 目录,最后再次运行 scoop install mediainfo 即可安装。

如何利用 aria2 进行断点续传

# 更新 vscode
scoop update vscode-portable

scoop 更新 vscode 时下载到 80%的时候 失败了(安装时处理方法也一样)。我们需要在提示中找到如下内容:

'D:\Scoop\Applications\apps\aria2\current\aria2c.exe' --input-file='D:\Scoop\Applications\cache\vscode-portable.txt' 
--user-agent='Scoop/1.0 (+http://scoop.sh/) PowerShell/5.1 (Windows NT 10.0; Win64; x64; Desktop)' 
--allow-overwrite=true --auto-file-renaming=false --retry-wait=2 
--split=5 --max-connection-per-server=5 --min-split-size=5M 
--console-log-level=warn --enable-color=false --no-conf=true 
--follow-metalink=true --metalink-preferred-protocol=https 
--min-tls-version=TLSv1.2 --stop-with-process=15584 --continue

我们从上面的信息中提取出下面的命令;若要进行断点续传,只需再次执行下面的命令即可:

aria2c.exe --input-file='D:\Scoop\Applications\cache\vscode-portable.txt'

示下载完成后,我们需要再次运行 scoop 对应的 app 更新命令(或安装命令),即可完成 app 更新(或安装):

scoop update vscode-portable

安装和切换 JDK、Python 的版本

这里需要使用 scoop reset 它的作用是:重置一个应用程序来解决冲突。

scoop reset <java>[@<version>]

安装和切换不同的 JDK 版本:

PS C:> scoop bucket add java

PS C:> scoop install oraclejdk
Installing 'oraclejdk' (12.0.2-10) [64bit]

PS C:> scoop install zulu6
Installing 'zulu6' (6.18.1.5) [64bit]

PS C:> scoop install openjdk10
Installing 'openjdk10' (10.0.1) [64bit]

PS C:> java -version
openjdk version "10.0.1" 2018-04-17
OpenJDK Runtime Environment (build 10.0.1+10)
OpenJDK 64-Bit Server VM (build 10.0.1+10, mixed mode)

PS C:> scoop reset zulu6
Resetting zulu6 (6.18.1.5).
Linking ~\scoop\apps\zulu6\current => ~\scoop\apps\zulu6\6.18.1.5

PS C:> java -version
openjdk version "1.6.0-99"
OpenJDK Runtime Environment (Zulu 6.18.1.5-win64) (build 1.6.0-99-b99)
OpenJDK 64-Bit Server VM (Zulu 6.18.1.5-win64) (build 23.77-b99, mixed mode)

PS C:> scoop reset oraclejdk

PS C:> java -version
java version "12.0.2" 2019-07-16
Java(TM) SE Runtime Environment (build 12.0.2+10)
Java HotSpot(TM) 64-Bit Server VM (build 12.0.2+10, mixed mode, sharing)

安装和切换不同的 Python 版本:

 # add the 'versions' bucket if you haven't already
scoop bucket add versions

scoop install python27 python
python --version # -> Python 3.6.2

# switch to python 2.7.x
scoop reset python27
python --version # -> Python 2.7.13

# switch back (to 3.x)
scoop reset python
python --version # -> Python 3.6.2

常用安装清单

scoop list

  7zip 19.00
  adoptopenjdk-lts-hotspot 11.0.6-10 [java]
  AnonymousPro-NF 2.0.0 *global* [nerd-fonts]
  aria2 1.35.0-1
  Cascadia-Code 1911.21 *global* [nerd-fonts]
  cmder 1.3.14
  copyq 3.10.0 [extras]
  dismplusplus 10.1.1001.10 [extras]
  eclipse-jee 2020-03 [extras]
  everything 1.4.1.935 [extras]
  FantasqueSansMono-NF 2.0.0 *global* [nerd-fonts]
  ffmpeg 4.2.2
  FiraCode-NF 2.0.0 *global* [nerd-fonts]
  geekuninstaller 1.4.7.142 [extras]
  gimp 2.10.18 [extras]
  git 2.26.0.windows.1
  gradle 6.1.1
  graphicsmagick 1.3.35
  Hack-NF 2.1.0 *global* [nerd-fonts]
  heidisql 11.0 [extras]
  hub 2.14.2
  hugo-extended 0.68.3
  idea-ultimate 2018.2.2 [extras]
  idea-ultimate-eap 201.6668.13 [extras]
  Inconsolata-NF 2.1.0 *global* [nerd-fonts]
  inkscape 0.92.4 [extras]
  innounp 0.49
  JetBrainsMono-NF 2.1.0 *global* [nerd-fonts]
  libreoffice-stable 6.4.2 [extras]
  lunacy 5.3.1 [extras]
  maven 3.6.3
  mkcert 1.4.1 [extras]
  Monoid-NF 2.1.0 *global* [nerd-fonts]
  mononoki-NF 2.1.0 *global* [nerd-fonts]
  mpv 2018-10-02 [extras]
  mRemoteNG 1.76.20.24669 [Ash258]
  nginx 1.17.8
  nodejs-lts 12.16.1
  notepad2-mod 4.2.25.998 [extras]
  Notepad3 5.19.815.2595 [extras]
  notepadplusplus 7.8.5 [extras]
  pandoc 2.9.2
  picgo 2.2.2 [dorado]
  powertoys 0.15.2 [extras]
  python 3.7.1
  python27 2.7.17 [versions]
  qbittorrent 4.2.2 [extras]
  rufus 3.9 [extras]
  runany 5.6.9 [dorado]
  SarasaGothic-SC 0.10.0 *global* [nerd-fonts]
  sass 1.25.0
  screentogif 2.22.1 [extras]
  sliksvn 1.9.7
  snipaste-beta 2.3-Beta [dorado]
  SourceCodePro-NF 2.1.0 *global* [nerd-fonts]
  sourcetrail 2020.1.106 [extras]
  sourcetree 3.3.8 [extras]
  sql-workbench 125 [extras]
  sudo 0.2020.01.26
  sudo 0.2020.01.26 *global*
  sumatrapdf 3.2 [extras]
  switchhosts 3.5.4 [extras]
  syncthing 1.4.0
  tomcat 9.0.33 [extras]
  trash 2.0.0 [dorado]
  uget-portable 2.2.2 [extras]
  utools 0.8.9-beta [dorado]
  VictorMono-NF 2.1.0 *global* [nerd-fonts]
  vscode 1.43.2 [extras]
  WindowsRepairToolbox 3.0.2.2 [Ash258]
  yarn 1.22.4
  zeal 0.6.1 [extras]
标题:Windows 包管理器 - Scoop
作者:侠客 · Mr.潘

读后有收获可以支付宝请作者喝咖啡,读后有疑问请加在下微信(pansfy)讨论:

Pycharm 设置 Python 脚本注释模板
编写好的测试用例
侠客 · Mr.潘

侠客 · Mr.潘

未来的你,会感谢今天仍正在奋斗的你

Github QQ Email RSS
看爆 Top10
  • 助力项目池 3,538次看爆
  • 第 4 节 yum 版的 LAMP 环境部署 2,535次看爆
  • 你的生产力工具集成就高效人士 1,880次看爆
  • 第 5 节 yum 版的 LNMP 环境部署 1,676次看爆
  • 第 3 节 企业级系统环境之上云篇 1,387次看爆
  • 服务端的架构的演进之路 1,284次看爆
  • 第 1 节 Docker 实践 1,190次看爆
  • 镜像仓库一文打尽 982次看爆
  • Docker本地私有镜像仓库Harbor搭建及配置 980次看爆
  • 第 6 节 源码版的LAMP环境部署 944次看爆

Copyright © 2023 侠客 · Mr.潘 · 苏ICP备19067937号

Proudly published with Halo · Theme by fyang · 站点地图