環境爲mac, 總共報了三種錯誤。 git
對應三種不一樣的解法。ruby
1. 第一種以下, 提示 1.8 的版本找不到 oop
$ brew update /usr/local/bin/brew: /usr/local/Library/brew.rb: /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby: bad interpreter: No such file or directory /usr/local/bin/brew: line 21: /usr/local/Library/brew.rb: Undefined error: 0
這種比較簡單。 緣由是mac 升級到 某一個版本以後, ruby版本升級到2.0 了, 可是 brew.rb 中的版本號是 寫死了1.8 , 須要修改下。ui
先檢查一下本身 ruby版本 $ cd /System/Library/Frameworks/Ruby.framework/Versions/
spa
通常來講, 都是 2.0code
以後 $ vi /usr/local/Library/brew.rb 將第一行的 1.8 , 修改爲 2.0 便可。 blog
詳細見: http://stackoverflow.com/questions/24225959/how-to-get-ruby-homebrew-rvm-to-work-on-yosemitehomebrew
2. 第二種狀況, 錯誤提示以下。 ci
$ brew update /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:89:in `run': ERROR: Failed to build gem native extension. (Gem::Ext::BuildError) /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb checking for rb_thread_blocking_region()... yes checking for sys/select.h... yes checking for poll.h... yes checking for sys/epoll.h... no checking for sys/event.h... yes checking for sys/queue.h... yes checking for port.h... no checking for sys/resource.h... yes creating Makefile make "DESTDIR=" clean make "DESTDIR=" compiling monitor.c In file included from monitor.c:6: In file included from ./nio4r.h:10: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/include/ruby-2.0.0/ruby/backward/rubyio.h:2:2: warning: use "ruby/io.h" instead of "rubyio.h" [-W#warnings] #warning use "ruby/io.h" instead of "rubyio.h" ^ 1 warning generated. In file included from monitor.c:6: In file included from ./nio4r.h:10: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/include/ruby-2.0.0/ruby/backward/rubyio.h:2:2: warning: use "ruby/io.h" instead of "rubyio.h" [-W#warnings] #warning use "ruby/io.h" instead of "rubyio.h" ^ 1 warning generated. compiling nio4r_ext.c In file included from nio4r_ext.c:6: In file included from ./nio4r.h:10: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/include/ruby-2.0.0/ruby/backward/rubyio.h:2:2: warning: use "ruby/io.h" instead of "rubyio.h" [-W#warnings] #warning use "ruby/io.h" instead of "rubyio.h" ^ In file included from nio4r_ext.c:7: ./../libev/ev.c:481:48: warning: '/*' within block comment [-Wcomment] /*#define MIN_INTERVAL 0.00000095367431640625 /* 1/2**20, good till 2200 */ ^ ./../libev/ev.c:974:42: error: '_Noreturn' keyword must precede function declarator ecb_inline void ecb_unreachable (void) ecb_noreturn; ^~~~~~~~~~~~ _Noreturn ./../libev/ev.c:777:26: note: expanded from macro 'ecb_noreturn' #define ecb_noreturn _Noreturn ^ ./../libev/ev.c:1535:31: warning: 'extern' variable has an initializer [-Wextern-initializer] EV_API_DECL struct ev_loop *ev_default_loop_ptr = 0; /* needs to be initialised to make it a definition despite extern */
make failed, exit code 2rem
Gem files will remain installed in /Library/Ruby/Gems/2.0.0/gems/nio4r-1.0.0 for inspection.
Results logged to /Library/Ruby/Gems/2.0.0/extensions/universal-darwin-16/2.0.0/nio4r-1.0.0/gem_make.out
from /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:51:in `block in make'
from /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:43:in `each'
from /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:43:in `make'
from /Library/Ruby/Site/2.0.0/rubygems/ext/ext_conf_builder.rb:43:in `block in build'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/tempfile.rb:324:in `open'
from /Library/Ruby/Site/2.0.0/rubygems/ext/ext_conf_builder.rb:17:in `build'
from /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:161:in `block (2 levels) in build_extension'
from /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:160:in `chdir'
from /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:160:in `block in build_extension'
from /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:159:in `synchronize'
from /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:159:in `build_extension'
from /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:198:in `block in build_extensions'
from /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:195:in `each'
from /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:195:in `build_extensions'
from /Library/Ruby/Site/2.0.0/rubygems/specification.rb:1436:in `block in build_extensions'
from /Library/Ruby/Site/2.0.0/rubygems/user_interaction.rb:45:in `use_ui'
from /Library/Ruby/Site/2.0.0/rubygems/specification.rb:1434:in `build_extensions'
from /Library/Ruby/Site/2.0.0/rubygems/stub_specification.rb:60:in `build_extensions'
from /Library/Ruby/Site/2.0.0/rubygems/basic_specification.rb:56:in `contains_requirable_file?'
from /Library/Ruby/Site/2.0.0/rubygems/specification.rb:925:in `block in find_inactive_by_path'
from /Library/Ruby/Site/2.0.0/rubygems/specification.rb:924:in `each'
from /Library/Ruby/Site/2.0.0/rubygems/specification.rb:924:in `find'
from /Library/Ruby/Site/2.0.0/rubygems/specification.rb:924:in `find_inactive_by_path'
from /Library/Ruby/Site/2.0.0/rubygems.rb:185:in `try_activate'
from /Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_require.rb:132:in `rescue in require'
from /Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_require.rb:144:in `require'
from /usr/local/Library/Homebrew/extend/pathname.rb:2:in `<top (required)>'
from /Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/local/Library/Homebrew/global.rb:3:in `<top (required)>'
from /Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/local/Library/brew.rb:17:in `<main>'
這種狀況, 須要升級 gem 的版本。
通常來講是用 $ sudo gem update --system 來進行升級, 可是會報錯。
$ sudo gem update --system Password: Sorry, try again. Password: ERROR: While executing gem ... (Gem::RemoteFetcher::FetchError) bad response Not Found 404 (http://ruby.taobao.org/specs.4.8.gz)
這種錯誤, 由於 gem源換了, 貌似原來的淘寶源不維護了。 具體見: https://ruby.taobao.org/ 。 須要跟換一下gem源
$ sudo gem update --system Password: Updating rubygems-update Fetching: rubygems-update-2.6.7.gem (100%) ERROR: While executing gem ... (Errno::EPERM) Operation not permitted - /usr/bin/update_rubygems
這種錯誤也沒明白, 提示是 沒有操做權限。 在網上查了一個方法, 修改命令成以下方式就能夠了。
$ sudo gem update -n /usr/local/bin --system
執行完成以後, gem -v 能夠看到 版本更新了。
這樣, 第二個 gem update的錯誤,就快要解決了。
第三個問題, 繼續 brew update, 出現以下錯誤。
$ brew update /Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- mach (LoadError) from /Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require' from /usr/local/Library/Homebrew/extend/pathname.rb:2:in `<top (required)>' from /Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require' from /Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require' from /usr/local/Library/Homebrew/global.rb:3:in `<top (required)>' from /Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require' from /Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require' from /usr/local/Library/brew.rb:17:in `<main>'
根據 http://stackoverflow.com/questions/24652996/homebrew-not-working-on-osx 的最高票答案就能夠解決。
若是這個指令沒有解決, 則採用下面的步驟。
$ sudo chown -R $(whoami):admin /usr/local
至此, 這個問題解決了。 1. open terminal 2. $ cd /usr/local/Homebrew , 這裏的路徑我是: /usr/local/Library/ 3. $ git reset --hard 4. $ git clean -df 5. $ brew update