21

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


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 の更新 - 壊れていますか?

4

6 に答える 6

27

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

$ 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 はプラットフォームを自動的に検出して、互換性のある最新バージョンをインストールすべきではありませんか?

于 2008-09-04T14:13:02.227 に答える
9

Ubuntuでも同じ問題がありましたが、これで問題が解決しました:

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

于 2009-01-24T20:17:32.763 に答える
3

最初に 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

幸運を!

于 2013-07-28T11:04:07.250 に答える
2

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

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

于 2008-09-04T13:54:46.640 に答える
1

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

リリース名: 1.2.4

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

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

于 2008-12-14T17:22:31.863 に答える
1

Windowsでも同じ問題があり、MinGWをインストール しましたhttp://sourceforge.net/projects/mingw/files/Automated%20MinGW%20Installer/MinGW%205.1.6/MinGW-5.1.6.exe/download と問題行っている :-)

C:>gem install hpricot hpricot-0.8.2-x86-mswin32 が正常にインストールされました 1 つの gem がインストールされました hpricot-0.8.2-x86-mswin32 の ri ドキュメントをインストールしています... ..

C:>gem install ruby​​-postgres ruby​​-postgres-0.7.1.2006.04.06-x86-mswin32 が正常にインストールされました 1 つの gem がインストールされました ruby​​-postgres-0.7.1.2006.04.06-x86-mswin32 の ri ドキュメントをインストールしています... ruby-postgres-0.7.1.2006.04.06-x86-mswin32...

于 2009-12-21T15:11:06.853 に答える