犹豫了很久,还是咬牙把macbook pro
给买了。勒紧裤腰带啃干脆面的日子就在眼前,anyway,2015的第一个目标提前实现了。
苹果的笔记本无论是工艺设计还是性能都还是很让人眼热的,对于一个程序猿来说,不失为一件装逼利器。
pro到手之后这两天,一直在把玩。布环境,搞插件,装应用。这个过程中也遇到了不少坎,掉了许多次坑。把这些经验教训都扔在这篇文字里,以作备忘。
修改命令提示符
使用vi编辑/etc/profile文件,或者~/.bash_profile文件,在最后加上:
export PS1='[/u@/h /W]/$ '
即可,其中/u显示当前用户账号,/h显示当前主机名,/W显示当前路径,/$显示’$’符号
Vim和iTerm配色
摒弃了系统自带的Terminal,装了更为方便的iTerm,但是默认的颜色都不太喜欢,所以更改了默认的配色方案。对于配色方案,萝卜青菜各有所爱,因人而异。我选择的是Solarized。
Solarized官网地址:http://ethanschoonover.com/solarized
下载完成后,将用于vim的配色文件
solarized.vim
放在 ~/.vim/colors/
目录下,如果没有该目录,自行创建。然后设置
~/.vimrc
:1 | syntax enable |
最后打开 ~/.barshrc
并添加 "export TERM=xterm-256color"
, 这样vim的配色方案就设置完成了。
和vim的设置相比,iTerm的配色设置就简单多了。
$ git clone git@github.com:seebi/dircolors-solarized.git solarized
克隆到本地。- 然后找到
iterm2-colors-solarized
目录, 点击是使用目录下的Solarized Dark.itermcolors
和Solarized Light.itermcolors
导入配色方案。 - 打开iTerm左上找到
iTerm
>Preference
>Prefiles
>colors
界面上找到选择配色方案的下拉框,选择刚才导入的深色或者浅色的Solarized方案就成功了。
安裝 Git 的 Bash autocompletion 和其他设置
brew install bash-completion
cp /usr/local/etc/bash_completion.d/git-completion.bash ~/.git-bash-completion.sh
编辑 ~/.bash_profile
加入1
2
3if [ -f ~/.git-completion.bash ]; then
. ~/.git-completion.bash
fi
给git指令的输出结果添加颜色,例如:git status
, git branch
…
$git config —global color.ui true
设定git指令的简写形式
$git config —global alias.co checkout
$git config —global alias.ci commit
$git config —global alias.st status
$git config —global alias.br branch
$git config —global alias.pl pull
$git config —global alias.ph push
基于ssh使用git
- 生成git使用的公私钥匙
github
和github.pub
$ssh-keygen- 在~/.ssh/config里加上刚才生成的github(私钥)
Host github.com
<注意缩进>IdentityFile ~/.ssh/github- 登录github个人账户里,找到
ssh key
管理 >Add……
把github.pub文件里的内容填入。- 完成。
对于应用软件的安装和管理,向来是一件很头疼的事情。但好在linux上有yum
,apt
类似的软件包管理工具,让绝大部分的软件都能很优雅的进行安装和卸载,处理好软件的依赖关系。
与之相对应的,Mac OS X上有homebrew
。
brew的详细介绍和简单用法不说,网上相关的文章一搜一片。
如何用brew安装我需要的R16B03这个版本?
在安装erlang环境的过程中,
brew search erlang
的时候列出的版本有erlang-r13
,erlang-r14
,erlang-r15
,erlang-r16
,而在erlang官网上R16打头的版本就有5个。解决办法:
- 查看 brew 支持哪些版本的 erlang
brew versions erlang
17.0 git checkout 30de282 /usr/local/Library/Formula/erlang.rb
R16B03-1 git checkout 0c2d4c8 /usr/local/Library/Formula/erlang.rb
R16B03 git checkout a1ade14 /usr/local/Library/Formula/erlang.rb
R15B03-1 git checkout 8759d6c /usr/local/Library/Formula/erlang.rb
R16B03在里边,那么我们就能用brew安装了。- 进入 brew 所在的git仓库
cd `brew —prefix`- 切换到R16B03的安装环境里
git checkout a1ade14 /usr/local/Library/Formula/erlang.rb- 安装R16B03版本的erlang
brew install erlang
安装好了我想要的erlang版本,但是这个erlang环境里没有我需要用到的crypto这个库,后来才知道是因为Erlang的crypto模块与最新的openssl动态链接库不兼容。
如何解决openssl的兼容问题?
- 下载openssl源码
$ wget hhttp://www.openssl.org/source/openssl-1.0.2a.tar.gz
$ tar zxvf openssl-1.0.2a.tar.gz
- 进入源码目录,注意如果不是最新下的目录,需要先执行
make clean
确保能够重新编译成功- 为了不和系统的openssl冲突,我们安装的时候需要指定安装的路径
$ ./configure --prefix=/usr/local/opt
- config之后,会生成Makefile,打开Makefile找到gcc,在CFLAG参数列表里加上-fPIC
CC= gcc
CFLAG= -fPIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -Wa,—noexecstack -m64 -DL_ENDIAN -DTERMIO -O3 -Wall -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM- 编译并安装
$ make && make install
到这里之后,如果是用源码安装erlang的话,就可以进到erlang的源码目录下,先make clean
一下,然后./configure --with-ssl=/usr/local/opt/ssl
配置,最后 make && make install
编译安装就大功告成了。
但是为了让brew继续管理我的erlang,我还是决定用brew安装,先卸载之前没有包含crypto的erlang(brew unistall erlang
)。
使用brew安装erlang时,如何加入指定的参数,例如: —with-ssl=/usr/local/opt/ssl ?
- 执行
$brew edit erlang
打开brew安装erlang时的命令源码- 在install方法里找到`
args = %W[]--disable-debug --disable-silent-rules --prefix=#{prefix} --enable-kernel-poll --enable-threads --enable-shared-zlib --enable-smp-support
这个参数,然后把
—with-ssl=/usr/local/opt/ssl` 加到从参数里- 按照之前的办法安装erlang R16B03,问题就解决了。
Erlang R16B03 (erts-5.10.4) [source] [64-bit] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:false]
Eshell V5.10.4 (abort with ^G)
1> crypto:start().
ok
2>
Erlang环境安装就到此完事了。
工作上除了用到Erlang,还有lua和Python,系统没有带lua,但是lua的安装很简单,不多说。系统带了Python,版本很多,默认的是2.7.6,不需要我再费心思。
装pip(Python包管理工具)没什么大问题,先装setuptools
然后下载pip源码,进到目录执行python setup.py install
基本上就完事了。然后其余的大部分包都可以通过pip install XX
来安装和卸载,方便省事。
通过pip安装m2crypto,报错 m2crypto unable to find ‘openssl/opensslv.h’?
报错日志很明白,找不到openssl的inlude和lib目录,需要的头文件找不到。
- 找到系统里的opensslv.h文件
find / -name opensslv.h- 把找到的结果都看了一遍,发现
/Applications/Xcode.app/Contents/Developer/Platforms /MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/openssl
这个目录最像是所需要的,通过软连接把这个目录放到pip能找到的地址下。
ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.
10.sdk/usr/include/openssl /usr/include/- 重新安装
pip install m2crypto
,发现还有报错找不到AvailabilityMacros.h
,看了一下报错的文件openssl/stack.h
:62行有这么一句#include <AvailabilityMacros.h>
,导入同级目录下的AvailabilityMacros.h
头文件,但是这个文件不存在。/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/ MacOSX10.10.sdk/usr/include/AvailabilityMacros.h
,通过find搜出来发现它是这样的。按照上边的方法把它也软连接到/usr/include/openssl/
目录下。- 再次pip安装,成功。
到这里,工作需要用到的环境基本上也就安装完成了。后来在clone转移我基于octopress搭建的个人时又遇到了不少问题,这一节另记,就不再这里写了。
总得说来,弄这些环境的过程中有时候卡在一个地方真的是想死的心都有,装一遍不成继续装第二遍,两遍三遍不成,担心自己本就不大的硬盘里残留的垃圾越来越多,真是着急。但好在在各种折腾之后,不管是网上找到解决办法,还是自己去看源码找到了解决的方案,整个过程对我来说都是进步的课程。
知道问题的原因,找到问题的解决办法。知其然,亦知其所以然。这也是我作为一个技术人员的理念,程序在于折腾。
上图几张,晒晒我的MacBook Pro。
完。