2

Railsを3.1.3から3.2.8に更新しようとしています。rails gem値を変更して「bundleupdaterails」を実行すると、「termios」バージョン0.9.4というgemをインストールしようとしますが、これは失敗し、次のメッセージが表示されます。

Installing termios (0.9.4) with native extensions 
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

    /Users/me/.rvm/rubies/ruby-1.9.3-p0/bin/ruby extconf.rb 
checking for termios.h... yes
checking for unistd.h... yes
creating Makefile

make
compiling termios.c
In file included from termios.c:10:
/Users/me/.rvm/rubies/ruby-1.9.3-p0/include/ruby-1.9.1/ruby/backward/rubyio.h:2:2:     warning: #warning use "ruby/io.h" instead of "rubyio.h"
termios.c: In function ‘Termios_to_termios’:
termios.c:182: error: ‘struct RArray’ has no member named ‘ptr’
termios.c:183: error: ‘struct RArray’ has no member named ‘ptr’
termios.c: In function ‘termios_tcgetattr’:
termios.c:200: error: ‘OpenFile’ undeclared (first use in this function)
make: *** [termios.o] Error 1

Gem files will remain installed in /Users/me/.rvm/gems/ruby-1.9.3-p0@mcp5/gems/termios-0.9.4 for inspection.
Results logged to /Users/me/.rvm/gems/ruby-1.9.3-p0@mcp5/gems/termios-0.9.4/./gem_make.out
An error occured while installing termios (0.9.4), and Bundler cannot continue.
Make sure that `gem install termios -v '0.9.4'` succeeds before bundling.

また、OS X Mountain Lionに行ってから、Railsを更新するのはこれが初めてです。

「ruby-termios」と呼ばれる宝石をインストールするというこの質問についての別の答えを見ました。私はそれを行い、そのgemは正常にインストールされましたが、「termios」gemをインストールしようとする依存関係がどこかにあります。

4

3 に答える 3

4

結局、ruby-termiosgemを自分のリポジトリに複製しました。いくつかの未知の理由で、作者はそれを単なるtermiosではなくruby-termiosと名付けました。そこで、gemspecの名前を変更しました。次に、Gemfileを次のように変更しました。

gem 'termios', :path => 'termios'

それから私は走った:

bundle update

そして、すべてが再び機能しています。

于 2012-08-21T14:31:17.090 に答える
2

gem install ruby-termios私のメイクの問題を解決しました。私gem "ruby-termios"はあなたのGemfileでも機能することを期待しています。

何が起こったかのように見えますが、termios(arika)という名前のgemの元の作成者は、2004(v 0.9.4)以降gemを更新していませんが、rubygemshttp://rubygems.org/gems/termiosの名前空間を所有している人は誰もいませ。次に、他の誰か(edison)がgithub https://github.com/edison/ruby-termiosでフォークを作成し、他の誰か(tylerrick)が...という名前の新しいgemをプッシュしましたruby-termiosが、もちろんRuby内では、ライブラリはまだ名前が付けられていますtermiosしたがって、コマンドはまだrequire "termios"です。

于 2013-01-25T19:06:44.263 に答える
2

gem 'engineyard'Gemfileで指定すると、bundlerは、termiosに依存する古いバージョン(0.2.x)をインストールするようです。

新しいもの(gem 'engineyard', '~> 2.3')を指定すると、正しくインストールされます。

于 2014-07-28T01:35:45.693 に答える