Browse Month: May 2012

Rails + MySQL Sandbox

Rails と MySQL Sandbox 5.5.24 の環境で、次のようなエラーが表示されてしまった。


dlopen($HOME/.rvm/gems/ree-1.8.7-2012.02/gems/mysql-2.8.2/lib/mysql.bundle, 9): Library not loaded: libmysqlclient.18.dylib Referenced from: $HOME/.rvm/gems/ree-1.8.7-2012.02/gems/mysql-2.8.2/lib/mysql.bundle Reason: image not found - $HOME/.rvm/gems/ree-1.8.7-2012.02/gems/mysql-2.8.2/lib/mysql.bundle

libmysqlclient.18.dylib が別の場所にあって見つけられないエラーだということだと思います。
次のコマンドを実行したところ治すことができました。

$ install_name_tool -change libmysqlclient.18.dylib $MYSQL_SANDBOX_HOME/5.5.24/lib/libmysqlclient.18.dylib $HOME/.rvm/gems/ree-1.8.7-2012.02/gems/mysql-2.8.2/lib/mysql.bundle

mysql – Library not loaded: libmysqlclient.16.dylib error when trying to run ‘rails server’ on OS X 10.6 with mysql2 gem – Stack Overflow を参考にしました。

[CentOS] SRPM をダウンロードする方法

CentOS 5.8 系でたまに SRPM をダウンロードし直して、パッケージをリビルドすることがあるんですが、いつも検索して個別に SRPM をダウンロードするのは手間なので yumdownaloder 経由でさくっと入手できるようにしました。

方法は、まず、 /etc/yum.repos.d/CentOS-SRPM.repo 設定ファイルを次のようにします。

[base-SRPM]
name=CentOS-5.8 - Base SRPM
baseurl=http://vault.centos.org/5.8/os/SRPMS/
gpgcheck=0

[updates-SRPM]
name=CentOS-5.8 - Updates SRPM
baseurl=http://vault.centos.org/5.8/updates/SRPMS/
gpgcheck=0

[extras-SRPM]
name=CentOS-5.8 - Extras SRPM
baseurl=http://vault.centos.org/5.8/extras/SRPMS/
gpgcheck=0
enabled=0

上の例では extras は無効になっているので、使う場合は有効にして下さい。

baseurl 部分は通常 $releasever を設定した方がいいんですが、$releasever = 5 のため、マイナーバージョンを含めて個別に設定しています。お使いの CentOS のバージョンにあわせてもらえばいいかと思います。
この他にも、centosplus, fasttrack の SRPM が vault.centos.org に置いてあります。

あとは、yum-utils パッケージをインストールして、例えば zsh なら次のようにコマンドを実行するだけです。

$ yumdownloader --source zsh
Loaded plugins: fastestmirror
Excluding Packages in global exclude list
Finished
Enabling epel-source repository
Excluding Packages in global exclude list
Finished
zsh-4.2.6-6.el5.src.rpm | 2.0 MB 00:04

CentOS 6 系でも同じように設定できるはずです。

[CentOS/SL] セキュリティ・バグフィックスアップデートの追従速度の比較

CentOS 5 / Scientific Linux 5 のセキュリティ・バグフィックスアップデートの早さを比較してみました | Carpe Diem を前に書きましたが、6 系も調べてみました。

まず、RHEL 6 のセキュリテ・バグフィックスィアップデート情報はこちら

2012/05/21 執筆時現在で、最新 3 件のセキュリティ・バグフィックスアップデートは、次のとおりです。

上記のアップデートが、どの程度の速度で CentOS / SL 6 系で追従されているか確認しました。
結果は、次のとおりでした。

  • 2012-05-15 RHSA-2012:0571-1: CentOS: 2012-05-16, SL: 2012-05-18
  • 2012-05-14 RHBA-2012:0572-1: CentOS: 2012-05-14, SL: 該当なし(※)
  • 2012-05-10 RHBA-2012:0552-1: CentOS: 2012-05-10, SL: 該当なし(※)

※該当なしとなっているのは、SL のメールリングリストで確認できなかったもので、実際に SL 6.2 のアップデートパッケージでも確認できませんでした。

SL は、追従やアップデートの早さで最近使われることになったと思っていたのですが、今回の調査では CentOS の方はアップデートが早いということになりました。

ということで、個人的には CentOS 5 系なサーバを 6.3 をターゲットにしてアップグレードしようかなと検討中です。

[ruby/rails] オフラインドキュメントを生成する

ruby や rails を使ってウェブアプリケーションなどを開発するとき、必須なものにオフラインドキュメントがあります。その都度、インターネット検索したりするのはインターネット接続がある前提になったり、時間の浪費につながるため、できる限り必要な情報は手元に置いておくのが重要だと思います。

ruby や rails のオフラインドキュメントを生成するには、sdoc を使うと便利です。
sdoc は、gem 経由で簡単にインストールすることができます。


$ rvm 1.9.3
$ gem install sdoc

sdoc 3.0.16 だと、github を使っているときエラーが発生しているため、パッチをあてる必要があります。


$ diff $HOME/.rvm/gems/ruby-1.9.3-p194/gems/sdoc-0.3.16/lib/sdoc/github.rb
30c30
< s = Dir.chdir(File.join(basedir, File.dirname(path))) do --- > s = Dir.chdir(File.join(base_dir, File.dirname(path))) do
39c39
< s = Dir.chdir(File.join(basedir, File.dirname(path))) do --- > s = Dir.chdir(File.join(base_dir, File.dirname(path))) do
47c47
< absolute_path = File.join(basedir, path) --- > absolute_path = File.join(base_dir, path)

まずは、rails 3.2.3 のオフラインドキュメントを生成してみます。

$ git clone https://github.com/rails/rails.git
$ cd rails
$ git checkout v3.2.3
$ sdoc --format=sdoc --github --output rails-3.2.3 --hyperlink-all rails

かなり警告がでますが、しばらくすると rails-3.2.3 ディレクトリの中に html なドキュメントが生成されています。僕の手元の Macbook Air だと 15 分くらいかかりました。

次に ruby-1.9.3 のオフラインドキュメントを生成してみます。

$ git clone https://github.com/ruby/ruby.git
$ cd ruby
$ git checkout v1_9_3_194
$ sdoc --format=sdoc --output ruby-1.9.3p194

ruby-1.9.3p194 ディレクトリの中に約 5 分くらいでオフラインドキュメントを生成することができました。

あとは、これからのドキュメントを sdoc-merge を使うとまとめることができます。たしめにまとめてみたのですが、僕は個別で参照することが多いので、使っていません。

$ sdoc-merge --title "Ruby 1.9.3-p194 and Rails 3.2.3" --op merged --names "Ruby,Rails" ruby-1.9.3p194 rails-3.2.3

sdoc かなり便利ですね。

参照
Create local Ruby on Rails documentation for offline use | Shynnergy

mosh バージョン 1.2

mosh バージョン 1.2 がリリースされていました。ChangeLog に boost 依存性の削除や CentOS 5 サポートという項目があったので、バージョン 1.1.3 ではビルドが大変だったので、バージョン 1.2 の RPM を作成してみることにしました。

まず、Fedora 用の mosh.spec をダウンロードします。

$ wget https://raw.github.com/achernya/mosh/0df58a90da7d57ea1cda0a0b24fddfda97186a20/fedora/mosh.spec

このままだと CentOS 5 で RPM ビルドに失敗するので、mosh.spec を次のように編集します。

$ vi ~/rpmbuild/SPECS/mosh.spec
18a19,20
> BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
>
37a40
> rm -rf $RPM_BUILD_ROOT
42d44
< %doc README.md COPYING ChangeLog

これで mosh バージョン 1.2 RPM を作成することができました。CentOS 5.8 x86_64 の mosh バージョン 1.2 RPM をこちらにおいておくので、必要な方は使ってみて下さい。

Pow on Lion

pow を Lion 上で使うための設定方法です。pow は、Node アプリケーションなのですが、Node バージョン 0.4 系で動作するめインストールが少々めんどくさいです。

まずは、Homebrew 経由で pow をインストールします。このとき依存関係の設定により Node バージョン 6 系がインストールされます。

$ brew install pow

次に NVM をインストールして、Node バージョン 4 系をインストールします。

$ nvm install 0.4.12

次に pow の起動コマンドを変更して Node 0.4 系を使いように変更します。環境変数は、お使いの環境にあわせて展開して下さい。

$ vi $HOMEBREW_HOME/bin/pow
...
exec "$HOME/.nvm/v0.4.12/bin/node" "$HOMEBREW_HOME/Cellar/pow/0.3.2/pow/lib/command.js" "$@"

最後に pow エージェントを動作させます。80 ポートで直接動かしたい人は、ファイアウォールの設定も変更します。

$ sudo pow --install-system
$ pow --install-local

これで pow を使うことができるはずです。

僕は、大人の事情で Apache 経由で使いかっため、Running Pow With Apache を参考にしながら、次の設定をしました。

$ vi $HOME/.powconfig
export POW_DST_PORT=8080
$ wget https://raw.github.com/gist/1058580/zzz_pow.conf
$ sudo vi /etc/hosts
127.0.0.1 pow .dev

これでさくさくと開発を進めることができる環境になりましたが、RVM + Ruby 1.9.3 で Sinatra を使いたいとき、アプリケーション側の config.rb に GEM_HOME 環境変数を設定するのはやめたかったので、次の設定を追加しました。

$ vi $HOME/.powconfig
export POW_RVM_PATH="$HOME/.rvm/scripts"
$ cd $SINATRA_APP1
$ vi .rvmrc
rvm 1.9.3
export GEM_HOME="$HOME/.rvm/gems/ruby-1.9.3-p194"

こんな感じで設定しておくと、pow を RVM に対応させることができます!

さらに powder や powify を使うと便利だと思います。僕は今のところ powder を使っています。

これで、さくさくとウェブアプリケーションの開発が進められそうです!

PHP 5.4 on Lion

OSX Lion 上で PHP 5.4 をインストールしてみました。システム /usr/bin/php は PHP 5.3.8 with Suhosin-Patch (cli) (built: Nov 15 2011 15:33:15) です。

Hoembrew を基本的に使っているので、Homebrew 経由でインストールするのが一番簡単です。なお、公式の Formula ないので注意して下さい。


$ brew install https://github.com/josegonzalez/homebrew-php/raw/master/Formula/php.rb --devel --with-mysql

–devel を書略すると 5.3.10 がインストールされます。

あとは、$HOMEBREW_HOME/Cellar/php/5.4.0/libexec/apache2/libphp5.so がインストールされるので、既存の libphp5.so の設定はコメントにして組み込んであげるだけで使うことができます。

次のような Apache の設定にしてあげると、5.3 系と切り替えることができるので便利ですね。

#
# PHP 5.3.8
#
#LoadModule php5_module libexec/apache2/libphp5.so

#
# PHP 5.4.0
#
LoadModule php5_module $HOMEBREW_PATH/Cellar/php/5.4.0/libexec/apache2/libphp5.so

#
# PHP5 handler
#
Include /private/etc/apache2/other/php5.conf

ちなみに –with-fpm をつけると PHP-FPM をビルドすることができますが、そのかわりに Apache モジュールはビルドされないので注意して下さい。