包管理器是神马东西?让咱们看看wikipedia上的介绍。git
In software, a package management system, also called package manager, is a collection of software tools to automate the process of installing, upgrading, configuring, and removing software packages for a computer’s operating system in a consistent manner.github
简单的来讲,包管理器就是一个提供对一系列软件包的安装、卸载、升级的自动化工具。 包管理器大致分为两种,一种是管理预编译好的软件(Binary installation/Precomplied packages),如MAC上的App Store,Windows下的Windows installer。另外一种是基于源码的安装包,经过编译脚原本安装软件(Sourcecode-based installation/installing using compile scripts),如MAC上的Homebrew,Linux上的apt-build。ruby
今天就给你们讲解下Homebrew。bash
Homebrew官网上称本身为:app
The missing package manager for OS Xcurl
即本身弥补了在OS X上无包管理器的缺陷。工具
需求环境
OS X 10.5及其以上版本。fetch
安装XCode里的开发者工具。主要是由于开发者工具中有mac下的gcc编译器,不少软件须要它。ui
ruby。Homebrew使用ruby写的,因此ruby不可或缺。url
安装Homebrew
只须要在terminal下敲这样一行代码就行。
1
|
ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)" |
brew会被默认安装到/usr/local文件夹中。从上述命令能够看出homebrew是基于ruby的一款包管理器,而且host在github上。
使用
在Homebrew中支持安装的软件被称为Formula。
查看全部支持的Formual。能够在这里查看。若是不能上网的话能够经过
brew server
来在本地开启一个server来查看。brew search [Formula]
, 搜索某个Formula是否被支持。brew install [Formula]
, 安装某个Formula。brew upgrade [Formula]
, 升级某个Formula。brew uninstall [Formula]
, 删除某个Formula。brew update
, 更新brew支持的Formula列表。
全部的软件都会默认被安装到/usr/local/Cellar
目录下,而后将部分可执行脚本文件经过软连接连接到/usr/local\bin
目录下,这样咱们就能够在Terminal下使用这些软件。
Homebrew对于Formula的管理是基于git的。你能够在/usr/local/
下发现有一个.git
的文件夹。经过查看.git
目录下的config
文件,能够知道其实目录是被连接到github上的一个repository。
1 2 3 4 5 6 7 8 9 10 |
[core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true ignorecase = true autocrlf = false [remote "origin"] url = https://github.com/mxcl/homebrew.git fetch = +refs/heads/*:refs/remotes/origin/* |
你也能够为本身的软件加入到Homebrew的支持列表中。只须要写一个ruby脚本check in到其github中。 下面是一个脚本示例。
1 2 3 4 5 6 7 8 9 10 11 12 |
require 'formula' class Wget < Formula homepage 'http://www.gnu.org/wget/' url 'http://ftp.gnu.org/wget-1.12.tar.gz' md5 '308a5476fc096a8a525d07279a6f6aa3' def install system "./configure --prefix=#{prefix}" system 'make install' end end |