tanacasinoのメモ

what are you waiting for ?

CentOS 6.5 に開発環境を構築するためのメモ

CentOS 6.5 の開発環境にインストールするメモ。日々メンテナンス更新しておきたい。

yumで入るものは書かない。

  1. vim
  2. tmux
  3. zsh
  4. ag
  5. peco
  6. dotfiles (vim,tmux,zsh等の設定)

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で動かないバイナリもあるけれど・・・)