Scoop&Chocolatey不完全上手指南

Scoop

1.前言

Scoop是一个 Windows 包管理工具,类似于 Debian 的 apt、macOS 的 homebrew。它由开源社区驱动,体验可能是是目前所有 Windows 包管理工具中最好的。对开发者来说,包管理器能非常方便的部署开发环境,比如 Python、Node.js。而对于普通的计算机使用者来说,可以方便的安装一些常用软件,尤其是开源软件,免去了手动去官网下载的繁琐步骤,而且后续对软件进行升级只需要输入一行命令,非常便捷。

2.环境要求

  • Windows 7 SP1 + / Windows Server 2008 +
  • PowerShell 5 + .NET Framework 4.5 +
  • Windows 用户名为英文(Windows 用户环境变量中路径值不支持中文字符)
  • 正常、快速的访问GitHub并下载资源

3.Scoop安装

  1. 设置powershell
1
set-executionpolicy remotesigned -scope currentuser
  • 默认安装(安装到C:\Users\<user>\scoop), 在powershell里面运行:
1
iex (new-object net.webclient).downloadstring('https://get.scoop.sh')
  • 安装到指定目录(D:\tool\scoop)(逐行执行命令)
1
2
3
4
5
[environment]::setEnvironmentVariable('SCOOP', 'D:\tool\scoop', 'User')

$env:SCOOP='D:\tool\scoop'

iex (new-object net.webclient).downloadstring('https://get.scoop.sh')
  • 全局安装到指定目录(D:\tool\scoop_global)(逐行执行命令)
1
2
3
4
5
[environment]::setEnvironmentVariable('SCOOP_GLOBAL','D:\tool\scoop\scoop_global','Machine')

$env:SCOOP_GLOBAL='D:\tool\scoop\scoop_global'

iex (new-object net.webclient).downloadstring('https://get.scoop.sh')
  • 执行scoop help查看是否安装成功

4.基础使用

  • scoop search <app> - 搜索软件
  • scoop install <app> - 安装软件
  • scoop info <app> - 查看软件详细信息
  • scoop list - 查看已安装软件
  • scoop uninstall <app> - 卸载软件,-p删除配置文件。
  • scoop update - 更新 scoop 本体和软件列表
  • scoop update <app> - 更新指定软件
  • scoop update * - 更新所有已安装的软件
  • scoop checkup - 检查 scoop 的问题并给出解决问题的建议
  • scoop help - 查看命令列表
  • scoop help <command> - 查看命令帮助说明

5.进阶使用

5.1.添加常用的bucket

1
2
3
4
5
6
7
8
9
10
11
12
13
scoop bucket add extras
scoop bucket add Java
scoop bucket add versions
scoop bucket add Ash258 'https://github.com/Ash258/Scoop-Ash258.git'
scoop bucket add dorado 'https://github.com/h404bi/dorado'
scoop bucket add iszy 'https://github.com/ZvonimirSun/scoop-iszy'
scoop bucket add dodorz 'https://github.com/dodorz/scoop-bucket'
scoop bucket add rasa 'https://github.com/rasa/scoops'
scoop bucket add scoopet 'https://github.com/integzz/scoopet'
scoop bucket add raresoft 'https://github.com/L-Trump/scoop-raresoft'
scoop bucket add main 'https://github.com/ScoopInstaller/Main'
scoop bucket add games 'https://github.com/Calinou/scoop-games'
scoop bucket add jetbrains 'https://github.com/Ash258/Scoop-JetBrains'

5.2.清理安装包缓存

Scoop 会保留下载的安装包,对于卸载后又想再安装的情况,不需要重复下载。但长期累积会占用大量的磁盘空间,如果用不到就成了垃圾。这时可以使用 scoop cache 命令来清理。

  • scoop cache show - 显示安装包缓存
  • scoop cache rm <app> - 删除指定应用的安装包缓存
  • scoop cache rm * - 删除所有的安装包缓存

如果你不希望安装和更新软件时保留安装包缓存,可以加上 -k--no-cache 选项来禁用缓存:(可能会有报错)

  • scoop install -k <app>
  • scoop update -k *

5.3.删除旧版本软件

当软件被更新后 Scoop 还会保留软件的旧版本,更新软件后可以通过 scoop cleanup 命令进行删除。

  • scoop cleanup <app> - 删除指定软件的旧版本
  • scoop cleanup * - 删除所有软件的旧版本

与安装软件一样,删除旧版本软件的同时也可以清理安装包缓存,同样是加上 -k 选项。

  • scoop cleanup -k <app> - 删除指定软件的旧版本并清除安装包缓存
  • scoop cleanup -k * - 删除所有软件的旧版本并清除安装包缓存

5.4.全局安装(一般用于环境安装)

全局安装就是给系统中的所有用户都安装,且环境变量是系统变量,对于需要设置系统变量的一些软件就需要全局安装,比如 Node.js、Python,否则某些情况会出现无法找到命令的问题。

使用 scoop install <app> 命令加上 -g--global 选项可对软件进行全局安装,全局安装需要管理员权限,所以需要提前以管理员权限运行的 PowerShell 。更简单的方式是先安装 sudo,然后用 sudo 命令来提权执行:

1
2
scoop install sudo
sudo scoop install -g <app>

使用 scoop list 命令查看已装软件时,全局安装的软件末尾会有 *global* 标志。

此外对于全局软件的更新和卸载等其它操作,都需要加上 -g 选项:

  • sudo scoop update -g * - 更新所有软件(且包含全局软件)
  • sudo scoop uninstall -g <app> - 卸载全局软件
  • sudo scoop uninstall -gp <app> - 卸载全局软件(并删除配置文件)
  • sudo scoop cleanup -g * - 删除所有全局软件的旧版本
  • sudo scoop cleanup -gk * - 删除所有全局软件的旧版本(并清除安装包包缓存)

5.5.代理设置

Scoop 默认使用系统代理,手动指定代理,可以输入下面的命令。需要注意的是只支持 http 协议。

1
scoop config proxy localhost:端口号

设置完可以通过scoop config proxy查看。

如果你想取消代理,那么输入下面的命令,这将会恢复使用系统代理。

1
scoop config rm proxy

5.6.常用命令总结

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
## 安装软件 ##
# 非全局安装(并禁止安装包缓存)
scoop install -k <app>
# 全局安装(并禁止安装包缓存)
sudo scoop install -gk <app>

## 卸载软件 ##
# 卸载非全局软件(并删除配置文件)
scoop uninstall -p <app>
# 卸载全局软件(并删除配置文件)
sudo scoop uninstall -gp <app>

## 更新软件 ##
# 更新所有非全局软件(并禁止安装包缓存)
scoop update -k *
# 更新所有软件(并禁止安装包缓存)
sudo scoop update -gk *

## 垃圾清理 ##
# 删除所有旧版本非全局软件(并删除软件包缓存)
scoop cleanup -k *
# 删除所有旧版本软件(并删除软件包缓存)
sudo scoop cleanup -gk *
# 清除软件包缓存
scoop cache rm *

5.7.重装系统后如何恢复使用Scoop

重装系统之后, 如果把原有的scoop文件夹粘贴回去user文件夹,然后在powershell中再次输入安装命令,会得到一个Scoop is already installed错误,要想正确恢复scoop,根据官方回答,请按照以下步骤:

  1. 重装系统之前,先完整复制用户目录下的scoop文件夹到别的地方

  2. 重装系统之后,将scoop文件夹粘贴回去用户目录

  3. 在环境变量设置中,新建一个用户变量,名字为SCOOP,值为当前scoop文件夹的地址,即:
    C:\Users\xxxx\scoop

  4. 允许脚本执行:
    set-executionpolicy remotesigned -s currentuser

  5. 双击用户变量中的path,新建一个路径,填入 :
    %SCOOP%\shims

  6. 管理员权限powershell中运行:
    scoop reset *

即可恢复所有软件的正常使用.

6.尾巴


Chocolatey

1.关于Chocolatey

Chocolatey是Windows平台上的包管理器,通过它可以集中安装、管理、更新各种各样的软件。类似Scoop,相比而言Scoop对环境的污染较小(软件都安装在C:\Users\xxx\scoop\apps下),Chocolatey安装的包会在默认路径下,也就是C:\Program Files目录下。故将Chocolatey作为备选项。

2.Chocolatey的安装(建议使用PowerShell)

考虑到这篇文章的信息会过时,安装的详细信息可依照官方指示

  • cmd(管理员权限运行)
1
@”%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe” -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command “iex ((New-Object System.Net.WebClient).DownloadString(‘https://chocolatey.org/install.ps1’))” && SET “PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin”
  • Windows PowerShell(管理员权限运行)
1
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
  • 执行choco查看是否安装成功

3.常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
##安装包
choco install <package>
#如果使用 -version 可以指定版本

##查看安装的包
choco list -l
choco list -local-only

##包的更新,包括chocolatey本身
choco upgrade <packagename> or all

##包的卸载
choco uninstall <packagename>

##包的搜索(可在官网先搜索(https://community.chocolatey.org/packages))
choco search <packagename>

4.尾巴

国内建议使用Scoop(限速),Chocolatey已无法访问,若使用黑科技,可两者结合使用。