sqlite3-ruby gem:gem ネイティブ拡張機能のビルドに失敗しました

StackOverflow https://stackoverflow.com/questions/43778

  •  09-06-2019
  •  | 
  •  

質問

アップデート: このフォローアップの質問を確認してください。 Windows の Gem Update - 壊れていますか?


Windows でこれを行うと、次のようになります。

gem install sqlite3-ruby

次のエラーが表示されます。

Building native extensions.  This could take a while...
ERROR:  Error installing sqlite3-ruby:
        ERROR: Failed to build gem native extension.

c:/ruby/bin/ruby.exe extconf.rb install sqlite3-ruby --platform Win32
checking for fdatasync() in rt.lib... no
checking for sqlite3.h... no

nmake
'nmake' is not recognized as an internal or external command,
operable program or batch file.


Gem files will remain installed in c:/ruby/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.4 for inspection.
Results logged to c:/ruby/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.4/ext/sqlite3_api/gem_make.out

hpricot gem でも同じことが起こります. 。これらの gem は 1.0 未満の gem では問題なくインストールされたことを覚えているようですが、現在 1.2.0 を使用しているため、状況がおかしくなってしまいました。

私もこれを試してみました:

gem install sqlite3-ruby --platform Win32

言うまでもなく、これも機能しません(同じエラー)

ここで何が起こっているのか、そしてこれを修正する方法を知っている人はいますか?


アップデート: このフォローアップの質問を確認してください。 Windows の Gem Update - 壊れていますか?

役に立ちましたか?

解決

Nathan が示唆しているように、これは sqlite3-ruby および hpricot gem の最新バージョンに Windows バージョンが存在しないと思われるという事実に関連しているようです。この状況に直面した場合の対処法は次のとおりです (Gem の名前は自動的にワイルドカード化されるため、次のように入力できます) SQL で始まるすべての gem のリストを取得します SQL):

$ gem list --remote --all sqlite

*** REMOTE GEMS ***

sqlite (2.0.1, 2.0.0, 1.3.1, 1.3.0, 1.2.9.1, 1.2.0, 1.1.3, 1.1.2, 1.1.1, 1.1)
sqlite-ruby (2.2.3, 2.2.2, 2.2.1, 2.2.0, 2.1.0, 2.0.3, 2.0.2)
sqlite3-ruby (1.2.4, 1.2.3, 1.2.2, 1.2.1, 1.2.0, 1.1.0, 1.0.1, 1.0.0, 0.9.0, 0.6.0, 0.5.0)

次に、インストールするバージョンを選択できます。

gem install sqlite3-ruby -v 1.2.3

hpricot を正常にインストールするには、次の手順を実行しました。

gem install hpricot -v 0.6

迷惑なことに、 gem update gem を Windows 上で壊れた最新バージョンに更新しようとします。更新ルーチンでエラーが発生すると、プロセス全体が中断されます。この問題には (ハッキーな) 解決策があります ここ.

では、この問題は gem のバグなのでしょうか?gem はプラットフォームを自動的に検出して、互換性のある最新バージョンをインストールすべきではないでしょうか?

他のヒント

Ubuntuでも同じ問題が発生しましたが、これで問題が解決しました。

http://newsgroups.derkeiler.com/Archive/Comp/comp.lang.ruby/2008-08/msg00339.html

最新バージョンがまだ Win32 に移植されていない可能性はありますか?この特定の gem にはコンパイルされたコードへのバインディングがあるため、プラットフォーム固有の gem が必要になります。現在の 1.2.4 ではなくバージョン 1.2.3 を強制的にインストールすると、プラットフォーム固有のバージョンがインストールされますが、gem に現在のバージョンのインストールを許可すると、汎用の 1.2.4 バージョンが取得されます (gems 内) library フォルダーには、他の sqlite3-ruby フォルダーの名前にある -x86-mswin32 接尾辞がありません。

おそらく、他の誰かが gem がプラットフォーム固有の gem をどのように処理するかについて答えられるでしょう。プラットフォームごとに個別の gem がアップロードされ、gem ソフトウェアがどれをプルダウンするかを選択しますか?

まずはsqlite.orgから(http://www.sqlite.org/download.html)
ダウンロード ->
プリコンパイルされたバイナリ: sqlite-dll-win32-x86-3071700.zip
およびソースコード: sqlite-autoconf-3071700.tar.gz
次に、次のように抽出します。

-include
    --sqlite3.h
    --sqlite3ext.h
-lib
    --shell.c
    --sqlite3.c
    --sqlite3.def
    --sqlite3.dll

最後にgemをインストールしたのは次のようなものです:

gem install sqlite3 --platform=ruby -- --with-sqlite3-include=path\to\include  
 --with-sqlite3-lib=path\to\lib --no-ri --no-rdoc

幸運を!

私もこの問題に遭遇しました。1.2.3 と 1.2.4 の違いは重要ではないことを知っておく価値があります。こちらが1.2.4です。リリースノート:

リリース名:1.2.4

ノート:このリリースは、生成されたCファイルを更新して、SWIGファイルに加えられた互換性の変更を反映しています。バイナリビルド(例:Windows)は影響を受けず、更新する必要はありません。一般に、1.8.6より前にRubyのバージョンを使用していない限り、このアップデートは必要ありません。(ソース: 1.2.4.リリースノート)

それが他の人にも役立つことを願っています!

Windowsでも同じ問題が発生したので、MinGWをインストールしましたhttp://sourceforge.net/projects/mingw/files/Automated%20MinGW%20Installer/MinGW%205.1.6/MinGW-5.1.6.exe/downloadそして問題は解決しました:-)

C:> GEMインストールHPRICOTは、HPRICOT-0.8.2-X86-MSWIN32をインストールしました。hpricot-0.8.2-x86-mswin32 の RDoc ドキュメントをインストールしています...

C:> gemインストルRuby-postgresはRuby-postgres-0.7.1.1.2006.04.06-X86-MSWIN32のインストールに正常にインストールされました。Ruby-postgres-0.7.1.2006.04.06-x86-mswin32 の RDoc ドキュメントをインストールしています...

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top