ねもぷらす

ふぁいんでぃんぐねもの日記。プログラミングとか育児とか

Capistrano で遊ぶ

RedHat Linuxruby から入れようとしたら、gem の実行でつまずいてしまう。

$ cd /usr/local/src
$ wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p111.tar.bz2
$ tar xzvf ruby-1.8.6-p111.tar.bz2
$ cd ruby-1.8.6-p111
$ ./configure
$ make
$ su
# make install
# exit
$ make clean
$ cd ../
$ wget http://rubyforge.org/frs/download.php/28174/rubygems-0.9.5.tgz
$ tar xzvf rubygems-0.9.5.tgz
$ cd rubygems-0.9.5
$ su
# ruby setup.rb
# gem install capistrano
...
ERROR:  While executing gem ... (Gem::Exception) 
    SSL is not installed on this system  


ちょっと調べたら、「libopenssl-ruby」を入れないといけないらしく。
http://groups.google.com/group/rubyonrails-talk/browse_thread/thread/a420e3eced6675f2/1c55a165a9319778


google groups もすげー見やすいスレッドだなぁなどと脱線しそうになりつつ、
libopenssl-ruby を入れる方法を調査するも、 apt-get する方法しか見当たらず…

えー、パッケージ管理ソフト使ってないんですがorz

ソースからビルドしようかなーと思ったけど、openssl のバージョンとかどう気にすれば良いのかわからず。
http://ftp.yz.yamagata-u.ac.jp/debian/pool/main/libo/libopenssl-ruby/


ubuntuDebian の構築方法が上位にかかってくるから、この際Mac に入れてみようかなと。
とりあえず動くところを見たいだけなので^^;;


で、MacBook で構築してみるテスツ。
http://www.onflow.jp/blog/archives/2007/06/mac_os_xcapistrano.html

MacPort は Rails 入れるときに使ったらしく最初から入ってたけど、管理ソース群が古くなってるポイのでこのさい upgrade。

$ sudo port sync
$ sudo port selfupdate
$ sudo port -v upgrade installed
$ sudo port -v install ruby
$ sudo port -v install rb-rubygems
$ sudo gem -v install capistrano --include-dependencies
$ sudo gem -v install termios
$ sudo gem -v install net-ssh --version="1.0.10"
$ sudo gem uninstall net-ssh --version="1.1.2"
$ sudo gem install capistrano
$ cap -h


あっさり終了、さすが Debian


動作確認は以下を参考に。
http://tech.feedforce.jp/capistrano.html


うーん、デフォルトだとローカルの 23 Port に繋げないらしい…
設定変えるのめんどいので自サバへ ssh 接続できるようにしちゃう。
もう今日は動けば良いや…

  • テストスクリプト
set :user, "username"
set :password, "password"
set :command, "echo Hello, $HOSTNAME >> ~/capistrano_test.log"

role :local, "192.168.xxx.xxx"

desc "say hello to all hosts"
task :hellowello do
  run hellocommand
end

で、実行結果。

$ cap -f sample.rb hellowello
  * executing `hellowello'
  * executing "echo Hello, $HOSTNAME >> ~/capistrano_test.log"
    servers: ["192.168.xxx.xxx"]
    [192.168.xxx.xxx] executing command
    command finished
$ ssh 192.168.xxx.xxx
$ cat ./capistrano_test.log
Hello, hostname

うん、とりあえず動いたw
ホストで設定したコマンドがクライアントマシン側で実行されると。


あとはメンテ手順とかより簡素化すれば適用可能かなー
あとは明日で!