• 締切済み

mysql/rubyのインストールが出来ません。

OS:MacOSX10.5.1 ruby:1.8.6 rails:2.0.2 macにmysql/rubyをインストールしようとしているのですがmakeすることが出来ず困っています。エラー内容は以下の通りです Macintosh:mysql-ruby-2.7.3 atsuhiroteshima$ make cc -arch ppc -arch i386 -pipe -bundle -o mysql.bundle mysql.o -L"." -L"/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib" -L. -arch ppc -arch i386 -lruby -L/usr/local/mysql/lib/mysql -lmysqlclient -lz -lm -lpthread -ldl -lm ld: warning in /usr/local/mysql/lib/mysql/libmysqlclient.dylib, file is not of required architecture Undefined symbols for architecture ppc: "_mysql_store_result", referenced from: _store_result in mysql.o _query in mysql.o "_mysql_stmt_errno", referenced from: _mysql_stmt_raise in mysql.o _stmt_prepare in mysql.o _stmt_result_metadata in mysql.o "_mysql_stmt_error", referenced from: _mysql_stmt_raise in mysql.o "_mysql_options", referenced from: _options in mysql.o      (中略) "_mysql_fetch_field", referenced from: _fetch_field in mysql.o "_mysql_get_proto_info", referenced from: _proto_info in mysql.o "_mysql_errno", referenced from: _mysql_raise in mysql.o _my_errno in mysql.o "_mysql_error", referenced from: _mysql_raise in mysql.o _my_error in mysql.o "_mysql_escape_string", referenced from: _escape_string in mysql.o ld: symbol(s) not found for architecture ppc collect2: ld returned 1 exit status lipo: can't open input file: /var/folders/+b/+b2BrDwnESy62VzzTJy9k++++TI/-Tmp-//cc8ile28.out (No such file or directory) make: *** [mysql.bundle] Error 1 どなたかこのエラーの解決方法を教えていただけないでしょうか。 お願いします。

みんなの回答

  • babe335
  • ベストアンサー率0% (0/0)
回答No.5

僕はleopard、最初からのrubyでmysql/rubyを入れているので大丈夫だと思ったのですがだめでしたか。 もしかしたら、makeの前でパスの指定が間違ってるのかもしれませんね。(makeの段階まで来てるという事は大丈夫のだと思うのですが

teshi1107
質問者

お礼

返事が遅くなり申し訳ありません。mysql/rubyはleopardには初期状態では入っていないようでした。 結局、osを再インストールし、mysqlのdmgファイルを使ってmysqlをインストールした後、gemを使って、mysql/rubyをインストールしたところなんとかうまくいきました。 どうやら、mysql/rubyのファイルをダウンロードするよりは、gemsを使ってインストールする方がよいようです。 makeに関しては、結局できずに終わりましたがbabe335さんのアドバイス非常に参考になりました。ありがとうございました。

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.4

>となりました。 まだ別のエラーが出てます? 通常は適当なディレクトリに展開して、 ./configure make sudo make install のような手順で進めることが多いです。 > /Library/Ruby/Gems/1.8/gems/mysql-2.7/ > のディレクトリにMakefileがあります。 OS Xのディレクトリ構成はよく知りませんが、これは最終的なインストール先になるべきところではないでしょうか? あーでも gem経由でやったんでしたっけ。

teshi1107
質問者

お礼

sakusakerさん、アドバイスありがとうございます。返事が遅くなりすいません。 osを再インストールして、gemsを使って再度mysql/rubyをインストールしてみたところ、今度はうまくいきました。 よくは分かりませんが、macportsとgemsをどちらも使ってごちゃごちゃいろいろなものをインストールしたのがよくなかったみたいです。(まだunixの操作になれてないので、どうやってgemsやportを結びつけるかわかりませんでした。) 親切に何度もアドバイスをいただきありがとうございました。

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.3

> これはmysql.bundleというファイルに問題があるということでしょうか? mysql.bundleは、これから作ろうとするファイルです。 >ld: can't open output file for writing: mysql.bundle 「書き込みのためにオープンすることができない」ってでてるでしょ? ありがちなのは、書こうとしているディレクトリに対する書き込み権限がないということですけど、 どこのディレクトリに展開して makeをどこで実行していますか? #sudo は make installのときだけでいいはずだよなあ

teshi1107
質問者

お礼

/Library/Ruby/Gems/1.8/gems/mysql-2.7/ のディレクトリにMakefileがあります。 rootで実行したところ cc -arch i386 -pipe -bundle -o mysql.bundle mysql.o -L"." -L"/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib" -L. -arch i386 -lruby -L/opt/local/lib -L/opt/local/lib/mysql5/mysql -lmysqlclient -L/opt/local/lib -lz -lm -L/opt/local/lib -lssl -lcrypto -lpthread -ldl -lm となりました。

  • babe335
  • ベストアンサー率0% (0/0)
回答No.2

Makefileの3カ所から"-arch ppc"というのを削除してmakeは出来ませんか?

参考URL:
http://d.hatena.ne.jp/sugarbabe335/20071212/1197389868
teshi1107
質問者

お礼

babe335さん。回答ありがとうございます。 試してみたところ、やはり次のようなエラーが出ました。 cc -arch i386 -pipe -bundle -o mysql.bundle mysql.o -L"." -L"/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib" -L. -arch i386 -lruby -L/opt/local/lib -L/opt/local/lib/mysql5/mysql -lmysqlclient -L/opt/local/lib -lz -lm -L/opt/local/lib -lssl -lcrypto -lpthread -ldl -lm ld: can't open output file for writing: mysql.bundle collect2: ld returned 1 exit status make: *** [mysql.bundle] Error 1 これはmysql.bundleというファイルに問題があるということでしょうか?

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

Mac OS X は使ってないので解決策じゃなくて申し訳ないんだけど、 >mysql_store_result この辺の未定義シンボルって、MySQL側のライブラリにある関数ですよね。 で、 > -lmysqlclient -lz -lm -lpthread -ldl -lm 名前からしてこの libmysqlclient にある可能性が高いと思うんですが、 > ld: warning in /usr/local/mysql/lib/mysql/libmysqlclient.dylib, file is not of required architecture のように、中身が期待したものじゃないみたいですね。 >cc -arch ppc -arch i386 -pipe -bundle ユニバーサルバイナリを作ろうとしているのに、ライブラリがそれようになってないとか、片方のしかないとか。

teshi1107
質問者

お礼

sakusaker7さん回答ありがとうございます。 mysqlのことは、ほとんど知識がないのですが、それはつまりインストールしたMySQLのライブラリに問題があるということでしょうか? MySQLはmysql-5.0.45-osx10.4-i686.dmgを使ってインストールしたのですが、このファイルにそのライブラリが含まれていなかったという理解が正しいのでしょうか?それとも単にPathが通ってないなどの問題なのでしょうか?

関連するQ&A