搭建 Windows 统一开发环境 Chocolatey,Scoop

Chocolatey 是一款 Windows 软件包管理工具 (可简称为choco),类似于 macOS 的 Homebrew,Ubuntu 的 apt-get。Chocolatey 基于 PowerShell 脚本和 NuGet(微软开发平台的软件包管理器),便于开发者快速安装应用程序和工具,便于开发团队统一开发环境。

另外需要说明的是, Chocolatey 只是把官方下载路径封装到了 Chocolatey 中,所以下载源都是其官方路径,所以下载的一定是合法的,但是如果原软件是需要 Licence 注册的话,那么 Chocolatey 下载安装好的软件还是需要你去购买注册。不过 Chocolatey 一般还是会选用免费 Licence 可用的软件。

一、安装

安装 Chocolatey,只需要在 Windows 系统的命令行工具下面去执行一行命令(cmd),只需要在其中的一个上面安装 Chocolatey 就可以了。你要用管理员的身份去运行命令行工具,不然会遇到权限问题。

访问 Chocolatey 官网,找到 CMD.exe 或者 PowerShell.exe 安装命令,这里推荐选择individual,也就是下面的第三种安装方法,前面两种是参考的其他教程的,没有验证过。

image.png

1、终端下执行

@powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin

2、CMD.exe 命令(本地电脑使用管理员运行,开始菜单搜索 CMD,然后右键点击以管理员运行)

@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "[System.Net.ServicePointManager]::SecurityProtocol = 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"

3、PowerShell.exe 命令(windows10 右键开始菜单,点击 Windows PowerShell(管理员)运行)(我是使用这种方法安装的)

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

看到以下输出,就安装完了

Chocolatey (choco.exe) is now ready.
You can call choco from anywhere, command line or powershell by typing choco.
Run choco /? for a list of functions.
You may need to shut down and restart powershell and/or consoles
 first prior to using choco.
Ensuring Chocolatey commands are on the path
Ensuring chocolatey.nupkg is in the lib folder

一般情况下,系统环境变量path和ChocolateyInstall会自动添加,但笔者的path没有全路径导致无法执行choco命令,更改为全路径之后正常。

安装完成后,在命令行工具的下面,输入:

choco help

如果出现一些有用的帮助信息,比如 Chocolatey 的版本号,安装到的目录,相关的命令,还有示例等等,这就说明我们已经可以在系统上使用 Chocolatey 了。

二、使用

特性配置

choco feature -?

可以看到所有的命令使用提示,相当于help


image.png
choco feature list
image.png
choco feature enable -n allowGlobalConfirmation  # 避免每次回答 Y
choco feature enable -name=exitOnRebootDetected  # 不执行重启检测
image.png
# 软件原生安装目录
C:\Program Files
C:\Program Files (x86)
C:\Users\<username>\AppData

# Chocolatey 安装目录
C:\ProgramData\chocolatey

# 通过环境变量设置软件安装目录
[environment]::setEnvironmentVariable('ChocolateyInstall','C:\ProgramData\chocolatey','Machine')
[environment]::setEnvironmentVariable('ChocolateyToolsLocation','D:\Choco','Machine')

# 非管理员安装默认路径是 C:\ProgramData\chocoportable
$env:path += ";C:\ProgramData\chocoportable"
$InstallDir='C:\ProgramData\chocoportable'
$env:ChocolateyInstall="$InstallDir"

# 通过命令行参数 --proxy 指定代理
choco outdated --proxy=localhost:1080

包的类型

常见的 Chocolatey 软件包有三种类型:

无后缀:默认安装 .install 后缀的最新版本的包, 若已安装则跳过。(例:nodejs,git)如果系统中已经安装了这个包,就会跳过去,如果没安装,Chocolatey 就会为你安装一个,默认安装的这个包的类型应该就是 .install 后缀的包。

.install 后缀: 软件安装后出现在控制面板 “卸载或更改程序” 中。(例:nodejs.install,git.install)安装带 .install 后缀的包,这个包会出现在系统控制面板里的 卸载或更改程序 里面,你可以把 .install 的包想成是通过安装程序(msi)安装的包。

.portable 后缀: 软件安装后不会出现在 “卸载或更改程序” 中。(例:putty.portable)

其中
.commandline(例:nodejs.commandline,未来会被抛弃)与 .portable 后缀的包是压缩包(zip),安装这种后缀的包,你不能在 卸载或更改程序 里找到它们。

choco 常用命令的缩写形式:

cinst ...  # 相当于 choco install ...
cuninst ...  # 相当于 choco uninstall ...
cup <pkg|all>  # 相当于 choco upgrade ...

查找软件

访问软件包官网 https://chocolatey.org/packages

查询软件 7zip 可访问 https://chocolatey.org/packages?q=7zip

或使用 choco search 命令查找:

image.png
# 查找软件
choco search 7zip 
choco search 7zip.install -all  # 所有版本

Chocolatey的使用也很简单,使用指令如下:

choco search <keyword>    搜索软件
choco list <keyword>  跟 search 命令功能类似
choco install <package1 package2 package3...>  安装软件
choco install <package>  -version *** 安装指定版本
choco  uninstall name 卸载软件
choco version <package>  查看安装包的版本情况
choco  upgrade <package>   更新某个软件 
choco list -localonly        查看一下所有安装在本地的包的列表
choco list -lo       功能同上

软件管理

# 安装软件
choco search peazip
choco info peazip  # 查看软件信息
choco install peazip  # 自动安装依赖包 peazip.install
choco install peazip.install  # 安装 peazip.install 最新版
choco install peazip.install --version 7.2.0  # 安装指定版本

# 指定安装位置
choco install fiddler --install-arguments "/D=D:\Choco\fiddler"

# 安装命令行工具与刷新环境变量
choco install nodejs.install  # 缺省安装最新版本
refreshenv  # 刷新环境变量,避免重启终端
node -v  # 确认安装成功

# 一次安装多个包
choco install <package1 package2 package3...>

# 升级安装软件
choco list -l  # 查看已安装软件列表
choco outdated  # 检查是否有可升级版本
choco upgrade nodejs.instlll  # 升级 nodejs
choco upgrade chocolatey  # 升级自身
choco upgrade all  # 全部升级

# 卸载软件
choco uninstall peazip  # 选择 n 保留 peazip.install
choco uninstall peazip.install  # 卸载 peazip.install


# 常用软件
choco install dart-sdk
choco install flutter

choco install autohotkey.portable    #安装 AutoHotkey (Portable)
choco install nodejs.install  #安装 node
choco install git.install     #安装 git
choco install ruby            #安装 ruby
choco install python          #安装 python
choco install jdk8            #安装 JDK8
choco install googlechrome    #安装 Chrome
choco install google-chrome-x64 #Google Chrome (64-bit only)
choco install firefox         #安装 firefox
choco install notepadplusplus.install #安装 notepad++
choco install Atom                    #安装 Atom
choco install SublimeText3            #安装 SublimeText

Chocolatey 的安装脚本默认要求管理员权限,对于非高权限用户来说不太友好;通过 Chocolatey 安装程序时,安装目录散落各地,非常乱也不好管理。建议搭配 Scoop 使用。

Scoop 的安装Scoop 由澳洲程序员Luke Sampson于2015年创建,其特色之一就是其安装管理不依赖“管理员权限”,这对使用有权限限制的公共计算机的使用者是一大利好。

Scoop 是 Windows 上的命令行安装程序,主要针对命令行下的开发者工具,和程序猿更配哦。个人的感觉是,Scoop 更像 Mac 上的 Homebrew, Chocolatey 更像 Homebrew-Cask。关于 Scoop 的更多介绍请看官网http://scoop.sh/,同时,Scoop 是开源的项目,仓库地址点这里

Scoop 安装

其的安装步骤如下:

步骤 1:在 PowerShell 中打开远程权限

Set-ExecutionPolicy RemoteSigned -scope CurrentUser

步骤 2:自定义 Scoop 安装目录

$env:SCOOP='Your_Scoop_Path'
[Environment]::SetEnvironmentVariable('SCOOP', $env:SCOOP, 'User')

如果跳过该步骤, Scoop 将默认把所有用户安装的 App 和 Scoop 本身置于 C:Usersuser_namescoop

步骤 3:下载并安装 Scoop

Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')

步骤 4:安装包(主要是命令行程序):

scoop install <app_name>
scoop install sudo

Scoop 的基本操作与 Chotolatey 类似。

步骤 5:通过 scoop help 查看使用简介

Scoop 的使用(加载扩展库)

步骤 1:安装 Aria2 来加速下载

scoop install aria2
# 如果使用代理,有时需要通过如下命令关闭 aria2
scoop config aria2-enabled false

步骤 2:安装 Git 来添加新仓库

scoop install git

步骤3:添加官方维护的extras库(含大量GUI程序)

scoop bucket add extras
scoop update
# git 下载如果使用 Scoop 原生的下载协议可能比较慢,建议采用如下迂回方案:
# 用第三方下载器,如 Motrix 下载
# 然后将文件拷贝到 path to scoop/cache
scoop install git # 此时会产生一个扩展名为 .download 的文件
scoop uninstall git  #重命名自己下载的文件名为3中的文件名,但取代 .download 文件
scoop install git 

 #可选步骤:添加我创建并维护的scoopet库(专注服务科研)
scoop bucket add scoopet https://github.com/integzz/scoopet
scoop update

scoopet 库包含的安装脚本分为如下四类:

科研工具:如 miniconda(国内镜像),julia(国内镜像),copytranslator,gephi,geogebra,mendeley,netlogo
开发辅助:如 cyberduck,virtualbox,vmware
日常办公:如 adobe acrobat,wpsoffice,百度网盘,灵格斯词霸
社交休闲:如 you-get,网易云音乐,微信
详情见 https:// github.com/integzz/scoo pet/blob/master/README_CN.md

步骤 4:安装 App

# 使用scoop search 命令搜索 App 的具体名称
scoop install scoop-completion
scoop install <app_name>
# 利用插件scoop-completion协助安装
scoop install scoop-completion
# 使用 scoop-completion:键入 App 名称的前几个字母后敲击 tab键进行补全 scoop-completion包含于 scoopet 库中

步骤 5:查看官方推荐仓库

scoop bucket known

main [默认]
extras [墙裂推荐]
versions
nightlies
nirsoft
php
nerd-fonts
nonportable
java
games
jetbrains

这里,推荐一个网站,这个方便全网查询安装脚本所在 bucket

Apps | Scoopscoop.netlify.app

Scoop 的管理与配置

# 查看已安装程序
scoop list
# 查看更新
scoop status
# 删除旧版本
scoop cleanup
# 自身诊断
scoop checkup
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,602评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,442评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,878评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,306评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,330评论 5 373
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,071评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,382评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,006评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,512评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,965评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,094评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,732评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,283评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,286评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,512评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,536评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,828评论 2 345

推荐阅读更多精彩内容