もう11月とな。道理で寒いわけだ。
会社のサーバを弄るとき、インフラチームでない私にはroot権限がないので、最初は何かと不便を強いられていました。が、1ヶ月もすると慣れてくるもので、むしろroot権限なんて必要ないよなぁ、と思うように。慣れって怖い。いや、rootを自由自在に触れる環境のほうが怖いか。
root権限がないので、「あれがないこれがない」に対応するには自分でホームディレクトリにインストールするしかないです。ソースを落として、configureして、makeして、make installして、と。configure --helpを読みながらやらざるを得ないので、正直言って最初は面倒です。途中でハマったりしてググったとしても、パッケージ管理システムを使ってインストールする記事ばかりですし。
閑話休題。そんなこんなで、新しい開発サーバに入るときなどは一からVimを入れたりする必要があるので、その他諸々(lynxとctags)をインストールするためのスクリプトを(会社の先輩が作ったものをパクって)書いてみました。Gitから最新のVimを取ってくるので、今現在だとVim 8.0がインストールされることになります。
#!/bin/bash set -Ceu install_dir="$HOME/local" work_dir="${HOME}/work" make_install_dir() { if [ ! -d "$install_dir" ]; then mkdir -p "$install_dir" fi } make_work_dir() { if [ ! -d "$work_dir" ]; then mkdir -p "$work_dir" fi } set_env() { # luajitの実行パスがわからないとvimのconfigureでこけるため export PATH="$install_dir/bin:$PATH" } install_lua() { cd "${work_dir}/" echo 'install lua' if [ ! -d "${work_dir}/luajit-2.0" ]; then git clone http://luajit.org/git/luajit-2.0.git else cd "${work_dir}/luajit-2.0" git checkout master git fetch --prune git pull --prune fi cd "${work_dir}/luajit-2.0" make PREFIX=$install_dir && make install PREFIX=$install_dir && make clean } install_ncurses() { cd "${work_dir}/" echo 'install ncurses' if [ ! -f "${work_dir}/ncurses-6.0.tar.gz" ]; then wget http://ftp.yz.yamagata-u.ac.jp/pub/GNU/ncurses/ncurses-6.0.tar.gz fi tar -zxvf ncurses-6.0.tar.gz cd "${work_dir}/ncurses-6.0" ./configure --prefix=$install_dir --without-cxx-bindings --with-shared make && make install && make clean } install_vim() { cd "${work_dir}/" echo 'install vim' if [ ! -d "${work_dir}/vim" ]; then git clone https://github.com/vim/vim.git else cd "${work_dir}/vim" git checkout master git fetch --prune git pull --prune fi if [ -f ${work_dir}/vim/src/auto/config.cache ]; then rm "${work_dir}/vim/src/auto/config.cache" fi cd "${work_dir}/vim/src" export LDFLAGS="-L$install_dir/lib" ./configure --with-local-dir=$install_dir \ --with-features=huge \ --enable-luainterp=dynamic \ --with-luajit \ --with-lua-prefix=$install_dir \ --with-tlib=ncurses \ --prefix=$install_dir make && make install && make clean } install_lynx() { cd "${work_dir}/" echo 'install lynx' if [ ! -f ${work_dir}/lynx2.8.8rel.2.tar.gz ]; then wget http://invisible-mirror.net/archives/lynx/tarballs/lynx2.8.8rel.2.tar.gz fi tar -zxvf lynx2.8.8rel.2.tar.gz cd "${work_dir}/lynx2-8-8" ./configure --prefix=$install_dir --with-curses-dir=$install_dir make && make install && make clean } install_ctags() { cd "${work_dir}/" echo 'install ctags' if [ ! -d ${work_dir}/ctags ]; then git clone https://github.com/vim-jp/ctags.git else cd "${work_dir}/ctags" git checkout master git fetch --prune git pull --prune fi cd "${work_dir}/ctags" autoheader autoconf ./configure --prefix=$install_dir make && make install && make clean } main() { make_install_dir make_work_dir set_env install_lua install_ncurses install_vim install_lynx install_ctags } main
あと、環境変数はなるべく変更したくないので、例えばインストールしたVimを使う場合は、
echo 'alias vim="LD_LIBRARY_PATH=$HOME/local/lib $HOME/local/bin/vim"' >> .zshrc
などエイリアスさせています。まあPATHくらいならログインシェルの設定に追加しておけばいいけども。
これで安心して、今年のクリスマスはVim 8.0と一緒に過ごせますね(ぉ
追記
zshをコンパイルするときに怒られたので、ncursesを-fPICオプションでコンパイルするように「--with-shared」をconfigureに追加。
また、Ubuntu 16.04でncursesをコンパイルできない場合は以下を参考に。