win10使用Scoop软件包管理器,支持版本切换 介绍 安装 使用 卸载

Scoop是一款软件包管理工具,类似你电脑上的软件管家,只不过Scoop是命令行操作的,可以说是一款专门为程序员开发的软件管家,你不需要再一个一个的访问官网,然后找软件的安装包,而只需要一个命令,全部搞定。
Scoop适用于windows平台,而类Unix系统(Linux/MacOS)可以使用SDKMAN,可以参考文章 https://ithelp.ithome.com.tw/articles/10236086

与之类似的还有Chocolatey,微软的winget
ScoopChocolatey的比较: http://www.kokojia.com/article/39520.html
Scoopwinget的比较: https://www.zhihu.com/question/395989844/answer/1236061830

Scoop更适用与开发人员使用

项目地址: https://github.com/lukesampson/scoop

安装

参考教程
https://blog.csdn.net/qq_43741794/article/details/113079959
https://sspai.com/post/52496
https://zhuanlan.zhihu.com/p/135278662

安装位置

scoop有两个安装目录,一个是当前用户的安装目录,一个是所有用户的安装目录。之后的使用中通过scoop安装的软件会安装在这两个目录,默认是在 %USERPROFILE% 下,有需要将其变更到其他目录的可以使用如下配置
使用PowerShell执行如下命令:

# 设置用户软件安装位置
$env:SCOOP='D:ApplicationsScoop' # 自己改你的位置,下同
[Environment]::SetEnvironmentVariable('SCOOP', $env:SCOOP, 'User')

# 设置全局软件安装位置
$env:SCOOP_GLOBAL='F:GlobalScoopApps'
[Environment]::SetEnvironmentVariable('SCOOP_GLOBAL', $env:SCOOP_GLOBAL, 'Machine')

实际相当于配置了两个环境变量,当然也可以手动配置。

安装

以管理员身份运行PowerShell,执行

Set-ExecutionPolicy RemoteSigned -scope CurrentUser
#然后输入 Y 或 A 回车

然后执行安装命令

Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')
# 或者
iwr -useb get.scoop.sh | iex

配置源

因为scoop的源是github,因为网络的问题往往会比较慢或失败,配置源可以使更新scoopbucket时快一点
但是治标不治本,起不到根本作用, 因为通过scoop安装的软件包基本都在github或国外服,网络的坑依然在

  • 更换 scoop 源
scoop config SCOOP_REPO https://gitee.com/squallliu/scoop
scoop update
  • 更换 bucket 源
scoop install git
git -C "${Env:USERPROFILE}scoopucketsmain" remote set-url origin https://hub.fastgit.org/ScoopInstaller/Main.git
git -C "${Env:USERPROFILE}scoopucketsjava" remote set-url origin https://hub.fastgit.org/ScoopInstaller/Java.git
git -C "${Env:USERPROFILE}scoopucketsphp" remote set-url origin https://hub.fastgit.org/ScoopInstaller/PHP.git
git -C "${Env:USERPROFILE}scoopucketsversions" remote set-url origin https://hub.fastgit.org/ScoopInstaller/Versions.git
git -C "${Env:USERPROFILE}scoopuckets
ightlies" remote set-url origin https://hub.fastgit.org/ScoopInstaller/Nightlies.git
# 以此类推 extras 的为
git -C "${Env:USERPROFILE}scoopucketsextras" remote set-url origin https://hub.fastgit.org/lukesampson/scoop-extras.git

上面的方式首先要执行scoop bucket add 仓库名将bucket安装到本地,然后执行上面的命令更改git仓库的远程地址,所以在add bucket时本身可能因为网络问题就添加失败。下面的方式将更简便

scoop bucket add java https://hub.fastgit.org/ScoopInstaller/Java.git
scoop bucket add php https://hub.fastgit.org/ScoopInstaller/PHP.git
scoop bucket add versions https://hub.fastgit.org/ScoopInstaller/Versions.git
scoop bucket add nightlies https://hub.fastgit.org/ScoopInstaller/Nightlies.git
scoop bucket add extras https://hub.fastgit.org/lukesampson/scoop-extras.git

使用

基本使用

如果只是安装给当前用户,直接执行安装命令即可,会安装到之前说的当前用户安装目录中,比如

# scoop install [app]@[版本号] 
scoop install git@2.23.0.windows.1

如果想要全局安装,安装时需要带 -g 参数,会安装到之前说的全局安装目录。以管理员身份打开PowerShell

# scoop install -g [app]@[版本号] 
scoop install -g git@2.23.0.windows.1

如果全局安装时不想以管理员身份运行PowerShell,则可以安装sudo,然后在普通身份时也可以对全局进行操作:

scoop install -g sudo # 此时以管理员身份打开的Powershell
sudo scoop install -g git # 此时普通身份亦可

当然也可以一次安装多个软件

sudo scoop install 7zip git openssh --global
scoop install aria2 curl grep sed less touch
scoop install python ruby go perl

7Zip,Git基本是必须要装的,因为要装很多软件都要依赖它们,连添加bucket都要git的。
另外aria2也可以装上,因为说是可以提高软件包下载速度。如果使用aria2任然速度慢或者出现无法下载的问题,可以使用如下命令将其禁用:

scoop config aria2-enabled false

多版本切换

scoop resetre-installs 应用程序的 shims ,并根据应用程序的 manifest 更新 PATH 环境变量。

使用 scoop reset <java>[@<version>] 说明安装和切换不同的 Java (JDK)版本

$ scoop bucket add java

$ scoop install oraclejdk
Installing 'oraclejdk' (12.0.2-10) [64bit]

$ scoop install zulu6
Installing 'zulu6' (6.18.1.5) [64bit]

$ scoop install openjdk10
Installing 'openjdk10' (10.0.1) [64bit]

$ 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)

$ scoop reset zulu6
Resetting zulu6 (6.18.1.5).
Linking ~scoopappszulu6current => ~scoopappszulu66.18.1.5

$ 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)

$ scoop reset oraclejdk

$ 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版本管理

$ 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

添加自定义bucket

参考 https://zhuanlan.zhihu.com/p/165635039

社区仓库

参考 https://sspai.com/post/52710

其他命令

命令 说明
scoop help 查看帮助
scoop list 可以查看已安装的所有软件
scoop search 软件名 查找是否有你需要的软件
scoop info 软件名 查看软件介绍
scoop uninstall 软件名 卸载软件
scoop status 查看可更新的软件
scoop update 软件名 更新软件
scoop update * 一次性更新所有软件(必须在安装目录下使用)
scoop update 更新scoop,有时当你安装或其他操作时scoop会自行更新自己,由于软件数量和版本极多,更新频率会有点高
scoop bucket add bucket名称 添加bucket
scoop bucket add bucket名称 bucket地址 添加自定义bucket
scoop bucket known 列出已知所有官方bucket

卸载

scoop uninstall scoop # 这个卸载,会删除你配置的scoop下面的所有软件,非常危险。