🦄 2024 独立开发者训练营,一起创业!查看介绍 / 立即报名 →

路径(二):更好的安装软件的方法(Windows:Chocolatey,Mac:Homebrew)

你决定要把 Web 当成自己的事业,并且已经开始学习了。你听到的,看到的,或者自己感觉的,很可能是错的。一开始,我们就用更好的方法去学习与做事,会节省很多时间,也能减轻痛苦。找不到方向,不知道从哪里下手,今天就跟宁皓一起,一切都在这里开始:)

遇到的问题

学习 Web 设计与开发得去安装很多软件,Git,Node,Ruby,Virtualbox,Vagrant,Atom,Brackets,Chrome...  有些软件是你要直接用的,有些是其它软件所依赖的。安装这些东西,你得先找到它们的官方网站,然后下载适合自己系统的版本,双击安装,Next,Next,下一步,下一步  ...  完成!安装完以后,你发现还不能用,因为你不知道这个软件还需要你去安装一个其它的东西。

解决的方法

正确的做法是使用包管理工具(Package Manager)去管理这些软件,这里说的是操作系统级别的包管理工具,也就是管理想要安装到操作系统上的软件的工具。在以后,你还会听到项目级别的包管理,比如前端项目用的 Bower ,还有管理 NodeJS 包的 npm 。

包管理工具,可以让我们用几个简单的命令去安装,升级,还有删除软件,并且它会自动给我们解决软件之间的依赖的问题。

Windows 用户可以使用 Chocolatey 这个包管理工具,Mac 用户可以使用 Homebrew 。

连接不上...

在下载东西的时候,如果出现网络连接的错误,一般就是 “网络问题”,给宽带服务商打电话没有用,你得自己准备 “梯子”。

Chocolatey

Windows 需要安装一下 Chocolatey,然后再用 Chocolatey 去管理需要安装到系统上的软件,这些可以安装的软件叫做包( Package )。

  • 在命令行工具下面安装 Chocolatey,通过命令提示符(cmd),或者 Powershell。
  • choco search 去搜索想要的包,用 -all 参数会显示所有可用的版本。
  • choco install 安装包,用 -version 参数可以安装指定版本的包。
  • choco upgrade 把安装的包升级成最新的版本。
  • choco uninstall 从电脑上删除已经安装的包,删除前用 choco version 命令查看指定包的是否有可用的更新。

安装 Chocolatey

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

以管理员身份打开命令行工具

Windows 7:点击 开始 菜单,在搜索框里输入 cmd 或者 powershell ,找到以后,用鼠标右键点击它们,选择 以管理员身份运行。

Windows 8 + :使用快捷键 win + Q ,搜索 cmd 或者 powershell ,然后右键点击它们,在窗口下面,选择 以管理员身份运行。

在 命令提示符 上安装 Chocolatey

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

在 Powershell 上安装 Chocolatey

iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))

 提示:如果是在 Powershell 下面安装 Chocolatey 之前,先修改一下 Powershell 的执行策略,不然会出现 “此系统中禁止执行脚本” 这样的错误,解决的方法是执行下面的命令,意思就是把执行的策略设置成不限制:

Set-ExecutionPolicy unrestricted

测试 

在命令行工具的下面,输入:

choco help

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

使用 Chocolatey

用 Chocolatey 做的事都是通过在命令行工具里面输入命令去做的,查看这些命令可以在使用 choco help 这个命令,Chocolatey 的命令都是用 choco 开头,后面接着是更具体的子命令,比如 install 就是去安装点什么,update 是去升级指定的包,uninstall 是把包从电脑上删除掉。

搜索

在 Chocolatey 的官方网站上(https://chocolatey.org/packages),可以查看所有可以使用 Chocolatey 安装的东西,或者也可以在命令行工具的下面去搜索想要安装的东西:

choco search <keyword>

跟 search 命令功能类似的还有 list 命令:

choco list <keyword>

比如搜索一下 nodeJS 相关的包,可以这样:

choco search nodeJS

上面的命令会在返回所以跟 nodeJS 相关的包,想要查看这些包所有的可用的版本,可以在命令的后面加上一个 -all 参数:

choco search nodeJS -all

包的类型

  • * (例:nodejs,git)
  • *.install (例:nodejs.install,git.install)
  • *.commandline(例:nodejs.commandline,未来会被抛弃)
  • *.portable(例:putty.portable)

Chocolatey 的包有不同的类型,有些包的名字里面会包含特殊的后缀,比如 .install ,.commandline,.portable ,有些包的名字不带这些后缀。

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

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

你也可以选择不带后缀的包,这样如果系统中已经安装了这个包,就会跳过去,如果没安装,Chocolatey 就会为你安装一个,默认安装的这个包的类型应该就是 .install 后缀的包。

安装

安装包,用的是 choco install 命令,把想要安装的包的名字放到 install 的后面,想一次去安装多个包,可以在 install 命令后面添加一个包的名字的列表,不同的包之间用空格分隔开。

choco install <package1 package2 package3...>

比如我们想去安装一个 cURL 工具,安装之前可以先用 search 命令搜索一下,搜索的时候加上 -all 参数,会显示出包的所有可用的版本,在安装的时候,你可以在 -version 参数的后面,指定一个具体要安装的版本,不使用 -version 参数,直接安装会安装包的最新发布的版本。

choco search curl -all

会返回一个列表:

...
 curl 7.21.7
 curl 7.22.0
 curl 7.23.1
 curl 7.25.0
 curl 7.28.1
 ...

下面我们故意去安装一个旧版本的 curl , 一会儿再去升级一下它。比如我要安装的是 7.22.0 版本的 curl :

choco install curl -version 7.22.0

Chocolatey 不仅可以给我们安装指定版本的包,它还能解决包的依赖问题,也就是,如果你安装的这个包需要其它的包提供的功能,Chocolatey 会自动给你安装这个依赖的包。

安装以后,可以用 choco list 命令,加上一个 -localonly 或 -lo(简写形式) 参数,查看在本地安装的包的列表。

choco list -localonly

升级

升级安装在本地电脑上的包,用的是 choco upgrade 命令,后面加上要升级的包的名字:

choco  upgrade <package>

在升级包之前,可以先先去查看一下有没有可用的升级。如果你想查看 Chocolatey 本身有没有可用的升级,执行命令:

choco version

在 choco version 命令的后面,输入具体的包的名字,可以查看指定的这个包有没有可用的新版本。比如查看一下前面我们安装的 cURL 这个小东西的升级:

choco version curl

返回的结果看起来是这样的:

name       : curl
found      : 7.22.0
...
latest     : 7.28.1
...

name 对应的是包的名字,found 后面是安装在本地电脑上的版本,latest 后面是最新的可用的版本。这里 cURL 这个包的最新版本是 7.28.1 ,比我们安装的版本要新,所以可以去升级一下它。

choco  upgrade curl

cURL 是一个命令行工具,所以在命令行工具的下面,查看这个小工具的版本可以这样:

curl -version

上面命令会返回当前安装在电脑上的 cURL 的版本,你会发现,它已经被 Chocolatey  升级成最新的版本了。

删除

想要删除掉用 Chocolatey 安装的包,用的是 choco uninstall ,后面加上要卸载或者删除掉的包的名字。

choco uninstall <package>

在删除包之前,可以查看一下所有安装在本地的包的列表:

choco list -localonly

比如我们要删除掉之前安装的 cURL 这个包:

choco uninstall curl

成功以后,再查看一下安装在本地的包的列表,已经看不到 cURL 了。

Homebrew

Mac 上面有 App Store,它像是一个图形界面的包管理工具,也可以很方便的管理系统上的软件。不过很多软件你是在 App Store 上面找不到的,所以,可以通过 Homebrew 这个包管理工具,在命令行下面去管理软件。这些能够使用 Homebrew 安装的东西叫做  Package,在 Homebrew 里面,Package 还有个名字叫 Formula 。

  • 在终端上执行安装 Homebrew 的命令。
  • man brew 可以查看 brew 命令的使用手册。
  • brew search 去搜索一下想要安装的东西。
  • brew install 可以安装指定的包。
  • brew upgrade 可以升级包。
  • brew remote 删除掉不需要的包。

安装 Homebrew

打开 Mac 自带的终端,可以在 Launchpad(F4)里面搜索 Terminal(终端),然后执行下面的命令:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

安装完成以后,执行 brew help,如果返回一些有用的帮助信息,说明可以在我们的电脑上使用 Homebrew 去管理软件了。

brew help

使用 Homebrew

Homebrew 的命令都是用 brew 开头,后面接着是具体的命令。比如 brew help 可以查看帮助信息,brew install 可以去安装包,brew upgrade 可以升级已经安装的包。

查看使用手册

要查看 Homebrew 所有可用的命令还有帮助的信息,在终端上执行 man brew 这条命令,man 就是 manpage (参考页),在 man 命令后面加上要查看使用手册的命令的名字。

man brew

要显示的内容如果很多,就会分页显示,有几个按键可以去浏览这些内容:

  • f 向后翻页
  • b 向前翻页
  • q 退出显示

搜索

搜索可以使用 Homebrew 安装的东西,用的是 brew search,后面加上搜索的关键词。

brew search <keyword>

比如搜索一下 tree 这个小工具:

brew search tree

上面的命令会列出包含 tree 这个关键词的包,要查看某个包的所有可用的版本,可以使用 brew versions,后面加上包的名字,像这样:

brew versions tree
brew versions 不在被支持了,可以使用:https://github.com/Homebrew/homebrew-versions

访问这个包的主页可以使用 brew home 这个命令,再加上包的名字,这样可以在浏览器中打开包的主页:

brew home tree

安装

安装包用的是 brew install ,一般用 Homebrew 安装的东西都是一些命令行的工具,这些工具大部分都是开发的时候要用的,不过你会看到一些 Cask 开头的包,Cask 扩展了 Homebrew ,它可以让我们用 Homebrew 去安装一些带图形界面的软件,比如 Chrome 浏览器。

brew install <package>

下面我们用这个命令去安装一个叫 tree 的小工具:

brew install tree

完成以后,在终端上输入:

tree --help

如果你能看到一些有用的帮助信息,说明已经可以使用 tree 这个工具了。想查看一下使用 brew 安装的东西,输入:

brew list

在返回的安装的包的列表里,你应该可以找到刚才用 brew install 安装的 tree 。

升级

升级 Homebrew 本身,用的是 brew update 命令,如果你要升级的是已经安装的包,可以使用 brew upgrade,后面不加具体的要升级的包,Homebrew 会去升级所有的包,也可以在后面指定某个要升级的包。

brew upgrade <package>

比如去升级一下上面安装的 tree,可以先看一下这个包有没有可用的更新。

brew outdated

如果有,就可以去升级一下它:

brew upgrade tree

删除

删除使用 Homebrew 安装的包,用的是 brew remove ,后面加上要删除的包的名字。

brew remove <package>
路径 Chocolatey Homebrew

评论

我用的是ubuntu,应该下载哪一个呢

Linux 本身自带包管理工具,apt-get,yum ...

C:\Windows\system32>@powershell -NoProfile -ExecutionPolicy unrestricted -Comman
d "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/instal
l.ps1'))" && SET PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin
'powershell' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
我在win7上安装的时候出现这种错误,要怎么解决。谢谢

你是在命令提示符下面执行的安装命令对吧。要不你试一下在 Powershell 上面去执行安装,打开 Powershell ,先设置一下 Set-ExecutionPolicy unrestricted ,输入 Y ,回车,然后输入 iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))

用了这么多年windows,第一次知道powershell,惭愧死了。

我也听说过很久,不过一直不知道这东西是 Windows 里自带的。

来ninghao每天都能进步一点点。

如果能持续一年,那会很厉害。哇哈哈~

bogon:~ zyh$ brew versions tree
Error: Unknown command: versions

怎么没有versions这个命令呢

是要查看包的版本号吗?我也没用过 versions 这个子命令。用 man brew ,查看一下 brew 的手册看看有吧。

这篇文章上有这个命令,试了一下错误说没这个命令的

是哪一个呀 xiaohui 。

我在PowerShell里用choco install sublime提示‘无法连接远程服务器Command 'install' failed (sometimes this indicates a partial failure). Additional info/packages: sublime’

很可能是网络原因 :)

不开VPN 应该没法下载Homebrew
Downloading and installing Homebrew ...
......
......
Receiving objects: 0% ( /228949), 12KiB/s, done.

有时候行 ...

bower和Homebrew 有什么区别?

Homebrew 是一个系统级别的包管理工具,就是它可以管理你电脑上的软件,就像是你手机里的 App Store ,只不过它是在命令行界面上去管理软件。bower 用来管理你的前端项目的包,比如 Bootstrap,jQuery,AngularJS 等等。

明白了,谢谢王兄

皓老师,我想用Homebrew安装Atom 和 Brackets 为什么终端总是告诉我No available formula for ......

上文提到的用brew安装的tree小工具,这个小工具有什么用?

老师,这个chocolatey不用VPN是不是就不能装软件呀?

很有可能,因为国内网络的问题。

我想把软件安装到其他目录下怎么写

用 choco 下载安装软件有些慢,您先手工下载安装吧。

不错

使用choco安装git以后
我发现我找不到git。也不知道怎么运行git了。。
安装之前我一直用的之前那个下一步。下一步那个安装的

现在我推荐安装 git 的方法是,你可以下载使用 cmder 这个命令行工具,下载完整版的,里面自带 git,还有很多 unix 工具,非常好。

微信好友

用微信扫描二维码,
加我好友。

微信公众号

用微信扫描二维码,
订阅宁皓网公众号。

240746680

用 QQ 扫描二维码,
加入宁皓网 QQ 群。

统计

14696
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点