2010-09-20 51 views
4

在更新的Ubunutu x86_64上安裝ruby-1.9.2-p0和rvm時,我在merge中遇到錯誤:無法轉換String進入散列(TypeError)。已經安裝了rvm筆記中的所有apt軟件包和rubygems手冊中的apt軟件包。我相信這個錯誤是由於RVM嘗試安裝rubygems造成的。ruby​​gems 1.3.7在Ubuntu上安裝時TypeError(在'合併')

我也得到了與系統紅寶石安裝紅寶石寶石同樣的錯誤。我認爲這是一個依賴問題。

我之前在Ubuntu上編譯過i386和x86_64,之前從未遇到過這個問題。我錯過了什麼/做錯了什麼?

通過系統紅寶石:


$ ruby -v 
ruby 1.8.7 (2010-01-10 patchlevel 249) [x86_64-linux] 
$ sudo ruby setup.rb 
./lib/rubygems/config_file.rb:172:in `merge': can't convert String into Hash (TypeError) 
    from ./lib/rubygems/config_file.rb:172:in `initialize' 
    from ./lib/rubygems.rb:385:in `new' 
    from ./lib/rubygems.rb:385:in `configuration' 
    from ./lib/rubygems.rb:635:in `path' 
    from ./lib/rubygems/source_index.rb:68:in `installed_spec_directories' 
    from ./lib/rubygems/source_index.rb:58:in `from_installed_gems' 
    from ./lib/rubygems.rb:883:in `source_index' 
    from ./lib/rubygems/gem_path_searcher.rb:81:in `init_gemspecs' 
    from ./lib/rubygems/gem_path_searcher.rb:13:in `initialize' 
    from ./lib/rubygems.rb:841:in `new' 
    from ./lib/rubygems.rb:841:in `searcher' 
    from ./lib/rubygems.rb:840:in `synchronize' 
    from ./lib/rubygems.rb:840:in `searcher' 
    from ./lib/rubygems.rb:479:in `find_files' 
    from ./lib/rubygems.rb:983:in `load_plugins' 
    from ./lib/rubygems.rb:1139 
    from setup.rb:24:in `require' 
    from setup.rb:24 

通過RVM:


[2010-09-20 10:46:27] make 
file.c: In function 'file_expand_path': 
file.c:2844: warning: 'b' may be used uninitialized in this function 
io.c: In function 'argf_next_argv': 
io.c:6821: warning: ignoring return value of 'fchown', declared with attribute warn_unused_result 
process.c: In function 'rb_fork_err': 
process.c:2516: warning: ignoring return value of 'write', declared with attribute warn_unused_result 
process.c:2519: warning: ignoring return value of 'write', declared with attribute warn_unused_result 
process.c: In function 'p_uid_change_privilege': 
process.c:4111: warning: signed and unsigned type in conditional expression 
process.c:4112: warning: signed and unsigned type in conditional expression 
process.c:4113: warning: signed and unsigned type in conditional expression 
process.c: In function 'proc_daemon': 
process.c:4608: warning: ignoring return value of 'chdir', declared with attribute warn_unused_result 
process.c: In function 'p_gid_change_privilege': 
process.c:4730: warning: signed and unsigned type in conditional expression 
process.c:4731: warning: signed and unsigned type in conditional expression 
process.c:4732: warning: signed and unsigned type in conditional expression 
random.c: In function 'fill_random_seed': 
random.c:492: warning: ignoring return value of 'read', declared with attribute warn_unused_result 
ossl_pkey_ec.c: In function 'ossl_ec_group_set_seed': 
ossl_pkey_ec.c:1110: warning: comparison between signed and unsigned integer expressions 
ossl_pkcs7.c: In function 'ossl_pkcs7_sym2typeid': 
ossl_pkcs7.c:376: warning: comparison between signed and unsigned integer expressions 
ossl_hmac.c: In function 'ossl_hmac_hexdigest': 
ossl_hmac.c:162: warning: comparison between signed and unsigned integer expressions 
ossl_hmac.c: In function 'ossl_hmac_s_hexdigest': 
ossl_hmac.c:225: warning: comparison between signed and unsigned integer expressions 
ossl_ssl_session.c: In function 'ossl_ssl_session_to_der': 
ossl_ssl_session.c:208: warning: comparison between signed and unsigned integer expressions 
parser.c: In function 'parse': 
parser.c:58: warning: 'internal_enc' may be used uninitialized in this function 
pty.c: In function 'chfunc': 
pty.c:209: warning: ignoring return value of 'write', declared with attribute warn_unused_result 
pty.c: In function 'establishShell': 
pty.c:269: warning: ignoring return value of 'read', declared with attribute warn_unused_result 
_sdbm.c: In function 'makroom': 
_sdbm.c:425: warning: ignoring return value of 'write', declared with attribute warn_unused_result 
_sdbm.c: In function 'chkpage': 
_sdbm.c:864: warning: comparison between signed and unsigned integer expressions 
rubyext.c: In function 'mktime_do': 
rubyext.c:278: warning: comparison between signed and unsigned integer expressions 
/home/deploy/.rvm/src/ruby-1.9.2-p0/lib/rubygems/config_file.rb:159:in `merge': can't convert String into Hash (TypeError) 
    from /home/deploy/.rvm/src/ruby-1.9.2-p0/lib/rubygems/config_file.rb:159:in `initialize' 
    from /home/deploy/.rvm/src/ruby-1.9.2-p0/lib/rubygems.rb:390:in `new' 
    from /home/deploy/.rvm/src/ruby-1.9.2-p0/lib/rubygems.rb:390:in `configuration' 
    from /home/deploy/.rvm/src/ruby-1.9.2-p0/lib/rubygems.rb:618:in `path' 
    from /home/deploy/.rvm/src/ruby-1.9.2-p0/lib/rubygems/source_index.rb:68:in `installed_spec_directories' 
    from /home/deploy/.rvm/src/ruby-1.9.2-p0/lib/rubygems/source_index.rb:58:in `from_installed_gems' 
    from /home/deploy/.rvm/src/ruby-1.9.2-p0/lib/rubygems.rb:866:in `source_index' 
    from /home/deploy/.rvm/src/ruby-1.9.2-p0/lib/rubygems/gem_path_searcher.rb:81:in `init_gemspecs' 
    from /home/deploy/.rvm/src/ruby-1.9.2-p0/lib/rubygems/gem_path_searcher.rb:13:in `initialize' 
    from /home/deploy/.rvm/src/ruby-1.9.2-p0/lib/rubygems.rb:824:in `new' 
    from /home/deploy/.rvm/src/ruby-1.9.2-p0/lib/rubygems.rb:824:in `block in searcher' 
    from :10:in `synchronize' 
    from /home/deploy/.rvm/src/ruby-1.9.2-p0/lib/rubygems.rb:823:in `searcher' 
    from /home/deploy/.rvm/src/ruby-1.9.2-p0/lib/rubygems.rb:484:in `find_files' 
    from /home/deploy/.rvm/src/ruby-1.9.2-p0/lib/rubygems.rb:966:in `load_plugins' 
    from /home/deploy/.rvm/src/ruby-1.9.2-p0/lib/rubygems.rb:1136:in `' 
    from :29:in `require' 
    from :29:in `require' 
    from /home/deploy/.rvm/src/ruby-1.9.2-p0/lib/rdoc/rdoc.rb:438:in `' 
    from :29:in `require' 
    from :29:in `require' 
    from ./bin/rdoc:11:in `' 
make: *** [rdoc] Error 1 

回答

18

解決辦法很簡單。

1)閱讀源代碼。 2)認識到system_config合併成功。 3)認識到你的user_config(.gemrc文件)有錯誤。 4)修復它。 5)一切正常。

.gemrc正確的語法:

gem: --no-ri --no-rdoc