Browse Month: August 2013

イマドキの Vagrant + Veewee の始め方

Vagrant が 1.2 系になっており、ますます進化していますが、インストール方式から gem から Ruby を組み込んだパッケージ形式に変化しましたね。

そうすると、同時に Veewee のインストール方法も変わってきます。

そこで、今回は Vagrant バージョン 1.2.7、と Veewee のインストール方法を紹介します。

まず、rbenv ベースで ruby 2.0.0 p247 をインストールします。

僕の場合は、OSX なので、homebrew 経由でさくっとインストールします。


$ brew install readline openssl rbenv
$ RUBY_CONFIGURE_OPTS="--with-readline-dir=`brew --prefix readline` --with-openssl-dir=`brew --prefix openssl`" rbenv install 2.0.0-p247

そして、.zshrc に次の内容を追加して、source .zshrc します。
※当然 rbenv にはパスが通っている必要があります。

[ -x "`which rbenv 2> /dev/null`" ] && eval "$(rbenv init -)"

ruby をインストールするときには、ちゃんと readline / openssl 対応にしてインストールした方が便利でしょう。
そして、bundler をインストールします。

$ gem install --no-rdoc --no-ri bundler

そして、次のような Gemfile を作成します。

source 'https://rubygems.org'

gem('vagrant',
git: 'https://github.com/mitchellh/vagrant.git',
tag: 'v1.2.7')

gem('veewee',
git: 'https://github.com/jedi4ever/veewee.git')

そして、システムディレクトリにインストールします。

$ bundle install --system

更新するときは、次のような感じになりますね。

$ bundle update --system

この方法だと手動でいちいち git clone しなくて済みますね!

インストールが終わったら、veewee は次のようにして使います。

$ bundle exec veewee
Commands:
veewee fusion # Subcommand for Vmware fusion
veewee help [COMMAND] # Describe available commands or one specific command
veewee kvm # Subcommand for KVM
veewee parallels # Subcommand for Parallels
veewee vbox # Subcommand for VirtualBox
veewee version # Prints the Veewee version information

これで自由自在に vagrant 用のイメージを作成しますね。
僕は、業務で使用している OS で、今のところ CentOS 5/6, Ubuntu 12.04 LTS, 13.04 を vagrant 用のイメージにしているので、その設定は後日紹介したいと思います!

なお、vagrant は bundle 環境下で実行すると、次のようなメッセージが表示されますので、vagrant を普通に使うときには公式サイトからパッケージをダウンロードして使いましょう。

You appear to be running Vagrant in a Bundler environment. Because
Vagrant should be run within installers (outside of Bundler), Vagrant
will assume that you're developing plugins and will change its behavior
in certain ways to better assist plugin development.

OSX で mysql5.6 環境下で mysql/mysql2 gem のインストールエラーがでた

OSX で mysql5.6 環境下で mysql/mysql2 gem のインストールエラーがでた。


Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

/Users/.../bin/ruby extconf.rb --with-mysql-config=/usr/lo
cal/mysql/bin/mysql_config
checking for mysql_ssl_set()... no
checking for rb_str_set_len()... no
checking for rb_thread_start_timer()... no
checking for mysql.h... no
checking for mysql/mysql.h... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.

Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/Users/.../bin/ruby
--with-mysql-config

Gem files will remain installed in /Users/.../gems/mysql-2.9.1 for i
nspection.
Results logged to /Users/.../gems/mysql-2.9.1/ext/mysql_api/gem_make
.out

もちろん、事前に mysql_config はちゃんと設定している。

$ bundle config build.mysql --with-mysql-config=/usr/local/mysql/bin/mysql_config
$ bundle config build.mysql2 --with-mysql-config=/usr/local/mysql/bin/mysql_config

結論とすると、/usr/local/mysql/bin/mysql_config を次のように直せば良い。

--- /usr/local/mysql/bin/mysql_config-org 2013-08-13 11:52:25.000000000 +0900
+++ /usr/local/mysql/bin/mysql_config 2013-08-13 11:52:57.000000000 +0900
@@ -116,8 +116,8 @@
embedded_libs=" $ldflags -L$pkglibdir -lmysqld "
embedded_libs="$embedded_libs "

-cflags="-I$pkgincludedir -Wall -Wno-null-conversion -Wno-unused-private-field -Os -g -fno-strict-aliasing -DDBUG_OFF -arch x86_64 " #note: end space!
-cxxflags="-I$pkgincludedir -Wall -Wno-null-conversion -Wno-unused-private-field -Os -g -fno-strict-aliasing -DDBUG_OFF -arch x86_64 " #note: end space!
+cflags="-I$pkgincludedir -Wall -Os -g -fno-strict-aliasing -DDBUG_OFF -arch x86_64 " #note: end space!
+cxxflags="-I$pkgincludedir -Wall -Os -g -fno-strict-aliasing -DDBUG_OFF -arch x86_64 " #note: end space!
include="-I$pkgincludedir"

-Wno-null-conversion -Wno-unused-private-field というフラグを削除する必要があるみたい。

これは、mysql をアップデートしたときには、しばらく忘れずにやらにといけない。

これで mysql/mysql2 gem は無事インストールすることができるが、実際にアプリを実行してみると次のようエラーが出る。。。

dlopen(/Users/.../gems/mysql2-0.3.11/lib/mysql2/mysql2.bundle, 9): Library not loaded: /usr/local/mysql-5.5.28-osx10.6-x86_64/lib/libmysqlclient.18.dylib Referenced from: /Users/.../gems/mysql2-0.3.11/lib/mysql2/mysql2.bundle Reason: image not found - /Users/.../gems/mysql2-0.3.11/lib/mysql2/mysql2.bundle

備忘録としてのメモ。

libmysqlclient.18.dylib が見つからないらしい。

解決方法は、環境変数 DYLD_LIBRARY_PATH を定義するといいみたいだが、定義すると次のようなの警告が表示されてしまった。

dyld: DYLD_ environment variables being ignored because main executable (/usr/bin/sudo) is setuid or setgid

ということで、次を実行して、アプリケーションサーバを再起動したら無事解決した。

$ sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

ルータ&スイッチ超入門

久しぶりに本屋さんで衝動買いしてしまった本「ルータ&スイッチ超入門」。
この本は、タイトルのとおりルータとスイッチに関する入門本で、現在のルータ概要や STP の問題点、各社のスイッチ&ルータを分解した記事など、昔の常識から現在の常識の比較など、個人的にはかなりタイムリーでとても参考になった書籍です。特に Part 4 の「モバイル・クラウド時代のスイッチネットワーク設計術」の章がとても参考になりました。

ルータ&スイッチについて、一度基礎から入門してみようと思っている方にはおすすめの本です。
表紙の 2 次元の女性は、いったいどんなイメージなのかが、よく分かりませんが・・・。

絶対わかる! ルーター&スイッチ超入門 改訂版 (日経BPムック)
日経BP社 (2013-03-13)
売り上げランキング: 111,504