現状最も新しいruby1.8.7+rails2.x.x+sqlite3+emacsの設定メモ

railsの勉強を再度すすめております。

と、いうのもrubyでの開発の会社に入ったからで、

そのへんは面倒くさいのであとでちゃんと説明します。

というわけで、再度rubyのセッティングをしておりますが、

以前セッティングした時とはちょっと事情が違ってきたようです。

大きく変わった点

  1. checkinstallがrpmforgeから消えた。(理由は不明)
  2. gem install railsとやると3系のrailsが入る。
  3. sqlite(開発では使わない)が3.6.12以上じゃないと対応しない。
  4. emacsrails.elの挙動が不振。

と、大きく分けて4つ程アップデートがあり、結構ハマったので、

ちゃんとメモしておきます。

インストールする環境は例によってCentOS5.5で、さくらVPSです。

1.checkinstallがrpmforgeから消えた件

さて、重宝しているcheckinstall。これは、

ソースからコンパイルして入れる時にrpm化して管理できるので、

出したり抜いたり挿したり入れたりするときに便利なツールです。

かつては、これをインスコする為にyumレポジトリをイジって、

yumインスコしてたんですが、yumレポジトリをイジっても、

どういう訳だかはいらなくなったようです。

いくら探しても出てこないので、下記から直接ダウンロードします。

http://packages.sw.be/checkinstall/

というわけで、インスコします。なお、さくらVPSの人は、

checkinstall-1.6.0-3.el4.rf.x86_64.rpmのパッケージで問題なく動いてます。

それ以外の方は、ご自分の環境に合わせて落として来て下さい。

多少古いのでも機能は変わらないので、環境に合わせたパッケージを。

# wget http://packages.sw.be/checkinstall/checkinstall-1.6.0-3.el4.rf.x86_64.rpm# rpm -ivh checkinstall-1.6.0-3.el4.rf.x86_64.rpm

これだけ。過去のやり方より100倍簡単です。

最初からこうすればよかったのに。

2.過去のバージョンのrailsインストール

さて、過去日記を参照頂き、ruby1.8.7とrubygemは入ったとします。

ちなみに、rubyの依存モジュールをおさらいしておきます。

なお、何種類か追加もありますので、入れといて損はないでしょう。

# yum install gcc# yum install zlib-devel# yum install rpm-build# yum install openssl-devel# yum install readline-devel# yum install nkf# yum install ImageMagick ImageMagick-devel# yum install libxml2-devel libxslt-devel

さくらVPSでは結構入ってないパッケージがあるみたいです。

mysqlを使う予定がある方はこちらも入れておきましょう。# yum install httpd mod_ssl mysql mysql-server php-mysql mysql-devel

さて、gemも入り勢い余って、前回のように

# gem install rails

なんてやった日には、

# rails --versionRails 3.0.3

なんて事になります。会社で温めているバージョンは2.3.2だそうで、

ぜひとも2.3.2を入れようと思います。

これはインストールする時に引数を追加してあげるだけで解決するようです。

# gem install rails -v=2.3.2あるいは# gem install rails --version 2.3.2

で過去のバージョンを指定してインストールする事が可能です。

railsの教本でまだ3.0.3で解説している本はなさそうで、

仮に出てきたとしても、初学者向けであるかどうか、

初学者向けであってもわかりすいかどうかわかりません。

ですから、初学者の場合、素直に自分の教本に書いてある

railsのバージョンを入れる事をオススメします。

仮にコマンドを間違えてしまって3.0.3が入ってしまっても、

# gem uninstall rails

とやると、ちゃんと抜けますので大丈夫だ問題ない

3.sqliteアップデート(かなり危険)

僕の教本では、Sqliteで学習をすすめるようです。

もし仮にRDBMSの知識が全くない人は、sql文の学習をすっとばしてしまう事になる為、

あんまりオススメしませんが、railsはご存知の通り、orマッパーが立派なので、

あえてmysqlやpostgreではなく、sqliteで学習を進めるという事は効率的であると思います。*1

でもとりあえず僕としてはなんでもいいので、Sqliteならそれで構いません。

これがとんでもないことになりましたので、詳細にメモっときます。

まずCentOSyumで入る最新版のSqliteは3.3.6です。

gem側でsqliteとのクチを作る為に

# gem install sqlite3-ruby

とやる訳ですが、まずは、

# gem install sqlite3-rubyBuilding native extensions.  This could take a while...ERROR:  Error installing sqlite3-ruby:        ERROR: Failed to build gem native extension./usr/local/bin/ruby extconf.rbchecking for sqlite3.h... nosqlite3.h is missing. Try 'port install sqlite3 +universal' or 'yum install sqlite3-devel'

sqlite3-develをいれろと怒られます。

しょうがないので入れます。

# yum install sqlite3-develLoaded plugins: fastestmirrorLoading mirror speeds from cached hostfile * addons: ftp.iij.ad.jp * base: ftp.iij.ad.jp * extras: ftp.iij.ad.jp * updates: ftp.iij.ad.jpaddons                                                           |  951 B     00:00base                                                             | 2.1 kB     00:00extras                                                           | 2.1 kB     00:00updates                                                          | 1.9 kB     00:00Setting up Install ProcessNo package sqlite3-devel available.Nothing to do

すでに殺気だってます。

# yum install sqlite-develLoaded plugins: fastestmirrorLoading mirror speeds from cached hostfile * addons: www.ftp.ne.jp * base: www.ftp.ne.jp * extras: www.ftp.ne.jp * updates: www.ftp.ne.jpSetting up Install ProcessResolving Dependencies--> Running transaction check---> Package sqlite-devel.i386 0:3.3.6-5 set to be updated---> Package sqlite-devel.x86_64 0:3.3.6-5 set to be updated--> Finished Dependency Resolution

が正解だったようです。で再びgem

# gem install sqlite3-rubyBuilding native extensions.  This could take a while...ERROR:  Error installing sqlite3-ruby:        ERROR: Failed to build gem native extension./usr/local/bin/ruby extconf.rbchecking for sqlite3.h... yeschecking for sqlite3_libversion_number() in -lsqlite3... yeschecking for rb_proc_arity()... nochecking for sqlite3_initialize()... nosqlite3-ruby only supports sqlite3 versions 3.6.16+, please upgrade!

おい!!ここまでやらせといてそんなメッセージかよ!!

というわけで、sqliteのバージョンが3.6.16+

でないといけないようです。

ようするにrubycheckinstallした時と同じように、

素直に、現行のsqliteyumで引っこ抜こうと試みました。

とんでもない事になりました。

良い子は絶対にマネしないで下さい。

# yum remove sqlite
=============================================================================Package Arch Version Repository Size=============================================================================Removing:sqlite i386 3.3.6-2 installed 411 ksqlite x86_64 3.3.6-2 installed 398 kRemoving for dependencies:SSHTerm noarch 0.2.2-fc6.build86080722.00 installed 4.9 Mapr-util i386 1.2.8-1.fc6 installed 160 kapr-util x86_64 1.2.8-1.fc6 installed 163 kapr-util-devel i386 1.2.8-1.fc6 installed 1.9 Mapr-util-devel x86_64 1.2.8-1.fc6 installed 1.9 Matomic-release noarch 1.0-7.fc6.art installed 2.6 kawstats noarch 6.6-1.swsoft installed 3.0 Mhttpd x86_64 2.2.6-1.fc6 installed 2.7 Mhttpd-devel x86_64 2.2.6-1.fc6 installed 514 khttpd-devel i386 2.2.6-1.fc6 installed 514 kmailman x86_64 3:2.1.9-2 installed 34 Mman x86_64 1.6d-2.fc6 installed 354 kmod_dav_svn x86_64 1.4.3-2.fc6 installed 139 kmod_jk-ap20 x86_64 1.2.15-42psa.fc6.build86080722.00 installed 580 kmod_perl x86_64 2.0.2-6.2.fc6 installed 6.6 Mmod_python x86_64 3.2.8-3.1 installed 1.2 Mmod_ssl x86_64 1:2.2.6-1.fc6 installed 175 kmod_suphp x86_64 0.6.2-1.fc6 installed 230 knet-snmp x86_64 1:5.3.1-15.fc6 installed 2.7 Mnet-snmp-devel x86_64 1:5.3.1-15.fc6 installed 6.9 Mnet-snmp-devel i386 1:5.3.1-15.fc6 installed 5.0 Mnet-snmp-utils x86_64 1:5.3.1-15.fc6 installed 379 kperl-Apache-ASP x86_64 2.59-0.93298 installed 543 kphp x86_64 5.1.6-3.7.fc6 installed 3.3 Mphp-devel i386 5.1.6-3.7.fc6 installed 2.5 Mphp-devel x86_64 5.1.6-3.7.fc6 installed 2.5 Mphp-mysql x86_64 5.1.6-3.7.fc6 installed 196 kphp-odbc x86_64 5.1.6-3.7.fc6 installed 88 kphp-pdo x86_64 5.1.6-3.7.fc6 installed 114 kphp-pear noarch 1:1.4.9-4 installed 1.8 Mphp-pgsql x86_64 5.1.6-3.7.fc6 installed 128 kphp-snmp x86_64 5.1.6-3.7.fc6 installed 28 kphp-sqlite x86_64 5.1.6-1.1 installed 1.2 Mphp5-ioncube-loader x86_64 3.1-07060111 installed 1.9 Mpolicycoreutils x86_64 1.34.1-9.fc6 installed 2.1 Mpsa x86_64 8.6.0-fc6.build86080722.00 installed 60 Mpsa-api noarch 8.6.0-fc6.build86080822.20 installed 4.3 Mpsa-api-rpc noarch 8.6.0-fc6.build86080822.20 installed 1.2 Mpsa-autoinstaller x86_64 3.3.2-080710.09 installed 6.4 Mpsa-awstats-configurator noarch 1.0.0-fc6.build86080722.00 installed 0.0psa-backup-manager x86_64 8.6.0-fc6.build86080822.20 installed 691 kpsa-backup-manager-vz x86_64 8.6.0-fc6.build86080722.00 installed 3.7 kpsa-fileserver x86_64 1.0.0-fc6.build86080722.00 installed 602 kpsa-firewall x86_64 1.0.1-fc6.build86080722.00 installed 498 kpsa-horde noarch 3.1.7-fc6.build86080722.00 installed 14 Mpsa-hotfix3 x86_64 8.6.0-fc6.build86080822.20 installed 242 kpsa-hotfix4-8.6.0 x86_64 8.6.0-fc6.build86080910.19 installed 389 kpsa-imp noarch 4.1.6-fc6.build86080722.00 installed 8.4 Mpsa-ingo noarch 1.1.5-fc6.build86080722.00 installed 3.5 Mpsa-kronolith noarch 2.1.8-fc6.build86080722.00 installed 4.1 Mpsa-libpam-plesk x86_64 8.6.0-fc6.build86080722.00 installed 152 kpsa-mailman-configurator x86_64 8.6.0-fc6.build86080722.00 installed 3.5 kpsa-migration-manager x86_64 8.6.0-fc6.build86080822.20 installed 7.3 Mpsa-mimp noarch 1.0.2-fc6.build86080722.00 installed 1.8 Mpsa-mnemo noarch 2.1.2-fc6.build86080722.00 installed 2.9 Mpsa-mod-fcgid-configurator x86_64 1.0-13 installed 50psa-mod_fcgid x86_64 1.10-3 installed 119 kpsa-passwd noarch 3.0.1-fc6.build86080722.00 installed 3.0 Mpsa-php5-configurator noarch 1.4.0-fc6.build86080722.00 installed 0.0psa-qmail-rblsmtpd x86_64 0.70-fc6.build86080722.00 installed 38 kpsa-sbm3 noarch 5.0-14 installed 176 kpsa-spamassassin x86_64 8.6.0-fc6.build86080722.00 installed 52 kpsa-tomcat-configurator noarch 8.6.0-fc6.build86080722.00 installed 0.0psa-turba noarch 2.1.7-fc6.build86080722.00 installed 4.1 Mpsa-updates noarch 8.6.0-fc6.build86080910.19 installed 0.0psa-vpn x86_64 2.0.1-fc6.build86080722.00 installed 2.1 Mpsa-watchdog x86_64 2.0.3-fc6.build86080912.20 installed 2.6 Mpython-sqlite x86_64 1.1.7-1.2.1 installed 118 krpm x86_64 4.4.2.1-2.fc6 installed 4.0 Mrpm-build x86_64 4.4.2.1-2.fc6 installed 2.2 Mrpm-devel x86_64 4.4.2.1-2.fc6 installed 32 Mrpm-devel i386 4.4.2.1-2.fc6 installed 32 Mrpm-libs x86_64 4.4.2.1-2.fc6 installed 2.0 Mrpm-libs i386 4.4.2.1-2.fc6 installed 2.0 Mrpm-python x86_64 4.4.2.1-2.fc6 installed 129 ksitebuilder noarch 4.0.0-all.build07062700 installed 44 Msitebuilder-core x86_64 4.0-fc6x86_64.build07062700 installed 1.6 Msitebuilder_module-areamap noarch 4.0.0-all.build07062700 installed 199 ksitebuilder_module-eshop noarch 4.0.0-all.build07062700 installed 715 ksitebuilder_module-feedback noarch 4.0.0-all.build07062700 installed 138 ksitebuilder_module-flashintro noarch 4.0.0-all.build07062700 installed 865 ksitebuilder_module-forum noarch 4.0.0-all.build07062700 installed 365 ksitebuilder_module-guestbook noarch 4.0.0-all.build07062700 installed 127 ksitebuilder_module-login noarch 4.0.0-all.build07062700 installed 196 ksitebuilder_module-rssreader noarch 4.0.0-all.build07062700 installed 84 ksitebuilder_module-script noarch 4.0.0-all.build07062700 installed 27 ksitebuilder_module-statistics noarch 4.0.0-all.build07062700 installed 155 ksitebuilder_module-voting noarch 4.0.0-all.build07062700 installed 110 ksqlite-devel x86_64 3.3.6-2 installed 1.0 Msubversion x86_64 1.4.3-2.fc6 installed 8.0 Mvzdummy-glibc noarch 1.0-1.swsoft installed 0.0webalizer x86_64 2.01_10-30.1 installed 259 kyum noarch 3.0.6-1.fc6 installed 1.8 Myum-metadata-parser x86_64 1.0.3-2.fc6 installed 52 kTransaction Summary=============================================================================Install 0 Package(s)Update 0 Package(s)Remove 96 Package(s)Is this ok [y/N]: y

あれ?ちょっと待って、コレって…

# yum install sqlite-bash: yum: command not found

( ゚д゚)

# rpm -qa|grep yum-bash: rpm: command not found

( д)゚ ゚

VPS上で本当に良かった。

OSを再インストールぼたんをポチりました。

おそるべしsqlite

インストール中に考えましたが、

予想するに、rpmsqliteでパッケージ管理

をしているのではないかという仮説に辿り着きましたが、

あくまで予想でしかありません。教えてエロい人

sqliteを引っこ抜くのは大変危険な行為です。

インストール後、再度チャレンジしました。

素直に、既に入ってる3.3.6の上に被せるように

最新のバージョンをのっけちゃう事にしてみます。

最新のバージョンはこっからダウンロード

http://www.sqlite.org/download.html

# wget http://www.sqlite.org/sqlite-autoconf-3070400.tar.gz# tar zxvf sqlite-autoconf-3070400.tar.gz# cd sqlite-autoconf-3070400# ./configure --enable-utf8          多分utf8はわざわざ書かなくても大丈夫だと思う。# make# checkinstall --fstrans=no# rpm -ivh /usr/src/redhat/RPMS/x86_64/sqlite-3070400-1.x86_64.rpm

これで再度gem

# gem install sqlite3-rubyBuilding native extensions.  This could take a while...Successfully installed sqlite3-ruby-1.3.21 gem installed

ああ、死ぬかと思った。というより一回死んだ。

ついでにgem関連のインストールも書いておきます。*2

# gem install mongrel mongrel_cluster tlsmail mysql# gem install mechanize jpmobile locale locale_rails gettext gettext_activerecord gettext_rails# gem install gruff# gem install rmagick -v 1.15.17 --no-rdoc --no-ri -- --disable-htmldoc# gem install httpclient# gem install oauth rubytter

4.emacsの設定(rails.el)

まずはココを参考にやって下さい。

http://d.hatena.ne.jp/yuko1658/20071213/1197517201

僕はECBがなんだかわからなかったので、インスコしてません。

上記URLLinuxじゃなくて、どうやらMeadowでやってるっぽいし。

~.emacs.dは作っといたほうがいいのでつくって下さい。

.emacs.dへのロードパスの通し方は、.emacsに、

(add-to-list 'load-path (expand-file-name "~/.emacs.d/"))(add-to-list 'load-path (expand-file-name "~/.emacs.d/ruby"))(add-to-list 'load-path (expand-file-name "~/.emacs.d/rails"))

とかなんとか書いておけばOKでしょう。

別にいちいちrubyとかrailsとか作らずに、

.emacs.d一つにまとめちゃってもOKです。*3

コマンドを書いておきますので、この通りやればOKでしょう。

$ mkdir ~/.emacs.d$ wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p302.tar.gz$ tar zxvf ruby-1.8.7-p302.tar.gz$ cd ruby-1.8.7-p302$ ./configure --prefix=/usr$ make$ mv misc/ ~.emacs/ruby$ cd$ rm -rf ruby-1.8.7-p302$ rm -f ruby-1.8.7-p302.tar.gz$ wget http://rubyforge.org/frs/download.php/20976/emacs-rails-0.5.99.5.tar.gz$ tar zxvf emacs-rails-0.5.99.5.tar.gz$ mv emacs-rails-0.5.99.5 ~/.emacs.d/rails$ rm -f emacs-rails-0.5.99.5.tar.gz$ cd ~/.emacs.d/ruby/$ wget http://www.emacswiki.org/cgi-bin/wiki/download/ruby-block.elこっから先は上の参考URLには書いてありませんが、必要です。$ cd ../rails$ wget http://www.webweavertech.com/ovidiu/emacs/find-recursive.txt$ mv find-recursive.txt find-recursive.el$ wget http://www.kazmier.com/computer/snippet.el

そんでもって.emacsに追記します。これは参考URLの通りです。

vi ~/.emacs

;; rubyモード(autoload 'ruby-mode "ruby-mode"  "Mode for editing ruby source files" t)(setq auto-mode-alist      (append '(("\.rb$" . ruby-mode)) auto-mode-alist))(setq interpreter-mode-alist (append '(("ruby" . ruby-mode))                                     interpreter-mode-alist))(autoload 'run-ruby "inf-ruby"  "Run an inferior Ruby process")(autoload 'inf-ruby-keys "inf-ruby"  "Set local key defs for inf-ruby in ruby-mode")(add-hook 'ruby-mode-hook          '(lambda () (inf-ruby-keys)));; ruby-electric(require 'ruby-electric)(add-hook 'ruby-mode-hook '(lambda () (ruby-electric-mode t)));; rubydb(autoload 'rubydb "rubydb3x"  "run rubydb on program file in buffer *gud-file*.the directory containing file becomes the initial working directoryand source-file directory for your debugger." t);; railsモード(defun try-complete-abbrev (old)  (if (expand-abbrev) t nil))(setq hippie-expand-try-functions-list      '(try-complete-abbrev        try-complete-file-name        try-expand-dabbrev))(setq rails-use-mongrel t)(require 'cl)(require 'rails);; ruby-block(require 'ruby-block)(ruby-block-mode t);; ミニバッファに表示し, かつ, オーバレイする.(setq ruby-block-highlight-toggle t);; inf-ruby.el(autoload 'run-ruby "inf-ruby"  "Run an inferior Ruby process")(autoload 'inf-ruby-keys "inf-ruby"  "Set local key defs for inf-ruby in ruby-mode")(add-hook 'ruby-mode-hook          '(lambda ()             (inf-ruby-keys)))

こんなカンジでしょうか。というわけで、またしても設定メモでした。

このさい設定メモっていう名前にブログのタイトルを変えてしまおうか。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中