0

タイム マシンのバックアップを使用して、Leopard を実行している MacBook から Lion を実行している MacBook Pro にファイルを同期しました。sqlite3 を実行していたために heroku へのプッシュに問題が発生した後、pg gem をインストールしようとしてうさぎの穴に落ちました。

gem install pg

収量:

        /Users/taylorjackson/.rvm/rubies/ruby-1.9.2-p136/bin/ruby extconf.rb 
checking for pg_config... yes
Using config values from /usr/local/bin/pg_config
checking for libpq-fe.h... *** 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.

私は Unix の初心者であり、32 ビットのヒョウと 64 ビットのライオンをマッシュアップする際にタイム マシンによって作成されたファイル構造に深刻な問題があるのではないかと心配しています。これまでに行った手順。

XCodeを再インストールしました

Xcode 4.3.3
Build version 4E3002

環境設定から XCode にコマンド ライン ツールをインストールしました。

rvm 1.14.6 (マスター) に更新

rvm get head

macports を使用して postgre をローカルにインストールしようとして、頭を壁にぶつけました。macports をアンインストールし、homebrew をインストールしました

からのrecをフォローしました

brew doctor

それから

brew install postgresql

Pythonの問題に遭遇し、アドバイスに従ってPythonなしでインストールする

brew install --no-python postgresql

postgresqlのクリーンインストールを取得したように見えましたが、からの私の出力

gem install pg 

まだです:

        /Users/taylorjackson/.rvm/rubies/ruby-1.9.2-p136/bin/ruby extconf.rb 
checking for pg_config... yes
Using config values from /usr/local/bin/pg_config
checking for libpq-fe.h... *** 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.

また試した

bundle install

bundle config build.pg --with-pg-config=/users/taylorjackson/postgresql/bin/pg_config
bundle install

同じ結果で、過去 7 時間の私の生産性はゼロにまで低下しました。関連する mkmf.log ファイルが見つかりません。他のアイデアはありますか?

編集:

mkmf.log が見つかりました。関連するコンテンツは次のとおりです。

def have_devel?
  unless defined? $have_devel
    $have_devel = true
    $have_devel = try_link(MAIN_DOES_NOTHING)
  end
  $have_devel
end

def try_do(src, command, &b)
  unless have_devel?
    raise <<MSG
The complier failed to generate an executable file.
You have to install development tools first.
MSG
  end
  begin
    src = create_tmpsrc(src, &b)
    xsystem(command)
  ensure
    log_src(src)
    rm_rf 'conftest.dSYM'
  end
end
4

2 に答える 2

1

あなたが見つけたファイルはmkmf.rb、ではなく、でしmkmf.logた。最初は次のmkmf.logようになります。

find_executable: checking for pg_config... -------------------- yes

--------------------

find_header: checking for libpq-fe.h... -------------------- yes
"/usr/bin/gcc-4.2 -o conftest -I/Users/mgranger/.rvm/rubies/ruby-1.9.3-p194/include/ruby-1.9.1/x86_64-darwin11.3.0 -I/Users/mgranger/.rvm/rubies/ruby-1.9.3-p194/include/ruby-1.9.1/ruby/backward -I/Users/mgranger/.rvm/rubies/ruby-1.9.3-p194/include/ruby-1.9.1 -I. -I/Users/mgranger/.rvm/usr/include -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE   -I/usr/include  -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wshorten-64-to-32 -Wimplicit-function-declaration  -fno-common -pipe conftest.c  -L. -L/Users/mgranger/.rvm/rubies/ruby-1.9.3-p194/lib -L/Users/mgranger/.rvm/usr/lib -L. -L/usr/local/lib -L/usr/lib     -lruby.1.9.1  -lpthread -ldl -lobjc "
checked program was:
/* begin */
1: #include "ruby.h"
2: 
3: int main() {return 0;}
/* end */

アンパックされた gem の「ext」ディレクトリにあります。bashの下では、これは私にとってはうまくいきます:

less $(dirname $(gem which pg))/../ext/mkmf.log

OSX では、最初のヘッダーで失敗するのは、ほとんどの場合、コンパイラのセットアップに問題があることを示していますpg_config。引用符で囲まれたコマンドの先頭にある「gcc」が実際にマシンに存在することを確認してください。私の場合は/usr/bin/gcc-4.2. それが欠けている場合は、拡張機能がソースから正しくインストールされる前に、それを修正する必要があります。

一方、あなたgccが存在する場合は、mkmf.logファイルを添付してください。通常、このファイルには、正しい方向に導くために必要な手がかりが含まれています。

于 2012-07-24T17:58:05.937 に答える
0

再起動すると、どういうわけか PostgreSQL がユーザーとして追加されていることに気付きました(!)。ユーザーを削除し、gemfile に gem 'pg' を追加してバンドルをインストールすると、すべてがスムーズに進みました。インストールプロセスのどのような奇妙さがそれを引き起こしたのかはわかりません. インストール時にデフォルトを変更しませんでしたが、古いバージョンの macports を使用することに問題があると思います。

同様の状況にある人には、1) タイム マシンのバックアップを使用して OS を切り替えないことをお勧めします。2) xcode、xcode 開発者ツール (xcode 設定メニューから)、および自作をクリーン インストールします。3) rvm の更新を強制します。4) brew install postgresql を使用して、postgresql をローカルにインストールします。5) 再起動して、pg gem のバンドル インストールを再試行します。私はたくさんのことをしましたが、それらは私がうまくいったと思うステップだと思います.

于 2012-07-25T03:55:06.887 に答える