HomeBrew
1.1、HomeBrew简介
是什么 ?:the missing package manager for macOS and GNU/Linux
开发语言:RubyBash
官方主页:http://brew.sh
源码仓库:https://github.com/Homebrew/brew

注意HomeBrew最初只支持macOS, 后来有人基于HomeBrew开发出了LinuxBrew用来支持GNU/Linux, 再后来,将LinuxBrew合并到了HomeBrew中。

1.2、在macOS中安装HomeBrew

Terminal中执行如下命令:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

注意看输出的日志,可以帮助我们快速的诊断问题和使用它。

安装过程中如果发现您还没有安装过command-line-develop-tools,它会帮您安装。 因为它要用里面的git命令下载代码。

1.3、在GNU/Linux中安装HomeBrew

虽然各种GNU/Linux发行版都带有自己的包管理工具,诸如apt-getyumdnfzypperapkpacmanPortage等等, 但HomeBrew在以下情况下仍有用武之地:

  • HomeBrew允许将包安装到用户的$HOME目录,这样的话, 就不再需要执行sudo命令了;
  • 对于在GNU/Linux系统自带的包管理器中缺少的包,可以通过HomeBrew来搞定;
  • 如果GNU/Linux系统自带的包管理器中所带包的版本过旧,那么利用HomeBrew能够安装该包的最新版本。
1.3.1、在GNU/Linux中以非root用户安装HomeBrew

出于安全的考虑,HomeBrew的安装脚本不允许在root用户下安装。但是, 我们有时候仅仅是为了在root用户下做一些测试工作,并不是在生产环境下使用。 很多操作系统的默认用户就是rootdocker容器的默认用户通常也是root, 在root用户下不能使用HomeBrew就给我们想要快速测试一些东西带来了麻烦。

在生产环境中直接使用root用户是不安全的做法。应该创建非root用户,在非root用户下进行操作。

如果您已经有非root用户,请从step6开始;

如果您还没有非root用户,请从step1开始。

step1、安装依赖工具:sudoshadow-utils

step2、使用useradd创建一个新的登录用户

useradd -m -s /bin/bash fpliu

step3、使用passwd给该新用户设置一个密码

passwd fpliu

step4、给该新用户授予权限。在/etc/sudoers中加入如下内容

fpliu ALL=(ALL) ALL

step5、使用su切换到该新用户

su - fpliu

step6、安装依赖bashGNU CoreUtilsgitcURLtargzipfilegcc / GCC

step7、在Terminal中执行如下命令

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

step8、配置环境变量

test -d ~/.linuxbrew && eval $(~/.linuxbrew/bin/brew shellenv)
test -d /home/linuxbrew/.linuxbrew && eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv)
test -r ~/.bash_profile && echo "eval \$($(brew --prefix)/bin/brew shellenv)" >> ~/.bash_profile
echo "eval \$($(brew --prefix)/bin/brew shellenv)" >> ~/.profile
1.3.2、在GNU/Linux中以root用户安装HomeBrew

step1、安装依赖bashGNU CoreUtilsgitcURLtargzipfilegcc / GCC

step2、在Terminal中执行如下命令

install -d /home/linuxbrew/.linuxbrew/bin
git clone https://github.com/Homebrew/brew /home/linuxbrew/.linuxbrew/Homebrew
ln -s /home/linuxbrew/.linuxbrew/Homebrew/bin/brew /home/linuxbrew/.linuxbrew/bin
eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv)

step3、配置环境变量

echo "eval \$($(brew --prefix)/bin/brew shellenv)" >> ~/.bash_profile
echo "eval \$($(brew --prefix)/bin/brew shellenv)" >> ~/.profile
1.4、LinuxBrew Docker Image

官方的LinuxBrew Docker Imagehttps://hub.docker.com/r/linuxbrew/brew

示例1:零时创建一个新容器,并进入容器,执行完命令后退出该容器,并销毁该容器:

docker run --user linuxbrew -it --rm linuxbrew/brew:latest /bin/bash

示例2:零时创建一个新容器,执行完命令后退出该容器,并销毁该容器:

docker run --user linuxbrew -it --rm linuxbrew/brew:latest brew search curl

示例3:创建一个新容器,执行完命令后退出该容器,但不销毁该容器:

docker run --user linuxbrew -it --name linuxbrew linuxbrew/brew:latest /bin/bash
1.5、brew命令

brew命令自带了很多的子命令。但是HomeBrew也允许第三方开发者为HomeBrew添加功能, 并且添加的功能都能通过brew子命令的形式让用户使用。

关于子命令如何扩展,请查看:http://docs.brew.sh/External-Commands.html

1.6、HomeBrew仓库及其镜像

HomeBrew的仓库分为3类:

  • HomeBrew的主程序,使用git管理
  • HomeBrewformula索引仓库,使用git管理
  • HomeBrew Bottles
1.6.1、HomeBrew的主程序

HomeBrew的主程序,源码仓库:https://github.com/Homebrew/brew

HomeBrew的安装脚本实际上就是使用git下载此程序,然后做了一些其他的额外工作。

brew update命令也会更新此仓库。

brew --repo命令可以获得此仓库在本地的存放位置。

常用的brew.git源的镜像:

清华大学开源镜像站https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git
中科大开源镜像站https://mirrors.ustc.edu.cn/brew.git
阿里开源镜像站https://mirrors.aliyun.com/homebrew/brew.git
更多

替换方法:

git -C "$(brew --repo)" remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git
brew update

如果您替换了这些源之后发现有问题,想要换回去,同样,执行此命令,只是把url换成原来的即可。

1.6.2、HomeBrew的formula索引仓库

HomeBrew官方维护着一些formula索引仓库,也允许第三方创建formula索引仓库。

HomeBrewformula索引仓库只能存放在GitHub上, 并且项目地址必须是https://github.com/{user}/homebrew-{repo}

那么到底有哪些formula索引仓库可以使用呢?您可以在浏览器中打开GitHub官网进行搜索带有homebrew-字样的项目。

下面是一些常用的formula索引仓库:

GitHub服务器不在中国,我们平时访问的时候也是勉强可以访问,速度是很慢的, 对于我们频繁使用HomeBrew的人来说,那个速度是不能忍受的。

查看安装了哪些formula索引仓库:

国内大多数开源镜像站只镜像了homebrew/corehomebrew/cask这两个formula索引仓库。

1.6.3、HomeBrew Bottles仓库

HomeBrew Bottles仓库是存放针对macOS预先编译好的二进制包的地方。

HomeBrew Bottles仓库的源是:https://homebrew.bintray.com

HomeBrew Bottles仓库的源在全球有很多的镜像服务器,常用的镜像:

清华大学开源镜像站https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles
中科大开源镜像站https://mirrors.ustc.edu.cn/homebrew-bottles
阿里开源镜像站https://mirrors.aliyun.com/homebrew/homebrew-bottles
更多

临时替换方法:

export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles

永久替换方法:

如果您使用的Shellbash, 并且您的操作系统macOS, 请执行如下的命令:

echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles' >> ~/.bash_profile
source ~/.bash_profile

如果您使用的Shellbash, 并且您的操作系统不是macOS, 请执行如下的命令:

echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles' >> ~/.bashrc
source ~/.bashrc

如果您使用的Shellzsh,请执行如下的命令:

echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles' >> ~/.zshrc
source ~/.zshrc

注意:因为HomeBrew允许formula存放在任何地方,也就是,不一定非得是在HomeBrew Bottles上, 很多国外的软件是放在国外的Amazon S3等云存储服务器上的,这时候, 我们替换镜像是解决不了问题的,只能通过其他办法解决。

1.6.4、LinuxBrew Bottles仓库

LinuxBrew Bottles仓库是存放针对GNU/Linux预先编译好的二进制包的地方。

LinuxBrew Bottles仓库的源是:https://linuxbrew.bintray.com

国内似乎没有https://linuxbrew.bintray.com的镜像,不过,https://linuxbrew.bintray.com在国内有CDN节点,所以,速度也是很快的。