mac brew update 報錯

環境爲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
相關文章
相關標籤/搜索