mabulog

このブログは、mabuの平凡な日常を淡々と描く物です。 過度な期待はしないでください。 あと、部屋は明るくして、 モニターから3メートルは離れて見やがってください。

Installed anyenv

背景 Background

VimプラグインでPythonを利用するなど、複数言語が必要になったため、
これを機にenv系のマネージャであるanyenvのインストールを行います。

目標 Goal

  • anyenvを利用して、Ruby(rbenv)、PHP(phpenv)、Python(pyenv)、Perl(plenv)、Node.js(ndenv)、D言語(denv)のインストール

環境 Environment

手順 Operation

インストール

各環境に必要なパッケージは事前にインストール済みです。

$ cd
$ git clone https://github.com/riywo/anyenv .anyenv
$ vi .bash_profile
export PATH=$HOME/.anyenv/bin:$PATH:$HOME/bin
eval "$(anyenv init -)"

$ exec $SHELL -l
$ anyenv install rbenv
$ anyenv install plenv
$ anyenv install pyenv
$ anyenv install phpenv
$ anyenv install ndenv
$ anyenv install denv
$ exec $SEHLL -l

バージョン確認

下記動作確認中に動作が怪しい場合にはセッションを一度貼り直した方が良さそうです。
私は'anyenv version'でエラーを吐かれたのでとりあえず貼り直して解決しました。

$ rbenv --version
rbenv 0.4.0-52-g1cc7536
$ plenv --version
plenv 2.0.1-17-g31fb8c1
$ pyenv --version
pyenv 0.4.0-20130726-23-gaab8bb2
$ phpenv --version
phpenv v0.0.4-dev
$ ndenv --version
ndenv 0.4.0
$ denv
denv 0.1.1
....

$ anyenv version
denv: system (set by /home/mabulog/.anyenv/envs/denv/version)
ndenv: system (set by /home/mabulog/.anyenv/envs/ndenv/version)
phpenv: system (set by /home/mabulog/.anyenv/envs/phpenv/version)
plenv: system (set by /home/mabulog/.anyenv/envs/plenv/version)
pyenv: system (set by /home/mabulog/.anyenv/envs/pyenv/version)
rbenv: system (set by /home/mabulog/.anyenv/envs/rbenv/version)

各言語のインストール

Ruby

$ rbenv install -l
....
  1.9.3-p448
....
  2.0.0-p247
....

$ rbenv install 1.9.3-p448
$ rbenv install 2.0.0-p247
$ rbenv rehash
$ rbenv global 2.0.0-p247
$ ruby --version
ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-linux]
$ rbenv versions
  1.9.3-p448
* 2.0.0-p247 (set by /home/mabulog/.anyenv/envs/rbenv/version)

Node.js

$ ndenv install -l
....
  v0.11.5
  v0.11.6

$ ndenv install v0.11.5
$ ndenv install v0.11.6
$ ndenv rehash
$ ndenv global v0.11.6
$ node --version
v0.11.6
$ ndenv versions
  v0.11.5
* v0.11.6 (set by /home/mabulog/.anyenv/envs/ndenv/version)

Perl

$ plenv install -l
....
 5.18.1
....
 5.19.3

$ plenv install 5.18.1
$ plenv install 5.19.3
$ plenv rehash
$ plenv global 5.19.3
$ perl --version
This is perl 5, version 19, subversion 3 (v5.19.3) built for x86_64-linux
....

$ plenv versions
  system
  5.18.1
* 5.19.3 (set by /home/mabulog/.anyenv/envs/plenv/version)

Python

$ pyenv install -l
....
  2.7.5
....
  3.3.2
....

$ pyenv install 2.7.5
$ pyenv install 3.3.2
$ pyenv rehash
$ pyenv global 3.3.2
$ python --version
Python 3.3.2
$ pyenv versions
  system
  2.7.5
* 3.3.2 (set by /home/mabulog/.anyenv/envs/pyenv/version)

D言語

$ denv install -l
....
  2.062
  2.063

$ denv install 2.062
$ denv install 2.063
$ denv rehash
$ denv global 2.063
$ dmd
DMD64 D Compiler v2.063
....

$ denv versions
  2.062
* 2.063 (set by /home/mabulog/.anyenv/envs/denv/version)

PHP

事前確認

apxsの設置場所確認

$ which apxs
/usr/sbin/apxs

memcached.hの設置場所確認

$ sudo find / -name "memcached.h"
/usr/include/libmemcached/memcached.h

前回インストールした参照先から変更されています。
こちらの方が単体で動くため、今後利用者増加が期待されています。

$ phpenv install --releases
....
php-5.5.3
php-5.5.2
....

$ vi .anyenv/envs/phpenv/etc/php-5.5.Linux.source
....
#CONFIGURE_OPTIONS="--with-apxs2=/usr/bin/apxs2
#                   --enable-zend-multibyte
CONFIGURE_OPTIONS="--with-apxs2=/usr/sbin/apxs
....
                   --with-libmemcached-dir=/usr
                   "
....

$ phpenv install php-5.5.3
$ phpenv install php-5.5.2
$ phpenv rehash
$ phpenv global 5.5.3
$ php --version
PHP 5.5.3 (cli) (built with phpenv v0.0.4-dev: Sep  1 2013 20:18:51)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2013 Zend Technologies
$ phpenv versions
phpenv v0.0.4-dev

  system
  5.4.19
  5.5.2
* 5.5.3 (set by /home/mabulog/.anyenv/envs/phpenv/version)

anyenv確認

$ anyenv version
denv: 2.063 (set by /home/mabulog/.anyenv/envs/denv/version)
ndenv: v0.11.6 (set by /home/mabulog/.anyenv/envs/ndenv/version)
phpenv: 5.5.3 (set by /home/mabulog/.anyenv/envs/phpenv/version)
plenv: 5.19.3 (set by /home/mabulog/.anyenv/envs/plenv/version)
pyenv: 3.3.2 (set by /home/mabulog/.anyenv/envs/pyenv/version)
rbenv: 2.0.0-p247 (set by /home/mabulog/.anyenv/envs/rbenv/version)

$ anyenv versions
denv:
  2.062
* 2.063 (set by /home/mabulog/.anyenv/envs/denv/version)
ndenv:
  v0.11.5
* v0.11.6 (set by /home/mabulog/.anyenv/envs/ndenv/version)
phpenv:
phpenv v0.0.4-dev

  system
  5.4.19
  5.5.2
* 5.5.3 (set by /home/mabulog/.anyenv/envs/phpenv/version)
plenv:
  system
  5.18.1
* 5.19.3 (set by /home/mabulog/.anyenv/envs/plenv/version)
pyenv:
  system
  2.7.5
* 3.3.2 (set by /home/mabulog/.anyenv/envs/pyenv/version)
rbenv:
  1.9.3-p448
* 2.0.0-p247 (set by /home/mabulog/.anyenv/envs/rbenv/version)

エラー Error

phpenvを利用したPHPインストール機能がうまく機能しなかったため、
PHPENV_DEBUGをonにして調査開始。

$ phpenv install -l
phpenv v0.0.4-dev

$ export PHPENV_DEBUG=1
$ phpenv install -l
....
+ [phpenv-install:580] init
+ [phpenv-install:136] pushd /home/mabulog/.anyenv/envs/phpenv
+ [phpenv-install:137] [[ ! -d /home/mabulog/.anyenv/envs/phpenv/php-src ]]
+ [phpenv-install:144] /usr/bin/git submodule update --checkout --recursive

$ vi .anyenv/envs/phpenv/libexec/phpenv-install
....
# Utility Functions
# -----------------
# clones the php-src repo if it doesn't exist
function init() {
  pushd "$PHPENV_ROOT" &> /dev/null
  if [[ ! -d "$SRC_DIR" ]]; then
    log "init extensions" "clone source for additional extensions"
    ${GIT} submodule init &> /dev/null
    ${GIT} submodule update &> /dev/null
    log "init" "cloning source from php-src Github repo"
    ${GIT} clone "$SRC_URL" "$SRC_DIR" &> /dev/null
  fi
  ${GIT} submodule update --checkout --recursive &> /dev/null
  popd &> /dev/null
}
....

原因は144行目の"git submodule"コマンドに"--checkout"オプションがないためでした。 yumで入れたgitコマンドのバージョンが古いため、最新のgitコマンドをインストールして対処しました。

今後 To be continue.

サーバ構築時に入ったPerl等を入らなくても問題ない場合には、入らない構築手順を構築したい。
どの段階で入ったかは次のサーバ構築時に確認する。

参考サイト Reference