vagrant brew install git error

前言

前几天因为需要在php5.4Mysql环境中开发,所以准备搞一个虚拟机,跑一个vagrant

今天安装git的时候,感慨Mac OS下有homebrew,随便一搜,发现linux下确实也有brew,一个homebrew的分支linuxbrew

安装非常简单。

安装

首先身平台自带的安装工具yum或者apt-get安装依赖。

Debian or Ubuntu

1
sudo apt-get install build-essential curl git m4 ruby texinfo libbz2-dev libcurl4-openssl-dev libexpat-dev libncurses-dev zlib1g-dev

Fedora, CentOS or Red Hat

1
sudo yum groupinstall 'Development Tools' && sudo yum install curl git irb m4 ruby texinfo bzip2-devel curl-devel expat-devel ncurses-devel zlib-devel

之后,运行安装脚本就好了。

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

由于网络原因,在安装速度取决与当前环境连接github的速度。

在安装的最后一步会提示输入passwordvagrant的虚拟机实例默认的passwordvagrant

配置

安装好linuxbrew之后,需要把shell的环境设置一下,不然打brew的时候会提示找不到命令。
把下面的内容添加到.bashrc or .zshrc:

1
2
3
export PATH="$HOME/.linuxbrew/bin:$PATH"
export MANPATH="$HOME/.linuxbrew/share/man:$MANPATH"
export INFOPATH="$HOME/.linuxbrew/share/info:$INFOPATH"

这里也有一点需要注意,这三行需要放在最后一行。不然会无效的。

添加好之后,可以选择运行sourse .bashrc或者sourse .zshrc来重新加载配置,或者重新登录shell

到这里,linuxbrew就安装好了,brew运行一下试试吧。

安装git报错

我一直很喜欢最新版本,ubuntu下默认安装的git版本是1.9.1。所以,安装好linuxbrew之后的第一步,就是通过brew再安装一次git,替换掉现有的git

1
brew install git`

brew最厉害的地方就在于,它会自动分析依赖,然后安装响应的东西,不需要人工处理繁复的依赖。

但是在vagrant下直接运行上面的命令会报错:

1
tmp/tcl-tk--tk20150913-17770-afpei5/tk8.6.4/unix/../generic/tk.h:96:25: fatal error: X11/Xlib.h: No such file or directory
 #   include <X11/Xlib.h>
                         ^
compilation terminated.
make: *** [tkStubLib.o] Error 1

原因在于vagrant是无界面的,所以没有X11相关的东西。

理论上的解决方案自然是不安装X11有关的依赖,只是我不知道其中的命令。

我推测这个问题可能比较小众,因为linuxbrew上才1K出头的start,知道的人可能不多,再用在vagrant下的人恐怕就更少了。

搜了一圈在linuxbrewissue中找到了答案:

1
brew install tcl-tk --without-tk

先这样安装tcl的依赖,然后再安装git就好了。

当然,最好在安装之前先brew update或者brew up一下。