本文参考了Chocolatey的官方文档,如果想了解更多信息,请直接参阅官方文档。
如果使用过Linux的话,一定会被其简洁的软件包管理系统所折服。在Linux世界中,安装一个软件不需要在浏览器中寻找软件的官网,然后将其下载下来,然后双击进行安装。只需要一条简单的命令,就可以完成搜索、安装、更新、卸载等所有操作。例如Debian和Ubuntu中的apt-get命令,Fedora的yum以及新的dnf命令,还有Arch中的pacman。
# apt-get install firefox
# dnf install python
# pacman -S gcc
其实Windows下,也有这么一个包管理器,功能虽然不及Linux中那些包管理器强大,但是也让Windows下的软件安装方便了不少。这就是Chocolatey。
Chocolatey的安装
要安装Chocolatey很简单,需要以管理员权限打开命令提示符窗口,然后输入以下命令即可:
@powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin
或者打开管理员权限的Powershell,然后输入以下命令:
iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))
Chocolatey的作者创建了一个短网址,包含了Chocolatey的安装脚本。如果还是嫌上面的太长的话,可以试试这个(在管理员权限下的Powershell中):
iwr https://cin.st | iex
命令运行完成之后,输入choco
命令,如果显示出了版本号,说明安装成功了。
PS C:\Windows\system32> choco
Chocolatey v0.9.9.12
自定义安装位置
以上都是安装到了默认位置C:\ProgramData\Chocolatey
,如果现在其他地方安装Chocolatey的话,需要新建一个环境变量ChocolateyInstall
,值是你希望安装到的文件夹。然后手动创建这个文件夹。然后再运行上面的命令。如果已经安装了,可以再次运行安装命令,这样可以重新安装到你指定的位置。
上面定义的安装位置是Chocolatey的安装位置。对于Chocolatey安装的软件的位置就不容易更改了。有的软件例如JDK8默认会安装到C:\Program Files\
,有的软件例如PHP这类会作为工具安装到C:\tools
下。如果你安装了工具类的软件,那么在系统环境变量对话框中还会看到一个ChocolateyToolsLocation
环境变量,它的值正是C:\tools
。所以如果想修改工具类软件的安装位置,修改ChocolateyToolsLocation
的值即可。软件类的安装位置我现在还不知道怎么更改。
Chocolatey的使用
安装成功之后,就可以使用Chocolatey了。常用功能如下:
search命令
choco search 关键字
会搜索出所有包含关键字的软件包。例如搜索jdk会列出eclipse等好几个软件。
install命令
choco install 软件包名称
安装对应的软件包。
update命令
choco upgrade 软件包名称
uninstall命令
choco uninstall 软件包名称
会卸载指定的软件包。
如果不想在命令行下搜索和安装软件包,可以安装ChocolateyGUI,这是一个图形化的界面,可以方便的执行上述命令。
choco install chocolateygui
除了在命令行中搜索软件包,还可以直接在Chocolatey网站上搜索软件包,网址是https://chocolatey.org/packages/ 。细心的同学会发现在网站上有一些同名的软件包,不同之处在于一个后面有Install,另一个则没有。这两者的区别是:有Install的软件包在安装之后,会在控制面板的添加和删除程序中找到。
可能遇到的问题
操作超时
这是由于网络不畅通造成的,多试几次就行了。如果你的网络不好,建议还是直接使用下载工具到官网上下载安装软件包比较好。
无法加载文件 ,因为在此系统上禁止运行脚本。
这是由于系统的执行策略造成的。有兴趣的同学可以到微软官方说明这里了解详细信息。默认情况下是严格模式,允许执行命令但是禁止执行脚本。输入以下命令将执行策略设置为允许签名的远程脚本就行了。
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned