9

crunchbang Linux に sqlite3-ruby gem をインストールする際に問題が発生しています。過去数時間グーグルで検索し、同じ問題を抱えている何人かの人々をフォローした後でも、まだ機能していません。

これは、「sudo gem install sqlite3-ruby」を試した後に表示されるものです

ネイティブ拡張機能の構築。これには時間がかかる場合があります...
エラー: sqlite3-ruby のインストール中にエラーが発生しました:
エラー: gem ネイティブ拡張機能をビルドできませんでした。

/usr/bin/ruby1.8 extconf.rb sqlite3.h
をチェックしています... はい
-lsqlite3 で sqlite3_libversion_number() をチェックしています... はい rb_proc_arity() をチェックしています... いいえ
sqlite3_initialize()を
チェックしていません... いいえ
sqlite3-ruby は sqlite3 バージョン 3.6.16+ のみをサポートしています。アップグレードしてください!
* extconf.rb が失敗しました *
何らかの理由で Makefile を作成できませんでした
。必要なライブラリやヘッダーが不足している可能性があります。詳細については、mkmf.log ファイルを確認して
ください。構成オプションが必要な場合があります。

次に、このページに出くわしました。 http://groups.google.com/group/sqlite3-ruby/browse_thread/thread/f22d098b561c48af/6e754f7b2fc3cd75?#6e754f7b2fc3cd75

sqlite-amalgamation-3.7.0.1.tar.gz をダウンロードし、次のコマンドを発行しました。

tar zxvf sqlite-amalgamation-3.7.0.1.tar.gz
cd cd sqlite-3.7.0.1
mkdir $HOME/sqlite
./configure --prefix=$HOME/sqlite
make && make install
sudo gem install sqlite3-ruby -- -- with-sqlite3-dir=$HOME/sqlite

ただし、まったく同じエラーが発生します。「sudo apt-get install sqlite3 libsqlite3-dev」を使用しましたが、まったく同じエラーが発生します。

何かアドバイス?

余談ですが、「sudo apt-get install sqlite3」を使用すると、手動でダウンロードした 3.7.0.1 ではなく 3.5.9 が取得されるのはなぜですか?

4

7 に答える 7

15

sqlite3-rubyの下位バージョンをインストールすると、問題が解決するはずです。

sudo gem install sqlite3-ruby --version=1.2.5
于 2010-10-28T20:10:17.750 に答える
3

これは、Makefileをまとめる前に関数をテストするときに、extconf.rbが古い3.5.9ライブラリを取得するためです。

これを短くするための1つの解決策は、apt-getremovesqlite3を再試行することです。

sudo gem install sqlite3-ruby -- --with-sqlite3-dir=$HOME/sqlite

これにより、sqlite3コマンドラインバイナリを使用する場合に非互換性を回避できる可能性があります。

別の解決策は、新しい〜/ sqlite / lib / libsqlite3.aをgemのビルドディレクトリにコピーして(gem env、gems / sqlite3-ruby-1.3.1 / ext / sqlite3などを参照)、再試行することです。

sudo gem install sqlite3-ruby

テストは今すぐ新しいライブラリを取得し、正常にインストールされるはずです。

于 2010-09-10T14:53:31.330 に答える
2

sqlite3-ruby (現在は sqlite3 という名前) の README.rdoc に従って、次の方法を使用して正しいライブラリに移動できます。

sqlite3 を標準以外の場所にインストールしている場合は、次のようにして include ファイルと lib ファイルの場所を指定できます。

gem install sqlite3 -- --with-sqlite3-include=/opt/local/include \

--with-sqlite3-lib=/opt/local/lib

于 2011-01-30T17:17:27.430 に答える
1

私はまったく同じ問題を抱えていました。Jarekのソリューションは、すべてのファイル(だけでなくlibsqlite3.a)をから~/sqlite/libに移動したときに機能しましたgems/sqlite3-ruby-1.3.1/ext/sqlite3

于 2010-09-16T23:00:54.907 に答える
1

同様の問題がありました-プロジェクトディレクトリの ./Gemfile から次の迷惑な行をコメントアウトしただけです。

# gem 'sqlite3-ruby', :require => 'sqlite3'

そしてした:

bundle install

script/rails サーバーが正常に動作するようになりました。ふぅ!

sqlite3 が重複しているようです - 変です

于 2011-02-04T17:12:18.453 に答える
1

ショーン、詳しく説明させてください。

Ruby は、ささいな例をコンパイルし、コンパイルが成功したかどうかを検証することで、sqlite3 ライブラリに適応しています。これにより、必要な機能が含まれていない古いライブラリが取得されます。

最初の解決策は、古いライブラリを削除し、新しいバージョンをダウンロードしたディレクトリに ruby​​ を移動することです。使用しているシステムに応じて、適切なパッケージ マネージャーを選択する必要があります: apt-get、dpkg、yum、yast、ipkg など、古いパッケージを削除します。これにより、ビルドが古い部分を拾わないようになります。次に、 --with-sqlite3-dir オプションを使用して、新しいライブラリが配置されている正しいディレクトリを ruby​​ が指していることを確認する必要があります。

2 番目の解決策は一種のハックです。これは、C コンパイラが現在のディレクトリ内のファイルを他のファイルよりも先に取得することに依存しています。cp、mc、またはその他のファイル マネージャーを使用して、.a ライブラリと .h ヘッダーをビルド ディレクトリにコピーできます。ビルドは問題ないはずですが、sqlite3 コマンドは古いままで、新しいライブラリで作成されたデータベースと互換性がない可能性があります。

HTH、ジャレク

于 2010-11-04T21:46:55.823 に答える
1

OSX 10.5.8でも同じ問題に遭遇しました

解決策は非常に簡単でした:

1.- Apple dev. からダウンロードした Xcode: xcode314_2809_developerdvd.dmg (登録が必要) 2.- macports をダウンロードしてインストール: http://distfiles.macports.org/MacPorts/MacPorts-1.9.2-10.5-Leopard.dmg 3. - sudo ポート インストール sqlite3

そして、すべてが意図したとおりに機能していました。

この結果が役に立つことを願っています!

于 2011-03-13T04:40:44.540 に答える