【问题标题】:Bundle install: permission denied捆绑安装:权限被拒绝
【发布时间】:2014-01-27 13:46:08
【问题描述】:

上下文: 尝试学习rails/ruby。 使用 bitnami ubuntu ruby​​ stack VM (2.1) 作为开发环境。它是一个预装的虚拟机,详细信息here

问题: 创建一个新项目: rails new tp 哪个会自动运行bundle install,失败了

Installing sqlite3 (1.3.8) 
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

    /opt/bitnami/ruby/bin/ruby extconf.rb --with-sqlite3-dir=/opt/bitnami/sqlite 
checking for sqlite3.h... yes
checking for sqlite3_libversion_number() in -lsqlite3... yes
checking for rb_proc_arity()... yes
checking for sqlite3_initialize()... yes
checking for sqlite3_backup_init()... yes
checking for sqlite3_column_database_name()... no
checking for sqlite3_enable_load_extension()... yes
checking for sqlite3_load_extension()... yes
checking for sqlite3_open_v2()... yes
checking for sqlite3_prepare_v2()... yes
checking for sqlite3_int64 in sqlite3.h... yes
checking for sqlite3_uint64 in sqlite3.h... yes
creating Makefile

make "DESTDIR="
compiling database.c
compiling backup.c
compiling sqlite3.c
compiling statement.c
compiling exception.c
linking shared-object sqlite3/sqlite3_native.so

make "DESTDIR=" install
/bin/mkdir: cannot create directory `/opt/bitnami/ruby/lib/ruby/site_ruby/2.1.0/x86_64-linux/sqlite3': Permission denied
make: *** [.RUBYARCHDIR.-.sqlite3.time] Error 1


Gem files will remain installed in /home/bitnami/.bundler/tmp/3622/gems/sqlite3-1.3.8 for inspection.
Results logged to /home/bitnami/.bundler/tmp/3622/gems/sqlite3-1.3.8/ext/sqlite3/gem_make.out
An error occurred while installing sqlite3 (1.3.8), and Bundler cannot continue.
Make sure that `gem install sqlite3 -v '1.3.8'` succeeds before bundling.

当然它会因为权限被拒绝而失败,因为这些 gem 位于 root 管理的目录中,作为开发人员,我创建文件并以常规 bitnami 用户的身份执行我的工作, 当然。这包括使用 rails 程序和通过 IDE 使用该程序。 这些假设显然与 ruby​​stack 的设置或使用方式不一致。

问题
- 如果我的方法与堆栈假定的方法不同,那么假定的方法是什么?
-如果他们没有区别,为什么要创建一个新项目来做管理工作?
-我应该如何让这件事发挥作用?

【问题讨论】:

  • @majioa bitnami@linux:~/rp$ ls -al /opt/bitnami/ruby/lib/ruby/site_ruby/2.1.0/x86_64-linux/ 共 8 drwxr-xr-x 2根根 4096 Jan 3 11:58 。 drwxr-xr-x 4 root root 4096 Jan 3 11:58 .. -rw-r--r-- 1 root root 0 Jan 2 12:28 NOTEMPTY
  • 在主要帖子中,我提到那个地方确实来自 root 用户。相关的问题是,应该吗? /home/bitnami 不是 gem 的位置,因此这不会改变任何有关安装 gem 的内容。
  • 安装 rvm 时,rvm list 产生 # No rvm rubies installed yet. Try 'rvm help install'. 所以我假设使用系统 ruby​​ 并且使用 rvm 不会有任何帮助,不是吗?
  • BTW 运行 bundle install --path ~/gems 并没有真正的帮助。尽管它确实在该目录中安装(一些)gem,但有时捆绑器会尝试在同一目录中再次写入 /usr/bin/install: cannot create regular file /opt/bitnami/ruby/lib/ruby/site_ruby/2.1.0/x86_64-linux/atomic_reference.so': Permission denied
  • 非常感谢!到目前为止,我使用了sudo bundle install,但以后可能会引发权限问题。

标签: ruby-on-rails bundler bitnami gemset


【解决方案1】:

请确保:

ls -l /opt/bitnami/ruby/lib/ruby/site_ruby/2.1.0/x86_64-linux/

说文件夹属于你,而不是root:root。如果权限是 用户,则无法创建文件夹,因此修复它只需:

sudo chown bitnami:bitnami /home/bitnami/. -R

我强烈建议您使用,以免使用 操作。执行以下操作:

  1. 为了将 system ruby​​ 一起使用,只需通过执行来获取它:

    rvm mount /path/to/system/ruby
    
  2. 然后创建一个 gemset:

    rvm gemset create bitnami
    
  3. 并使用它:

    rvm gemset use bitnami
    
  4. 将所有 gem 更新或安装到指定的 gemset 中,但不要使用 进行操作,只需:

    bundle install
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-11
    • 1970-01-01
    • 2020-08-27
    • 2015-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多