Errno::EACCES:通过 gitlab 安装 gem 时权限被拒绝
Posted
技术标签:
【中文标题】Errno::EACCES:通过 gitlab 安装 gem 时权限被拒绝【英文标题】:Errno::EACCES: Permission denied when installing gems via gitlab 【发布时间】:2012-12-11 11:44:47 【问题描述】:我正在尝试设置 gitlab,从而使用 sudo 从另一个用户帐户安装一些 gem,
但我不断收到Permission denied
错误。
sudo -u gitlab -H bundle install --deployment --without development test postgres
> Using ... ( a lot of successful gems there )
> Using pygments.rb (0.3.2) from https://github.com/gitlabhq/pygments.rb.git (at master)
> Errno::EACCES: Permission denied - pygments.rb-0.3.2.gem
> An error occurred while installing pygments.rb (0.3.2), and Bundler cannot continue.
> Make sure that `gem install pygments.rb -v '0.3.2'` succeeds before bundling.\
sudo -u gitlab -H gem install pygments.rb -v '0.3.2'
> Successfully installed pygments.rb-0.3.2
> 1 gem installed
> Installing ri documentation for pygments.rb-0.3.2...
> Installing RDoc documentation for pygments.rb-0.3.2...
# no matter how many times I run this command, I always get the same output
# as if the gem installation doesn't stick
# I've tried to chmod
chmod 777 -R /usr/local/lib/ruby
# then Again
sudo -u gitlab -H bundle install --deployment --without development test postgres
# same result, Errno::EACCES: Permission denied - pygments.rb-0.3.2.gem
【问题讨论】:
您是否尝试过su - gitlab
以该用户身份登录,然后运行命令以及何时完成注销?可能会更容易。
是的。我做到了。结果相同 (Errno::EACCES: Permission denied - pygments.rb-0.3.2.gem
)
您可以尝试将项目本地目录用于 bin 和 gem 目录。我现在在我所有的项目上都这样做,例如cd /home/gitlab/gitlab
然后bundle install --binstubs --path vendor
(作为 gitlab)和所有的 gem 进入 ./vendor,所有的 exe 进入 ./bin,相对于项目根目录。
嗯,它可以安装到vendor
子目录中。因此我猜最初的问题是当前目录的权限
【参考方案1】:
我做了以下事情并让事情正常进行。
我更改了 Gemfile 的权限。即chmod 755 Gemfile
然后我做了一个sudo bundle install
。这让一切正常,所有的宝石都安装好了。然后我可以通过rails server
启动我的应用程序
【讨论】:
【参考方案2】:虽然亚历克斯的回答是正确的,但这也对我有用
sudo chown -R git:git /path/to/external/volume
我正在使用 Digital Ocean 的 Gitlab Image
【讨论】:
【参考方案3】:确保您的 Gemfile.lock
归运行该命令的用户所有
【讨论】:
【参考方案4】:这是安装包的 ruby-2.0.0-p195 rvm 中的权限错误
你在使用 rvm 吗?你试过 chmod 和 sudo 吗?
chmod 755 (or 777) ~/.rvm/gems/ruby-2.0.0-p195/build_info/
【讨论】:
【参考方案5】:Lain 建议尝试将捆绑包安装到另一个子目录中。解决后,很明显问题出在当前目录中的权限上。
执行chown -R gitlab:gitlab .
已解决问题。
在 gitlab 安装指南中,我们的故事之前有一个 gem install
命令以 root 身份运行,并且可能 gemfile
或其他文件在此期间发生了权限更改。
【讨论】:
永远不要更改所有目录和子目录中的所有权限或所有者,除非您真的知道更改的内容。以上是关于Errno::EACCES:通过 gitlab 安装 gem 时权限被拒绝的主要内容,如果未能解决你的问题,请参考以下文章
(Errno::EACCES) 权限被 pygments.rb 拒绝
Errno::EACCES:在 Rails 上创建新应用程序 ruby 时权限被拒绝
“Errno::EACCES ...权限被拒绝”运行指南针手表
Rails 4.2.0 - Errno::EACCES(权限被拒绝@dir_s_mkdir - /files)
Errno::EACCES(权限被拒绝@dir_s_mkdir
Yeoman 错误:“Errno::EACCES on line ["897"] of C: Permission denied”