質問

これは次のフォローアップです この質問.

を発行すると、 gem update Windowsのコマンドは、最新バージョンにWindowsバイナリがない宝石に到達するたびに、もちろん失敗するネイティブ拡張機能を構築しようとします。例えば:

Updating sqlite3-ruby
Building native extensions.  This could take a while...
ERROR:  While executing gem ... (Gem::Installer::ExtensionBuildError)
  ERROR: Failed to build gem native extension.

c:/ruby/bin/ruby.exe extconf.rb update
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.

必要なプラットフォームを要求する古いプレ-1.xの動作により、少なくとも更新が可能になりました。面倒な宝石(現在はSQLite3-RubyとHpricot)をアンインストールし、更新を実行してから、-versionスイッチを使用してgemsを再インストールしない限り、まったく更新できません。

この難題に対する解決策を持っている人はいますか? それとも私たちはこの難題に行き詰まっているのでしょうか?


注記:

$ gem -v
1.2.0

$ ruby -v
ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32]

注 (2008 年 9 月 26 日): gems 1.3.0 にアップデートしましたが、この問題は解決しません。

注 (2008 年 11 月 18 日): gems 1.3.1 にアップデートしたところ、問題が解決しません。

注 (2009 年 4 月 28 日): 最新バージョンの Gems (1.3.2) 更新中にネイティブ拡張機能の構築が失敗した場合、Gem がスキップされるようになりました。言い換えれば、問題は解決されました。万歳!

役に立ちましたか?

解決

現在の宝石 バージョン1.3.2, では、ビルドに失敗した gem がスキップされるようになりました。そのため、Rubygems を最新バージョンに更新すると、ここで説明した問題が解決されるはずです。

gem update --system

次のソリューションは現在非推奨になっていますが、記録のためにここに残しておきます。

この問題に関するスレッドを開始しました Ruby フォーラム (メーリング リストのフロントエンドです)。興味深い議論があります。一読の価値があります。この問題に対する非常に巧妙な解決策さえあります。

`gem.bat outdated`.split(/\n/).map{|z|z.scan(/^[^[:space:]]+/)}.flatten.each{|z| `gem.bat update #{z}`}

それは、 gem outdated コマンドを実行して、すべての古い gem のリストを作成します。次に、リストを反復処理して呼び出します。 gem update 個々の時代遅れの宝石ごとに。1つが失敗しても、次のステップに進むだけです。

他のヒント

どうやら行き詰まってしまったようだ。見つけた ここ 最後のバージョン (1.2.4) には mswin32 gem がないので、コンピューターにインストールしようとしましたが、同じ問題が発生しました。

以前のバージョンをインストールすると正常に動作します。

gem install sqlite3-ruby --version '1.2.3'

以下のコマンドを実行すると機能するはずです。

gem install sqlite3-ruby --platform=mswin32

見てみると、 RubyForge ファイルリスト for sqlite3-ruby は、バージョン 1.2.3 に Visual Studio 6 と MinGW を使用してビルドされた gem (sqlite3-ruby-1.2.3-mswin32.gem および sqlite3-ruby-1.2.3-x86-mingw32.gem) があることを明らかにしています。ただし、バージョン 1.2.4 には、そのような事前に構築された gem がありません。

Visual Studio 6 または MinGW インストールされ、コンパイラ環境変数が設定されている場合 (少なくとも Visual Studio 6 の場合は、MinGW については不明)、インストール中に gem がビルドされるはずです。gem が新しいバージョンの Visual Studio でビルドされるかどうかはわかりません。

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