スキップしてメイン コンテンツに移動

Fedora 8でRails2.3が入らず途中までの記憶

AmazonのAMIを使いRails 2.3を入れてみようとしていろいろステップが必要だったので共有します。
Railsライブラリは入りますが最後、Railsを起動で成功していません。

今回は、Fedora 8の"Ruby on Rails Web Starter (AMI Id: ami-22b0534b)"を使いました。

パッケージ管理で最新のFedora 8のパッケージに入っているRailsに更新します。

# yum install rubygem-rails

yum listで見てもRailsは2.2のままです。gemでチェックしてみます。

# gem list
actionmailer (2.2.2, 2.1.1)
actionpack (2.2.2, 2.1.1)
activerecord (2.2.2, 2.1.1)
activeresource (2.2.2, 2.1.1)
activesupport (2.2.2, 2.1.1)
cgi_multipart_eof_fix (2.5.0)
daemons (1.0.10)
fastthread (1.0.1)
gem_plugin (0.2.3)
mongrel (1.1.5)
open4 (0.9.6)
rails (2.2.2, 2.1.1)
rake (0.8.3)

まずはgemsを更新してみます。

# gem update
Updating installed gems
Updating actionmailer
ERROR: While executing gem ... (Gem::InstallError)
actionpack requires rack (~> 1.0.0, runtime)

Rack 1.0.0が求められるようなのでバージョンを指定して先にインストールします。

# gem install rack -v 1.0.0
Successfully installed rack-1.0.0
1 gem installed
Installing ri documentation for rack-1.0.0...
Installing RDoc documentation for rack-1.0.0...

再度更新してみます。

# gem upgrade
Updating installed gems
Updating actionmailer
Successfully installed actionpack-2.3.5
Successfully installed actionmailer-2.3.5
Updating activeresource
Successfully installed activeresource-2.3.5
Updating fastthread
Building native extensions. This could take a while...
Successfully installed fastthread-1.0.7
Updating open4
Successfully installed open4-1.0.1
Updating rails
Successfully installed rails-2.3.5
Updating rake
Successfully installed rake-0.8.7
Gems updated: actionpack, actionmailer, activeresource, fastthread, open4, rails, rake

無事Railsの最新状態になりました。Railsアプリケーションを作ります。

# rails app
/usr/lib/ruby/site_ruby/1.8/rubygems.rb:578:in `report_activate_error': Could not find RubyGem test-spec (>= 0) (Gem::LoadError)
from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:134:in `activate'
from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:158:in `activate'
from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:157:in `each'
from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:157:in `activate'
from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:158:in `activate'
from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:157:in `each'
from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:157:in `activate'
from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:158:in `activate'
from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:157:in `each'
from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:157:in `activate'
from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:49:in `gem'

必要だといわれるパッケージtest-specをインストールします。

# gem install test-spec
# rails app

再度エラーが出てしまいます。

# rails app
/usr/lib/ruby/site_ruby/1.8/rubygems.rb:578:in `report_activate_error': Could not find RubyGem camping (>= 0) (Gem::LoadError)

必要なパッケージを入れます。

# gem install camping

# gem install fcgi
Building native extensions. This could take a while...
ERROR: Error installing fcgi:
ERROR: Failed to build gem native extension.

/usr/bin/ruby extconf.rb install fcgi
checking for fcgiapp.h... no
checking for fastcgi/fcgiapp.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=/usr/bin/ruby
--with-fcgi-dir
--without-fcgi-dir
--with-fcgi-include
--without-fcgi-include=${fcgi-dir}/include
--with-fcgi-lib
--without-fcgi-lib=${fcgi-dir}/lib

Gem files will remain installed in /usr/lib/ruby/gems/1.8/gems/fcgi-0.8.8 for inspection.
Results logged to /usr/lib/ruby/gems/1.8/gems/fcgi-0.8.8/ext/fcgi/gem_make.out


fcgiを先にgemsではなくyumでインストールしました。

# yum install fcgi fcgi-devel
# gem install fcgi

fcgiの問題が解決したあとも、色々なパッケージのインストールを求められましたので状況を省略して必要なコマンドを列挙します。

gem install memcache-client ruby-openid
gem install ruby-openid --version='~>2.0.0'
yum install gcc-c++
gem install thin
gem install shotgun
gem rack-test

途中ruby-openidの問題は原因が分からず、以下のサイトが参考になりました。
http://www.v-sands.com/~jgb/tecmemo/?Sinatra+%BD%E0%C8%F7

これでようやくrailsコマンドが動くようになりました。

# rails app
# cd app/

database.ymlをMySQLに修正し、サーバを起動してみます。

# script/server
Rails requires RubyGems >= 1.3.2 (you have 1.2.0). Please `gem update --system` and try again.

なんと起動時にgemsのバージョンが古いことを怒られます。

# gem install rubygems-update
# update_rubygems
# gem install session
# gem install hoe-seattlerb
# gem install rubyforge

# update_rubygems
/usr/lib/ruby/site_ruby/1.8/rubygems.rb:578:in `report_activate_error': Could not find RubyGem gemcutter (>= 0.2.1) (Gem::LoadError)

gemcutterを必要とされますが、

# gem install gemcutter
ERROR: Error installing gemcutter:
gemcutter requires RubyGems version >= 1.3.5

と表示され、gemcutterとrubygemsがお互いに必要とする三すくみ状態で表題の通り詰まってしまいました。

コメント

このブログの人気の投稿

ESP8266で書き込めない時に対処したこと

ESP8266のチップで書き込めなかった問題が起こり、それについての対処を参考になる可方がいるかもということでブログにもメモとして残しておきます。 書き込みで失敗したケースとしては、 スイッチサイエンスさんのESP-WROOM-02ピッチ変換済みモジュール《シンプル版》 へのシリアル通信での書き込みができなかった問題 Over The Air(OTA)の機能を使うコードを、同じくESP-WROOM-02に対して転送するも、更新の途中でクラッシュし、書き込みが失敗するという問題 の二つです。 OTAまで使って書き込もうとしている背景は、ニャンパスとして Robip というプログラミング学習環境を作っていて、そのツールの中でWi-Fi経由での書き込み機能を対応することでスマートフォン、タブレットなどでのビジュアルプログラミングしたものが、OTA経由で電子工作のプログラミングができるようという機能があり、いくつかのESP8266を積んだモジュールへのサポートを増やそうとしたところ(ようはRobipとしての対応デバイスを広げたかった)上記の書き込みできない問題にぶつかりました。 Facebookのこちらに書いたことの詳細版です。 ESP-WROOM-02への書き込み出来ない問題 もともと、HaLake KitというコワーキングスペースHaLakeオリジナル基板は、ESP8266を積んでいますので、この書き込みツールとしてClojureで書いた robip-tool というのを用意していました。 このツールであればHaLake Kitには書き込めていたのですが、ESP-WROOM-02ピッチ変換済みモジュール《シンプル版》ですと最初の書き込みの段階で失敗することが分かりました。 そこで世界中で人気のESP8266ですので、色んなバージョンの書き込みツールがありまして、書き込みに成功するツールを探す旅が始まりました。 その際には、シンプル版だけでなく、HaLake Kit、ESPr Developer(ESP-WROOM-02開発ボード)、ESP-WROOM-02ピッチ変換済みモジュール《フル版》でも試して、全てで動くツールを検証しました。 途中、Go言語で書きなおしてみたりいろいろテストもしたのですが、結果的に全て

ClojureScriptとBLE

2017年Clojure Advent Calendar 15日目の記事として書きました。 今年、ニャンパスとして、またプライベートでいろいろとBLEを扱うコードをClojureScriptで書きましたので、まとめてみます。 使用したデバイスは、micro:bitです。秋葉原や通販等で手に入り、BLE、25個のLED、加速度センサーがついている学習用のボードです。ブラウザ上でビジュアルプログラミングでの開発ができたりと面白いので、年末年始に遊んでみてください。 ClojureScriptでの環境の作り方から始まって、micro:bitとPCとの接続、リモートでのLチカを試すというIoTなClojureScriptの内容となってます。 1. ClojureScriptで、BLEな環境を作る Node.js、npm、Leiningenを入れておいてください。プロジェクトを作ります。   $ lein new figwheel-node ble figwheel-nodeテンプレートを使い、できたファイルはこんな感じです。 ./project.clj ./README.md ./package.json ./.gitignore ./src ./src/ble ./src/ble/core.cljs ./dev ./dev/user.clj 今回、PC側をBLEのセントラルとして振る舞わせ、micro:bitをペリフェラルとして操作しますので、そのためセントラル側のプログラムとしてnobleというライブラリを使います。 OS毎に依存するものが違いますので、サイトで事前に確認しておいたほうが良いです。    https://github.com/sandeepmistry/noble ※nobleはMac、Linux、Windows、FreeBSDをサポートしており、 僕自身今年nobleを使ったコードをClojureScriptを使って、Windos、Mac、Linuxそれぞれで動かしていて動作は安定していました。 では、nobleを以下のコマンドを実行しておきます。   $ npm install noble ※普段はlein-npm等を使

ClojureでCompojureを使わずにサーブレットを書く方法

Clojureでgen-class、proxyを使ってみようと思い、試しにサーブレットを書くとどうなるかを試してみました。 コンパイルにLeiningenを使うためプロジェクトを作ります。 lein new sample-servlet まずはsrc/sample_servlet/servlet.cljを書いてみます。 (ns sample_servlet.servlet (:gen-class :extends javax.servlet.http.HttpServlet)) (defn -servlet [this request response] (.setContentType response "text/html; charset=UTF-8") (let [out (.getWriter response)] (.. out (println "<html><body>hello world</body></html>")))) (defn -doGet [this request response] (-servlet this request response)) 依存関係とクラスファイル生成のオプションを与えたproject.cljファイルを作りました。 (defproject sample-servlet "1.0.0-SNAPSHOT" :description "FIXME: write" :dependencies [[org.clojure/clojure "1.1.0"] [org.clojure/clojure-contrib "1.1.0"] [javax.servlet/servlet-api "2.5"] ] :namespaces [sample_servlet.servlet]) 必要なライブラリを取得しコンパイル。 lein deps lein compile 無事生成されたことが分かります。 % ls -lr