启动rails服务器时出错:警告:PATH中/usr是一个不安全的可写目录,模式为040777。

40

我正在跟随Treehouse上的Ruby教程学习,并在启动Rails服务器时一直遇到以下错误:

/usr/local/rvm/gems/ruby-1.9.3-p392@global/gems/bundler-1.2.4/lib/bundler/runtime.rb:197: warning: Insecure world writable dir /usr in PATH, mode 040777
/usr/local/rvm/gems/ruby-1.9.3-p392@global/gems/bundler-1.2.4/lib/bundler/runtime.rb:197: warning: Insecure world writable dir /usr in PATH, mode 040777

我尝试使用sudo chmod o-w /usr/local/修复它,还尝试了其他变体,但遗憾的是对我没有任何帮助。

即使出现了这个错误,服务器仍然可以启动,一切都正常工作,但是现在我会收到许多其他错误,并且服务器甚至无法再启动,我认为它们可能以某种方式相互关联?

这是我现在得到的错误:

 Yass-Bents-MacBook-Pro:treebook yassine$ rails s
/usr/local/rvm/gems/ruby-1.9.3-p392@global/gems/bundler-1.2.4/lib/bundler/runtime.rb:197: warning: Insecure world writable dir /usr in PATH, mode 040777
/usr/local/rvm/gems/ruby-1.9.3-p392@global/gems/bundler-1.2.4/lib/bundler/runtime.rb:197: warning: Insecure world writable dir /usr in PATH, mode 040777
=> Booting WEBrick
=> Rails 3.2.12 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
Exiting
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activesupport-3.2.12/lib/active_support/dependencies.rb:469:in `load': /Users/yassine/treebook/app/models/user.rb:12: syntax error, unexpected keyword_end (SyntaxError)
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/activesupport-3.2.12/lib/active_support/dependencies.rb:469:in `block in load_file'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/activesupport-3.2.12/lib/active_support/dependencies.rb:639:in `new_constants_in'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/activesupport-3.2.12/lib/active_support/dependencies.rb:468:in `load_file'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/activesupport-3.2.12/lib/active_support/dependencies.rb:353:in `require_or_load'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/activesupport-3.2.12/lib/active_support/dependencies.rb:502:in `load_missing_constant'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/activesupport-3.2.12/lib/active_support/dependencies.rb:192:in `block in const_missing'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/activesupport-3.2.12/lib/active_support/dependencies.rb:190:in `each'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/activesupport-3.2.12/lib/active_support/dependencies.rb:190:in `const_missing'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/activesupport-3.2.12/lib/active_support/inflector/methods.rb:230:in `block in constantize'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/activesupport-3.2.12/lib/active_support/inflector/methods.rb:229:in `each'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/activesupport-3.2.12/lib/active_support/inflector/methods.rb:229:in `constantize'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/activesupport-3.2.12/lib/active_support/dependencies.rb:554:in `get'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/activesupport-3.2.12/lib/active_support/dependencies.rb:588:in `constantize'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/devise-2.2.4/lib/devise.rb:272:in `get'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/devise-2.2.4/lib/devise/mapping.rb:77:in `to'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/devise-2.2.4/lib/devise/mapping.rb:72:in `modules'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/devise-2.2.4/lib/devise/mapping.rb:89:in `routes'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/devise-2.2.4/lib/devise/mapping.rb:156:in `default_used_route'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/devise-2.2.4/lib/devise/mapping.rb:66:in `initialize'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/devise-2.2.4/lib/devise.rb:306:in `new'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/devise-2.2.4/lib/devise.rb:306:in `add_mapping'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/devise-2.2.4/lib/devise/rails/routes.rb:208:in `block in devise_for'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/devise-2.2.4/lib/devise/rails/routes.rb:207:in `each'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/devise-2.2.4/lib/devise/rails/routes.rb:207:in `devise_for'
    from /Users/yassine/treebook/config/routes.rb:2:in `block in <top (required)>'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/actionpack-3.2.12/lib/action_dispatch/routing/route_set.rb:282:in `instance_exec'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/actionpack-3.2.12/lib/action_dispatch/routing/route_set.rb:282:in `eval_block'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/actionpack-3.2.12/lib/action_dispatch/routing/route_set.rb:260:in `draw'
    from /Users/yassine/treebook/config/routes.rb:1:in `<top (required)>'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/activesupport-3.2.12/lib/active_support/dependencies.rb:245:in `load'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/activesupport-3.2.12/lib/active_support/dependencies.rb:245:in `block in load'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/activesupport-3.2.12/lib/active_support/dependencies.rb:236:in `load_dependency'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/activesupport-3.2.12/lib/active_support/dependencies.rb:245:in `load'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.12/lib/rails/application/routes_reloader.rb:40:in `block in load_paths'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.12/lib/rails/application/routes_reloader.rb:40:in `each'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.12/lib/rails/application/routes_reloader.rb:40:in `load_paths'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.12/lib/rails/application/routes_reloader.rb:16:in `reload!'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.12/lib/rails/application/routes_reloader.rb:26:in `block in updater'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/activesupport-3.2.12/lib/active_support/file_update_checker.rb:78:in `call'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/activesupport-3.2.12/lib/active_support/file_update_checker.rb:78:in `execute'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.12/lib/rails/application/routes_reloader.rb:27:in `updater'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.12/lib/rails/application/routes_reloader.rb:7:in `execute_if_updated'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.12/lib/rails/application/finisher.rb:66:in `block in <module:Finisher>'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.12/lib/rails/initializable.rb:30:in `instance_exec'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.12/lib/rails/initializable.rb:30:in `run'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.12/lib/rails/initializable.rb:55:in `block in run_initializers'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.12/lib/rails/initializable.rb:54:in `each'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.12/lib/rails/initializable.rb:54:in `run_initializers'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.12/lib/rails/application.rb:136:in `initialize!'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.12/lib/rails/railtie/configurable.rb:30:in `method_missing'
    from /Users/yassine/treebook/config/environment.rb:5:in `<top (required)>'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/activesupport-3.2.12/lib/active_support/dependencies.rb:251:in `require'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/activesupport-3.2.12/lib/active_support/dependencies.rb:251:in `block in require'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/activesupport-3.2.12/lib/active_support/dependencies.rb:236:in `load_dependency'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/activesupport-3.2.12/lib/active_support/dependencies.rb:251:in `require'
    from /Users/yassine/treebook/config.ru:3:in `block in <main>'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/rack-1.4.5/lib/rack/builder.rb:51:in `instance_eval'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/rack-1.4.5/lib/rack/builder.rb:51:in `initialize'
    from /Users/yassine/treebook/config.ru:in `new'
    from /Users/yassine/treebook/config.ru:in `<main>'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/rack-1.4.5/lib/rack/builder.rb:40:in `eval'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/rack-1.4.5/lib/rack/builder.rb:40:in `parse_file'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/rack-1.4.5/lib/rack/server.rb:200:in `app'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.12/lib/rails/commands/server.rb:46:in `app'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/rack-1.4.5/lib/rack/server.rb:304:in `wrapped_app'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/rack-1.4.5/lib/rack/server.rb:254:in `start'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.12/lib/rails/commands/server.rb:70:in `start'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.12/lib/rails/commands.rb:55:in `block in <top (required)>'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.12/lib/rails/commands.rb:50:in `tap'
    from /usr/local/rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.12/lib/rails/commands.rb:50:in `<top (required)>'
    from script/rails:6:in `require'
    from script/rails:6:in `<main>'
Yass-Bents-MacBook-Pro:treebook yassine$ 

有关如何修复这个问题的任何建议?我尝试重新安装Rails,但没有帮助,错误仍然存在。

谢谢!


2
你的应用程序/模型/user.rb是什么样子的? - Marek Lipka
您有一个意外的关键字“end”,请使用“ruby -c app/models/FILENAME.rb”检查您的模型文件的语法。 - AJcodez
3个回答

133

尝试使用磁盘工具中的“修复磁盘权限”选项。

[编辑]

适用于OS X El Capitan:

sudo /usr/libexec/repair_packages --repair --standard-pkgs --volume /

在此输入图片描述


13
你需要更多的赞! - Sheharyar
4
谢谢,这解决了我在升级到OS X 10.9.3后安装Ruby gem时遇到的类似问题。 - bayendor
在OS X安装10.9.3更新后,出现了这个问题,我使用磁盘工具中的“修复磁盘权限”功能解决了它。谢谢! - albertogg
1
@Wazery先生,非常感谢您。我已经查看了4个主题,问题得到了解决。我已经为您点赞,并将您的答案发布到其他主题中。 - FastSolutions
1
不错 :) 通过GUI做这么简单的事。我在CLI中四处搜索都快疯了(找不到任何可写入的文件)。 - Ilyes512
显示剩余7条评论

39

尝试使用-R(递归)来运行您的chmod命令:

chmod -R o-w /usr/local/

6
谢谢,chmod命令对我没用,但我在磁盘工具中修复了磁盘权限,问题得到解决。 - user2448263
1
修复磁盘工具对我也起作用了。谢谢。 :) - corysimmons
@CorySimmons:可以说一下你的OSX版本吗?(在我的情况下,(Snow Leopard或Lion,我无法回忆起发生错误时的具体时间),当我遇到这个错误时,它就无法工作了。) - Denis de Bernardy
1
我尝试了磁盘工具方法,但没有成功。然后我尝试了@Denis在这里提到的方法。那对我有用。谢谢。 - T J

15

关于警告

... warning: Insecure world writable dir /usr in PATH, mode 040777
... warning: Insecure world writable dir /usr in PATH, mode 040777

他们告诉你目录 /usr(而不是 /usr/local)是开放写入的。解决方法:运行命令 chmod -R go-w /usr

错误信息为:

... `load': /Users/yassine/treebook/app/models/user.rb:12: syntax error, unexpected keyword_end (SyntaxError)

你的user.rb文件的第12行有一个额外的end关键字。


1
非常感谢!我现在可以启动服务器了,chmod命令对我没有用,但我在磁盘工具中修复了磁盘权限,问题得到解决。user.rb文件中有一个额外的逗号导致了其他错误。 - user2448263
在“chmod -R go-w /usr”中,“go”是什么意思? - Incerteza
1
@AlexanderSupertramp,“go” 表示群组和其他用户,更多详细信息请参见“man 1 chmod”。 - toro2k

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接