1

「bundle install」を実行すると、このエラーが発生します

Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

        /var/lib/jenkins/.rvm/rubies/ruby-1.9.2-p318/bin/ruby extconf.rb 
checking for vm_core.h... no

checking for vm_core.h... no

*** extconf.rb failed ***

Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
    --with-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/var/lib/jenkins/.rvm/rubies/ruby-1.9.2-p318/bin/ruby
    --with-ruby-dir
    --without-ruby-dir
    --with-ruby-include
    --without-ruby-include=${ruby-dir}/include
    --with-ruby-lib
    --without-ruby-lib=${ruby-dir}/lib
/var/lib/jenkins/.rvm/rubies/ruby-1.9.2-p318/lib/ruby/1.9.1/fileutils.rb:243:in `mkdir': Permission denied - /var/lib/jenkins/.rvm/rubies/ruby-1.9.2-p318/include/ruby-1.9.1/ruby-1.9.2-p318 (Errno::EACCES)
    from /var/lib/jenkins/.rvm/rubies/ruby-1.9.2-p318/lib/ruby/1.9.1/fileutils.rb:243:in `fu_mkdir'
    from /var/lib/jenkins/.rvm/rubies/ruby-1.9.2-p318/lib/ruby/1.9.1/fileutils.rb:217:in `block (2 levels) in mkdir_p'
    from /var/lib/jenkins/.rvm/rubies/ruby-1.9.2-p318/lib/ruby/1.9.1/fileutils.rb:215:in `reverse_each'
    from /var/lib/jenkins/.rvm/rubies/ruby-1.9.2-p318/lib/ruby/1.9.1/fileutils.rb:215:in `block in mkdir_p'
    from /var/lib/jenkins/.rvm/rubies/ruby-1.9.2-p318/lib/ruby/1.9.1/fileutils.rb:201:in `each'
    from /var/lib/jenkins/.rvm/rubies/ruby-1.9.2-p318/lib/ruby/1.9.1/fileutils.rb:201:in `mkdir_p'
    from /var/lib/jenkins/.rvm/gems/ruby-1.9.2-p318/gems/ruby_core_source-0.1.5/lib/ruby_core_source.rb:59:in `block in create_makefile_with_core'
    from /var/lib/jenkins/.rvm/rubies/ruby-1.9.2-p318/lib/ruby/1.9.1/tempfile.rb:320:in `open'
    from /var/lib/jenkins/.rvm/gems/ruby-1.9.2-p318/gems/ruby_core_source-0.1.5/lib/ruby_core_source.rb:51:in `create_makefile_with_core'
    from extconf.rb:19:in `<main>'
Requesting http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p318.tar.gz
Downloading http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p318.tar.gz


Gem files will remain installed in /var/lib/jenkins/.bundler/tmp/19915/gems/linecache19-0.5.12 for inspection.
Results logged to /var/lib/jenkins/.bundler/tmp/19915/gems/linecache19-0.5.12/ext/trace_nums/gem_make.out
An error occured while installing linecache19 (0.5.12), and Bundler cannot continue.
Make sure that `gem install linecache19 -v '0.5.12'` succeeds before bundling.

を実行した後も同じエラーが発生しますgem install linecache19 -v '0.5.12'

エラーを検索しましたが、解決策はありませんでした。

「chown -R jenkins /var/lib/jenkins/.rvm」を実行すると、次のエラーが発生します。

chown: `/var/lib/jenkins/.rvm/src/rubygems-1.8.21/lib/rubygems/ext' の所有権を変更: 操作は許可されていません

chown: `/var/lib/jenkins/.rvm/src/rubygems-1.8.21/lib/rubygems/test_case.rb' の所有権を変更: 操作は許可されていません

chown: `/var/lib/jenkins/.rvm/src/rubygems-1.8.21/lib/rubygems/deprecate.rb' の所有権を変更: 操作は許可されていません

chown: `/var/lib/jenkins/.rvm/src/rubygems-1.8.21/lib/rubygems/commands/update_command.rb' の所有権を変更: 操作は許可されていません

chown: `/var/lib/jenkins/.rvm/src/rubygems-1.8.21/lib/rubygems/commands/outdated_command.rb' の所有権を変更: 操作は許可されていません

chown: `/var/lib/jenkins/.rvm/src/rubygems-1.8.21/lib/rubygems/commands/uninstall_command.rb' の所有権を変更: 操作は許可されていません

chown: `/var/lib/jenkins/.rvm/src/rubygems-1.8.21/lib/rubygems/commands/fetch_command.rb' の所有権を変更しています: 操作は許可されていません
.....

sudo でコマンドを実行しても何も起こりません!

4

2 に答える 2

3

これは、ヘッダーファイルが欠落している場合です。

ご使用のバージョンのrubyのrubyソースのコピーを検索またはダウンロードしてから、

gem install ruby-debug19 -- --with-ruby-include=path/to/ruby/source/

再実行しbundle installます。

于 2012-04-11T23:13:37.840 に答える
0

重要な行は次のとおりです。

/var/lib/jenkins/.rvm/rubies/ruby-1.9.2-p318/lib/ruby/1.9.1/fileutils.rb:243:in `mkdir': Permission denied - /var/lib/jenkins/.rvm/rubies/ruby-1.9.2-p318/include/ruby-1.9.1/ruby-1.9.2-p318 (Errno::EACCES)

どうやら、ユーザーはそのディレクトリに書き込むことができません。/var/lib/jenkins/.rvmすべての子オブジェクトが jenkins ユーザーによって所有されていることを確認する必要があります。jenkins実行できると仮定すると

chown -R jenkins /var/lib/jenkins/.rvm
chmod -R u+rX /var/lib/jenkins/.rvm
于 2012-04-11T22:02:56.513 に答える