本文列举了Windows下的Scoop包管理器的各种使用技巧和相关知识;包含:
Scoop 的设计与实现理念;
自定义Scoop安装路径;
Scoop潜在错误排查;
更新或禁用软件更新;
Scoop别名的使用;
如何在Scoop中使用aria2进行断点续传;
如何在同一程序的不同版本之间切换,比如切换不同版本的JDK;
等等各种实用技巧
Scoop 包管理工具介绍
Windows 下常用的包管理工具有:
相比于Chocolatey,Scoop则更专注于开源的命令行工具,使用 Scoop 安装的应用程序通常称为"便携式"应用程序,需要的权限更少,对系统产生的副作用也更少,所以我这里选择了使用 Scoop。
⚠️️ 注意:对于像 VirtualBox、Docker for Windows ,输入法等这些需要高权限的软件还是通过在官网下载安装包进行安装。
Scoop 安装与配置
要求:
PowerShell >= 5.0 (如果是 Window10 则默认满足此条件)
请确保已允许PowerShell执行本地脚本,可以使用下面的命令开启:
1
2
3
4
set-executionpolicy remotesigned -scope currentuser
# 或者 (但是它没有上面的命令安全)
set-executionpolicy Unrestricted -scope currentuser
安装路径:
用户级别安装的程序 和 Scoop 本身默认安装于 C:\Users\<user>\scoop
全局安装的程序(所有用户可用,使用--global
或 -g
选项)位
于C\ProgramData\scoop
路径中。
可以通过更改对应的环境变量更改这些路径 。
将 Scoop 安装到自定义目录 :
打开 PowerShell 先配置环境变量 SCOOP
,再运行 iex
1
2
3
4
5
6
7
8
9
10
11
$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
配置全局安装路径 (可选,建议不改)
1
2
3
$env:SCOOP_GLOBAL = 'D:\GlobalScoopApps'
[environment] :: setEnvironmentVariable ( 'SCOOP_GLOBAL' , $env:SCOOP_GLOBAL , 'Machine' )
相当于在系统变量中设置: SCOOP_GLOBAL=D:\GlobalScoopApps
;默认是在
C:\ProgramData\scoop
。
为什么需要全局安装?
对于那些需要管理员权限的程序需要进行全局安装。我当前遇到的是当使用 Scoop 安装字体时需要使用全局安装,因为字体需要给所有用户使用。
初次安装 Scoop 后,建议安装的程序:
1
2
3
4
5
# 但 scoop 进行全局安装时需要使用到 sudo 命令
scoop install sudo
# scoop下载程序时支持使用 aria2 来加速下载
scoop install aria2
我们可以发现,下载的过程中自动下载了依赖 7-zip。 在安装方面,它利用了 7zip 去解
压安装包/压缩包,因此它对绿色软件有天生的友好属性 。不仅如此,下载之后的内容会自
动将加入到(Path)环境变量中,十分方便。
补充: 初次安装之后我们可以通过运行 scoop checkup
来检测当前潜在问题,然后根据提示进行修正。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 检测本人当前环境存在的问题
$ 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:\P rogramData\s coop'
(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 常用命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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的缓存
安装卸载软件
1
2
3
4
5
6
7
8
9
10
11
# 安装之前,通过 search 搜索 APP, 确定软件名称
scoop search xxx
# 安装 APP
scoop install <app>
# 安装特定版本的 APP;语法 AppName@[version],示例
scoop install [email protected]
# 卸载 APP
scoop uninstall <app> #卸载 APP
更新软件
包含:如何禁用更新
1
2
3
4
5
6
7
8
9
10
11
scoop update # 更新 Scoop 自身
scoop update appName1 appName2 # 更新某些app
# 更新所有 app (可能需要在apps目录下操作)
scoop update *
# 禁止某程序更新
scoop hold <app>
# 允许某程序更新
scoop unhold <app>
清除缓存与旧版本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 查看所有以下载的缓存信息
scoop cache show
# 清除指定程序的下载缓存
scoop cache rm <app>
# 清除所有缓存
scoop cache rm *
# 删除某软件的旧版本
scoop cleanup <app>
# 删除全局安装的某软件的旧版本
scoop cleanup <app> -g
# 删除过期的下载缓存
scoop cleanup <app> -k
别名
⚠️️ 注意:请在 Powershell 中运行下面的命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 可用操作
scoop alias add | list | rm [< args >]
## 添加别名,格式:
scoop alias add < name > < command > < description >
# 示例:(注意:必须在 Powershell中运行)
scoop alias add st 'scoop status' '检查更新'
# 检查已添加的别名
scoop alias list -v
Name Command Summary
---- ------- -------
st scoop status 检查更新
# 测试已添加的别名 st
scoop st
# 另一个示例:
scoop alias add rm 'scoop uninstall $args[0]' '卸载某 app'
在同一程序的不同版本之间切换
使用命令:
1
scoop reset [ app] @[ version]
示例:
对应版本的程序需要已经安装于本地系统中;所以在你清除某个软件的旧版本时考虑一下自己是否还会再次使用到此旧版本。
另外 idea-ultimate-eap 切换过程可能需要更长时间。
其它命令
1
2
3
4
5
6
7
8
# 显示某个app的信息
scoop info <app>
# 在浏览器中打开某app的主页
scoop home <app>
# 比如
scoop home git
添加软件源 Bucket
Scoop 可安装的软件信息存储在 Bucket(翻译为:桶)中,也可以称其为软件源。Scoop 默认的 Bucket 为 main
;官方维护的另一个 Bucket 为 extras
,我们需要手动添加。
1
2
# bucket的用法
scoop bucket add| list| known| rm [ <args>]
添加 extras :
1
scoop bucket add extras
我们也可以添加第三方 bucket ,示例:
1
scoop bucket add dorado https://github.com/h404bi/dorado
并且明确指定安装此 bucket (软件源)中的的程序:
1
2
3
scoop install dorado/<app_name>
# 下面是dorado中特有的软件,测试其是否添加成功
scoop search trash
推荐的 Bucket(软件源):
extras
:Scoop 官方维护的一个仓库,涵盖了大部分因为种种原因不能被收录进主仓库
的常用软件(在我看来是必须要添加的)。地址
:lukesampson/scoop-extras
nirsoft
:是一个 NirSoft 开发的小工具的安装合集。NirSoft 制作了大量的小工具,包括系统工具、网络工具、密码恢复等等,孜孜不倦、持续更新。
dorado(添加了一些国内的app,比如 qqplayer 👍🏻️
)h404bi/dorado
ash258:Ash258/scoop-Ash258
java:添加后可以通过它安装各种 jdk 、 jre
nerd-fonts :包含各种字体
1
2
3
4
5
6
7
8
9
# 先添加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 :
1
scoop bucket add main #添加 main bucket
网络问题导致app安装失败
一个示例:
1
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 进行断点续传?
先看具体示例:
1
2
# 更新 vscode
scoop update vscode-portable
scoop 更新 vscode 时下载到 80%的时候 失败了(安装时处理方法也一样)。我们需要在提示中找到如下内容:
1
2
3
4
5
6
7
'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
我们从上面的信息中提取出下面的命令;若要进行断点续传,只需再次执行下面的命令即可:
1
aria2c.exe --input-file= 'D:\Scoop\Applications\cache\vscode-portable.txt'
当提示下载完成后,我们需要再次运行 scoop 对应的 app 更新命令(或安装命令),即可完成 app 更新(或安装):
1
scoop update vscode-portable
安装和切换JDK、Python的版本
这里需要使用 scoop reset
它的作用是:重置一个应用程序来解决冲突。
命令格式为:
scoop reset <java>[@<version>]
安装和切换不同的 JDK 版本:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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 版本:
1
2
3
4
5
6
7
8
9
10
11
12
$ scoop bucket add versions # add the 'versions' bucket if you haven't already
$ 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
下面的内容只是个人的一些记录
Expand me
这里记录了 Github 上各种
bucket,rasa/scoop-directory: A directory of buckets for the scoop package manager for Windows
相当于 Scoop 的第三方软件源。
新机安装顺序:
可选:Google 官网下载 Chrome 下载器
先安装 scoop,将其配置好;再为 scoop 添加下面几个软件源:extras、dorado(对中
文支持更好)、ash258、java
通过 scoop 安装 cmder(或者安装 WindowsTerminal)、RunAny
通过 scoop 安装必要软件
按安装方式进行分类
直接官网下载安装:
Firefox:使用 scoop 下载的话会出现无法更改语言和添加插件; Firefox 最新版本下
载:根据此处
(latest Firefox release )
说明,拼接出下面的下载地址(Win64,简体中文)
https://download.mozilla.org/?product=firefox-latest&os=win64&lang=zh-CN
Chrome 浏览器:直接在官网下载(是一个安装器),通过安装器安装的 Chrome 在之后
更新时无需翻墙
VSCode :如果在 scoop 中安装 VS code 便携版会导致版本升级后,某些插件的配置文
件路径可能会出现问题,建议直接安装。
Rime 输入法:輸入法是一種有較高權限的系統軟件
通过压缩包安装 :
通过 Scoop 安装 :
Cmder:Windows 下替代 cmd 的终端
各种可在命令行使用的开发相关的程序,比如 git、jdk
geekuninstaller:著名的卸载工具,能够完全清理卸载残留
qbittorrent:BT 下载软件
notepadplusplus:替代默认记事本的程序
uGet:简洁无广告的下载工具(Linux 上可用)
ImageMagick 也可以安装其替代品 GraphicsMagick
curl 和 grep: 如果你安装了 git 则无需单独安装它们
下面是我所安装的程序
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
$ 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]