Scoop-强大的Windows命令行包管理工具

对于开发者来说,包管理工具是绕不开的话题,Ubuntu广受喜爱的原因之一也包含其方便的apt包管理工具,MacOS上有homebrew供开发者使用,这些包管理工具让开发环境的搭建非常顺滑。这里的包,是指广义的软件包,不仅包含常见的图形用户界面(GUI)软件,也包含命令行界面(CLI)软件和工具。

而开发者苦Windows命令行甚至powershell久矣,在早前的版本上,真的没有特别好用的工具。如今,终于也有了历经时间和用户考验的包管理器:Chocolatey,Scoop和Winget。Winget时间不久,由微软官方社区维护,但目前人气不如前两者。我只简单使用过chocolatey,没太多发言权,但scoop真的很好很强大,并且现在scoop的社区非常活跃,参与者众多,维护更新很快。我在GitHub上的第一次PR就提给了scoop。

Scoop

scoop的官网上这样介绍自己:

A command-line installer for Windows

Quickstart

scoop要求powershell 5.1+,所以如果没有安装powershell的话,还需要先安装powershell。这里要注意powershell的版本区别,强烈建议安装powershell 7,最好用lts版本。此外,强烈安利Windows Terminal,它已经是Windows 11默认终端程序,绝对值得拥有。

准备好后,打开powershell终端,运行:

> Set-ExecutionPolicy RemoteSigned -Scope CurrentUser # Optional: Needed to run a remote script the first time
> irm get.scoop.sh | iex

scoop默认安装到用户目录,这样可以避免权限问题。如果需要配置高级安装选项,请参考这里的安装方法

What does Scoop do

那么scoop可以做些什么呢?scoop从命令行安装你熟悉和喜爱的程序,非常丝滑,它的特点包括:

  • 消除权限弹窗,安装过程超丝滑
  • 隐藏GUI安装向导,一步到位
  • 防止安装大量程序的PATH环境变量污染
  • 避免安装和卸载程序的意外副作用
  • 自动查找并安装依赖项
  • 自动执行额外设置步骤以获得可用程序

在之前的Hexo安装和配置中就曾讲过,从nodejs官网安装node.js各种坑,最后scoop一条命令搞定,那感觉真是太爽了。

PS C:\> scoop install nodejs                                                    
Installing 'nodejs' (18.4.0) [64bit]                                            
node-v18.4.0-win-x64.7z (17.3 MB) [===================================] 100%    
Checking hash of node-v18.4.0-win-x64.7z ... ok.                                
Extracting node-v18.4.0-win-x64.7z ... done.                                    
Linking ~\scoop\apps\nodejs\current => ~\scoop\apps\nodejs\18.4.0               
Persisting bin                                                                  
Persisting cache                                                                
Running post_install script...                                                  
'nodejs' (18.4.0) was installed successfully!

安装vs code:

PS C:\> scoop bucket add extras                                                 
Checking repo... OK                                                             
The extras bucket was added successfully.                                       
PS C:\> scoop install vscode                                                    
Installing 'vscode' (1.68.1) [64bit]                                            
dl.7z (108.1 MB) [====================================================] 100%    
Checking hash of dl.7z ... ok.                                                  
Extracting dl.7z ... done.                                                      
Linking ~\scoop\apps\vscode\current => ~\scoop\apps\vscode\1.68.1               
Creating shortcut for Visual Studio Code (code.exe)                             
Persisting data                                                                 
Running post_install script...                                                  
'vscode' (1.68.1) was installed successfully!

安装nerd-fonts字体:

PS C:\> scoop bucket add nerd-fonts                                             
Checking repo... OK                                                             
The nerd-fonts bucket was added successfully.                                   
PS C:\> scoop install Cascadia-Code                                             
Installing 'Cascadia-Code' (2111.01) [64bit]                                    
CascadiaCode-2111.01.zip (23.7 MB) [===================================] 100%   
Checking hash of CascadiaCode-2111.01.zip ... ok.                               
Extracting CascadiaCode-2111.01.zip ... done.                                   
Running installer script...                                                     
Linking ~\scoop\apps\Cascadia-Code\current => ~\scoop\apps\Cascadia-Code\2111.01
'Cascadia-Code' (2111.01) was installed successfully!

强烈建议安装这个字体,并在写代码或终端和编辑器中使用,看着真舒服。

Scoop 以可移植的方式下载和管理软件包,将它们整齐地隔离在用户目录scoop文件夹中。它不会在目录外安装文件,但允许将 Scoop 安装放置在像~\scoop这样的你喜欢的任何位置。

> dir ~\scoop

    Directory: C:\Users\User\scoop

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
da---          02-04-2022    16:06                apps
d----          30-03-2022    13:22                buckets
d----          02-04-2022    16:06                cache
da---          30-03-2022    21:32                persist
da---          02-04-2022    16:06                shims
d----          20-02-2022    01:22                workspace

对于终端应用程序,Scoop在文件夹中创建shims,这是一种命令行快捷方式,可在PATH中访问。对于图形应用程序,Scoop在专用的“开始”菜单文件夹中创建程序快捷方式,称为“Scoop应用程序”。这样,软件包始终被完全卸载,您可以确定 PATH 和“开始”菜单中当前有哪些工具。shims~\scoop\shims目录中。

> scoop search python
Results from local buckets...

Name      Version  Source Binaries
----      -------  ------ --------
python    3.10.5   main
winpython 3.10.4.0 main

> scoop install python
...
Creating shim for 'python.exe'.
'python' (3.10.5) was installed successfully!

> python -c "print('Hello from Python installed by Scoop!')"
Hello from Python installed by Scoop!

Discovering Packages

scoop包作为git仓库的一部分存在,被称为buckets。内置的包搜索命令可以用来搜索GitHub上的全部程序,GitHub上的所有buckets列表见这里

> scoop search mongo
Results from local buckets...

Name                   Version Source Binaries
----                   ------- ------ --------
mongodb-compass        1.32.2  extras
mongosh                1.5.0   extras
mongodb-database-tools 100.5.3 main
mongodb                5.3.2   main

> scoop search citra
Results from other known buckets...
(add them using 'scoop bucket add <name>')

Name         Source
----         ------
citra-canary games
citra        games

Creating Packages

我们还可以用scoop来创建和发布自己的程序,这样就可以非常方便的在团队内部创建和分享小工具。

> scoop create https://example.com/foobar/1.2.3/foobar-package.zip
1) foobar
2) 1.2.3
3) foobar-package.zip
App name: 1
1) foobar
2) 1.2.3
3) foobar-package.zip
Version: 2
Created 'C:\Users\User\Desktop\foobar.json'.

scoop中的程序用一个简单的json文件来维护,里边还可以嵌入powershell语句。

> scoop cat gifski
{
    "version": "1.6.4",
    "description": "GIF encoder based on libimagequant (pngquant).",
    "homepage": "https://gif.ski",
    "license": "AGPL-3.0-or-later",
    "url": "https://gif.ski/gifski-1.6.4.zip",
    "hash": "dc97c92c9685742c4cf3de59ae12bcfcfa6ee08d97dfea26ea88728a388440cb",
    "pre_install": "if (!(Test-Path '$dir\\config')) { New-Item '$dir\\config' }",
    "bin": "gifski.exe",
    "checkver": "For Windows.*?gifski-([\\d.]+)\\.zip",
    "autoupdate": {
        "url": "https://gif.ski/gifski-$version.zip"
    }
}

scoop的工作流是非常非常依赖GitHub的,国内访问偶尔抽风,如果大家在irm get.scoop.sh | iex这一步安装出问题,可以换成下面的命令试一下:

irm https://gitee.com/happy-peter/InstallScoop/raw/master/install.ps1 | iex

公众号 | FunIO
微信搜一搜 “funio”,发现更多精彩内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值