前言
package manager,即包管理器,这里的包可以理解成广义上的软件,不仅包含常见的基于图形用户界面(GUI)的软件,还包含基于命令行界面(CLI)的开发工具。所以其实包管理器就是一个软件自动化管理工具,他将软件的安装,配置,更新,删除统一化了,能带给用户优雅的使用体验,Apple 系列产品的 APP Store 其实就是基于这个优雅理念的一个最佳实践,同样在 Linux 系统我们也有 yum,apt 等优秀的包管理器,但在 Windows 系统上,大部分人还是熟悉从各种第三方五花八门的渠道下载 exe 安装包安装的过程,不仅不能保证渠道的安全性,安装流程也很复杂,于是澳洲程序员 Luke Sampson 在 2015 年创建了可以用于 Windows 系统的 Scoop 包管理器。
当然,Windows 也有众多其他的包管理器,比如 Chocolatey,Winget ,但是 Scoop 官方仓库的维护包括社区用户的贡献都要强于这二者,Scoop 以自定义程度高和扩展性强著称,任何用户都可以建造自己的软件仓库(Bucket)并发布到社区供大家使用,通过一些简单的脚本配置就可以加入一些第三方软件,从而其他用户可以将这个仓库通过命令添加到本地,然后再通过命令安装一些官方库没有的第三方软件,这一切都是优雅且统一的,所以我十分建议每个 Windows 用户尤其是需要安装各种开发环境比如 JDK,Python 等等的开发者使用 Scoop 进行软件的管理(每个开发者应该都知道重装 Windows 系统之后重新配开发环境的痛苦吧呜呜)。
Without further ado,Let‘s get our hands dirty!
1-Scoop 安装
1-Scoop 安装配置要求
- Windows 版本不低于 Windows 7
- PowerShell 版本 >= 5.0 (如果是 Window 10 则默认满足此条件)
- 你能 正常、快速 的访问 GitHub 并下载上面的资源(科学上网)
- 你的 Windows 用户名为英文(Windows 用户环境变量中路径值不支持中文字符)
2-Scoop 安装步骤
1- WIn+S
搜索并打开 Powershell
2-在 PowerShell 中打开远程权限
|
|
因为在 windows 中默认不允许任何脚本运行(为了避免一些恶意脚本直接运行),所以我们可以使用 **Set-ExecutionPolicy
**来改变 PowerShell 运行环境,共有 4 种运行权限,如下所示:
- Restricted——默认的设置,不允许任何 script 运行;
- AllSigned——只能运行经过数字证书签名的 script;
- RemoteSigned——运行本地的 script 不需要数字签名,但是运行从网络上下载的 script 就必须要有数字签名(使用脚本安装 scoop 这一等级就行);
- Unrestricted——允许所有的脚本运行;
3-开始安装
官方给了[三种安装方式](So What · ScoopInstaller/Scoop Wiki (github.com)),我推荐下面这种自定义安装方式:
- 下载安装脚本:
|
|
下载不下来的话可以加我的技术交流 QQ 群(群号在我主页介绍里),我会上传到群文件中
2. 在脚本所在目录执行下面的命令:
|
|
- 其中全局软件就是指所有用户可用的软件,对于那些需要管理员权限的程序需要进行全局安装,在安装命令中使用
--global
或-g
选项即可全局下载对应软件(比如安装字体) - 用户级别安装的程序则默认安装在 Scoop 软件本体目录下的
apps
文件夹内
以上执行完毕 scoop 就安装好了,这时候在 powershell 命令行中输入 scoop help
,应该就可以看到下面的输出了:
2-Scoop 优秀设计与实现
- 分离用户数据:默认将程序的 用户数据 存储到
persist
目录中,这样当用户日后升级该程序后之前的用户配置依然可用。(但是对于部分程序支持的不是很完善) shim
软链接: scoop 会自动在 scoop 应用安装路径下的shims
文件夹下为新安装的程序添加对应的.exe
文件,而shims
文件夹提前就已被添加到PATH
环境变量中,所以程序一旦安装就可以直接在命令行中运行,这样的设计让应用之间不会互相干扰,保证环境的统一和路径不被污染,十分方便。- 对于 GUI 程序 ,scoop 还会自动为其在开始菜单中添加快捷方式,路径:
C:\Users\<user>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Scoop Apps
3-Scoop 使用技巧
1-Scoop 常用命令
1-给 scoop 设置全局代理(科学上网实现加快软件下载速度)
|
|
2-安装卸载软件
|
|
3-更新软件
|
|
4-清除缓存和旧版本软件包
|
|
5-给命令添加别名(通常用于简短一些常用的长命令,提高输入效率)
|
|
- 一些设置别名的技巧(来自 Scoop Aliases (github.com))
|
|
6-看某个应用的官方主页:scoop home typora
7-添加软件仓库 Bucket
Scoop 可安装的软件信息存储在 Bucket 中,Scoop 默认的官方 Bucket 为 main
;官方维护的另一个 Bucket 为 extras
,这个需要我们手动添加。
|
|
- 推荐一个网址可以查询你想要下载那个 app 在哪个 bucket 里面:Apps | Scoop
- 官网 buckets 列表:Scoop - Buckets
- 我也准备自建自己的 bucket 了,也欢迎大家未来支持:CalvinHaynes/MyScoopBucket: Windows的Scoop包管理器的自建Bucket (github.com)
8-安装 scoop-completion
使用
scoop-completion
:键入 App 名称的前几个字母后敲击tab
键进行补全
scoop-completion
包含于 scoopet 库中
|
|
2-开启多线程下载
使用 Scoop 安装 Aria 2 后,Scoop 会自动调用 Aria 2 进行多线程加速下载。
|
|
使用 scoop config
命令可以对 Aria 2 进行设置,比如 scoop config aria2-enabled false
可以禁止调用 Aria 2 下载。以下是与 Aria 2 有关的设置选项:
aria2-enabled
: 开启 Aria 2 下载,默认true
aria2-retry-wait
: 重试等待秒数,默认2
aria2-split
: 单任务最大连接数,默认5
aria2-max-connection-per-server
: 单服务器最大连接数,默认5
,最大16
aria2-min-split-size
: 最小文件分片大小,默认5M
在这里推荐以下优化设置,单任务最大连接数设置为32
,单服务器最大连接数设置为16
,最小文件分片大小设置为1M
|
|
3-Scoop 配置开发环境
1-开发环境版本切换
这里需要使用 scoop reset
它的作用是:在同一程序的不同版本之间切换,从而避免版本冲突
命令格式为:scoop reset <java>[@version]
|
|
2-Git 环境配置
1-安装 Git
|
|
为什么加上一个 openssh 的选项?为什么我们管理 git 仓库要用到 SSH?
- SSH 使用时不需要提供名称和密码所以通过添加公钥和密钥,可以让我们更高效地提交代码,免去重复的操作(git pull 时使用 SSH 链接,Windows 的话一般就是在
C:\Users\Administrator\.ssh
目录下,id_rsa 文件是私钥,id_rsa. pub 是公钥,这些刚下载 git 是没有的,需要后续手动添加,往下看下去吧,关于 SSH 如何利用公私钥实现了免密登录,这篇文写的不错:SSH 免密登录是怎么玩儿的? - 知乎 (zhihu.com)) - SSH 相较 HTTPS 有加密,更加安全
- 为什么用 openssh?
因为 Open Source !OpenSSH - Wikipedia
2-连接自己的 github
前面也说到用 openSSH 和 github 仓库连接,那么现在让我们连接到自己的 github 账号上方便管理自己 github 仓库中的代码!
- 创建公私钥
输入下面的命令,一路回车,你就会看到你的公钥和私钥文件生成到命令行输出所指的目录下了,一般是C:\Users\Administrator\.ssh
|
|
- 记事本打开公钥文件 id_rsa. pub ,复制其中的内容到自己 github 中,具体步骤可以看官方文档:Adding a new SSH key to your GitHub account - GitHub Docs,文档页面右上方小地球可以更改语言
- 测试一下是否连接成功
运行下述命令:
|
|
如果输出如下(可能会有几个 Warning,不过不用管),就说明配置成功了,现在就可以用 SSH 链接 clone 你自己的 github 仓库到本地然后进行代码管理了:
|
|
3-安装 github GUI 软件–Github Desktop
|
|
- 软件界面图片如下:(如果希望进一步了解 git,看我这篇文章–一文教你玩转Git和Github - 知乎 (zhihu.com))
4-其他 FAQ
1-bucket 更新时遇到问题
情况是这样:当我运行 scoop update
进行更新时提示: extras
bucket 更新失败。于是我将其删除后再添加,提示成功,但是它却把 main bucket (默认的 bucket) 给删除了。通过"scoop status"检查状态时出现 “These app manifests have been removed"并且下面列出了已被移除的软件名单。 那么如何解决此问题?
我们需要重新添加 main bucket :scoop bucket add main
2-网络问题导致 app 安装失败
一个示例:
|
|
当安装 mediainfo 时由于网络问题,安装包无法下载,从命令行输出信息中可以看到如下内容:
|
|
我们可以发现文件的下载路径和下载后的文件名称,这里 out=
后面的压缩包就是下载后文件的名称,(也可以在 scoop 的 cache
目录下的 mediainfo.txt
文件中找到下载路径与文件名称)
然后我们可以尝试在浏览器或其他下载程序中(可以 fq 的程序中)下载该程序,下载完成后再更改文件名并将其放入 scoop 的 cache
目录,最后再次运行 scoop install mediainfo
即可安装。
3-如何利用 aria 2 进行断点续传?
先看具体示例:
|
|
scoop 更新 vscode 时下载到 80%的时候失败了(安装时处理方法也一样)。我们需要在提示中找到如下内容:
|
|
我们从上面的信息中提取出下面的命令;若要进行断点续传,只需再次执行下面的命令即可:
|
|
提示下载完成后,我们需要再次运行 scoop 对应的 app 更新命令(或安装命令),即可完成 app 更新(或安装):
|
|
4-高阶使用 scoop 教程哪里找?
- 最权威当然是官方文档啦:Home · ScoopInstaller/Scoop Wiki (github.com)
- 当然也有其他一些不错的中文资源如下:
结语
创作不易,整理写作这些内容花费了很大精力,希望大家能有所收获,能优化自己的开发效率,更优雅的管理自己开发环境和软件!
感谢您看到最后,如果本文对您有所帮助的话,还希望给我一个一键三连(狗头保命),如果对于我和我的文章感兴趣的话,欢迎点一个关注,您会收到我回答和文章的更新通知,也欢迎加入我建立的技术交流群 QQ:725133797 讨论交流。
最后附上我的个人博客站:Calvin Haynes的博客站,欢迎访问和交流