CentOS 6.5 に開発環境を構築するためのメモ
CentOS 6.5 の開発環境にインストールするメモ。日々メンテナンス更新しておきたい。
yumで入るものは書かない。
TODO
- dotfiles に 以下のことをするスクリプトファイルでも準備しておくと良さげ
- vimを自分でビルドするのは良いが、python有効になってないことが判明
- tmuxp
- nvm
- rbenv
- virtualenv
- autojump
- z にしようかな
事前準備
sudo yum -y update sudo yum -y groupinstall 'Development Tools' sudo yum -y install curl dstat ruby lua mercurial reboot
git のインストール
CentOSのgitは古くて残念なのでソースからビルドする。
sudo yum -y groupinstall 'Development Tools' sudo yum -y install zlib-devel perl-ExtUtils-MakeMaker asciidoc xmlto openssl-devel wget https://www.kernel.org/pub/software/scm/git/git-2.0.4.tar.gz tar xzf git-2.0.4.tar.gz cd git-2.0.4 make configure ./configure --prefix=/usr/local make all doc sudo make install install-doc install-html
zsh のインストール
/bin/zsh
ではなく、/usr/local/bin/zsh
になるのに注意せねばならぬ。
また、事故が怖いのでデフォルトシェルの変更はしない。(chsh
しない)
基本的にtmux使うのでその時に使用する.
wget http://sourceforge.net/projects/zsh/files/zsh/5.0.5/zsh-5.0.5.tar.gz/download -O zsh-5.0.5.tar.gz tar xzf zsh-5.0.5.tar.gz cd zsh-5.0.5 ./configure make sudo make install
vim のインストール
TODO : patchを適用する(面倒くさいので、リポジトリのソースを直接ビルドの方がいいかもしれない。管理方法がわかってないので一緒かもしれんが。)
sudo yum -y groupinstall 'Development Tools' sudo yum -y install curl git ruby lua sudo yum -y install bzip2-devel curl-devel expat-devel ncurses-devel zlib-devel python-devel ruby-devel lua-devel wget ftp://ftp.vim.org/pub/vim/unix/vim-7.4.tar.bz2 tar xjf vim-7.4.tar.bz2 cd vim74 ./configure --disable-selinux --enable-multibyte --with-features=huge --enable-rubyinterp=dynamic --enable-pythoninterp=dynamic --enable-luainterp=dynamic make sudo make install
tmuxのインストール
tmux 1.9aには、libevent 2.0系が必要になるのでまずはlibevent入れる必要あり。
sudo yum -y groupinstall 'Development Tools' sudo yum -y install ncurses-devel curl -L https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz -o libevent-2.0.21-stable.tar.gz tar xzf libevent-2.0.21-stable.tar.gz cd libevent-2.0.21-stable ./configure make && sudo make install cd wget http://downloads.sourceforge.net/tmux/tmux-1.9a.tar.gz tar xzf tmux-1.9a.tar.gz cd tmux-1.9a export LIBEVENT_CFLAGS="-I/usr/local/include" export LIBEVENT_LIBS="-L/usr/local/lib -Wl,-rpath=/usr/local/lib -levent" ./configure make && sudo make install sudo cp examples/bash_completion_tmux.sh /etc/bash_completion.d/
The Silver Searcher (ag)
find + grepは古すぎますね。時代は ag です。2文字とか最高です。 ちなみに pt 乗り換え予定。
sudo yum -y groupinstall "Development Tools" sudo yum -y install pcre-devel xz-devel git clone https://github.com/ggreer/the_silver_searcher cd the_silver_searcher ./build.sh mkdir -p ~/bin/ ln -sf `pwd`/ag ~/bin/
pt
UTF-8以外の日本語に対応している agの代替。golangで書かれているのでgolangの勉強にソースを読んでおきたいところ。
mkdir -p ~/bin/ wget https://github.com/monochromegane/the_platinum_searcher/releases/download/v1.7.1/pt_linux_amd64.tar.gz tar xzf pt_linux_amd64.tar.gz cd pt_linux_amd64 cp pt ~/bin/
乗り換えようと思って試しているけども、agと動きが微妙に違うのが気になっている。検索結果も違うのがちょっとどうしよっかなという感じ。 真面目にテスト運用が必要そう。
メモ
- ptは、検索の結果何もない場合に exit codeが 1 で終わる(ag は 0)
- 隠しファイルの検索を指定するオプションがない
- ファイル・パスを複数指定した場合の挙動が異なる
peco
mkdir -p ~/bin/ wget https://github.com/peco/peco/releases/download/v0.2.3/peco_linux_amd64.tar.gz tar xzf peco_linux_amd64.tar.gz cd peco_linux_amd64 cp peco ~/bin/
dotfiles
自分の設定ファイル
git clone https://github.com/tanacasino/dotfiles.git cd dotfiles ./setup.sh
まとめ
CentOS 6.x系だとパッケージ古いよねというあるあるネタのせいでソースからビルドする必要があり面倒くさい。 もしかしてだけど、Dropboxとか使ってオレオレyum repo作った方が幸せになれるんじゃないの? とか、CentOS 6.x系は捨てて、CentOS 7系に移行すればええのかもしれんとか思った。
もちろんUbuntuいいと思うけど、本番がCentOSのパターン多いので、できれば統一しておきたいなぁとかは思う。 デプロイ環境がDockerのようなエコシステムに統一されれば、開発環境のホストOSは問わないって感じになるので気にする必要なくなるのかもだけども。
が、そもそもディストリが配布するパッケージは、基本的にリリースされるとメジャーバージョンはフリーズされる(一部のバンバンバージョンあげるWebブラウザみたいなの除く)ので、バージョンが新しくてもシステムに影響を及ぼすわけではないツール類は、homebrew のようなパッケージ管理をディストリのパッケージ管理とは別に個人のホームディレクトリにインストールする形で管理できると素晴らしいのかもしれない。
と思ったら、linuxbrewなるものがあったので期待したい。 残念ながら自分の環境では一部のパッケージがインストールできなかったので、もっと時間のある時に導入しようと思いましたが・・・
あとちょっとしたツール系のコマンド類は、pecoのようにgolangで書かれているとバイナリ1つコピーすればOKなので素晴らしいと思った。 便利なコマンドラインツールは全部golangになればいいですわ!rubyとかpythonで書かれてるとどうしてもインタプリタのバージョン問題があるし、JVM系言語は起動が遅いので一瞬で終了するプログラムに向いてない。 golangだとクロスプラットフォームでバイナリ作れるし、実行速度が早いので素敵やと思う。 (もちろん serf, consulのように libcが古いCentOS 6.x みたいなOSで動かないバイナリもあるけれど・・・)