【问题标题】:How do I install rails and create a new application without root access?如何在没有 root 访问权限的情况下安装 rails 并创建新应用程序?
【发布时间】:2016-03-09 12:39:06
【问题描述】:

我正在尝试在我的主目录中的 Linux 机器上安装 Ruby on Rails(没有 root 访问权限)。我的红宝石版本是ruby 2.1.5p273 (2014-11-13) [x86_64-linux-gnu]。到目前为止,我能够:

$ gem install --user-install rails

显然已将rails 安装到~/.gem/ruby/2.1.0/bin/rails

$ ./.gem/ruby/2.1.0/bin/rails --version
Rails 4.2.6

然后它无法创建应用程序:

$ ~/.gem/ruby/2.1.0/bin/rails new myapp
  create  
  create  README.rdoc
  create  Rakefile
  create  config.ru
  create  .gitignore
  create  Gemfile
  create  app
  create  app/assets/javascripts/application.js
  create  app/assets/stylesheets/application.css
  create  app/controllers/application_controller.rb
  create  app/helpers/application_helper.rb
  create  app/views/layouts/application.html.erb
  create  app/assets/images/.keep
  create  app/mailers/.keep
  create  app/models/.keep
  create  app/controllers/concerns/.keep
  create  app/models/concerns/.keep
  create  bin
  create  bin/bundle
  create  bin/rails
  create  bin/rake
  create  bin/setup
  create  config
  create  config/routes.rb
  create  config/application.rb
  create  config/environment.rb
  create  config/secrets.yml
  create  config/environments
  create  config/environments/development.rb
  create  config/environments/production.rb
  create  config/environments/test.rb
  create  config/initializers
  create  config/initializers/assets.rb
  create  config/initializers/backtrace_silencers.rb
  create  config/initializers/cookies_serializer.rb
  create  config/initializers/filter_parameter_logging.rb
  create  config/initializers/inflections.rb
  create  config/initializers/mime_types.rb
  create  config/initializers/session_store.rb
  create  config/initializers/wrap_parameters.rb
  create  config/locales
  create  config/locales/en.yml
  create  config/boot.rb
  create  config/database.yml
  create  db
  create  db/seeds.rb
  create  lib
  create  lib/tasks
  create  lib/tasks/.keep
  create  lib/assets
  create  lib/assets/.keep
  create  log
  create  log/.keep
  create  public
  create  public/404.html
  create  public/422.html
  create  public/500.html
  create  public/favicon.ico
  create  public/robots.txt
  create  test/fixtures
  create  test/fixtures/.keep
  create  test/controllers
  create  test/controllers/.keep
  create  test/mailers
  create  test/mailers/.keep
  create  test/models
  create  test/models/.keep
  create  test/helpers
  create  test/helpers/.keep
  create  test/integration
  create  test/integration/.keep
  create  test/test_helper.rb
  create  tmp/cache
  create  tmp/cache/assets
  create  vendor/assets/javascripts
  create  vendor/assets/javascripts/.keep
  create  vendor/assets/stylesheets
  create  vendor/assets/stylesheets/.keep
     run  bundle install
There was an error while trying to write to `/var/lib/gems/2.1.0`. It is likely that you need to
grant write permissions for that path.
     run  bundle exec spring binstub --all
bundler: command not found: spring
Install missing gem executables with `bundle install`

rails 需要 root 访问权限吗??

谢谢!

【问题讨论】:

    标签: ruby-on-rails linux ruby-on-rails-4 rubygems bundler


    【解决方案1】:

    是和否。

    一个典型的开发环境是用RVM(或rbenv,从未尝试过)设置的,并且完全包含在你的主文件夹中:Ruby解释器(可能不止一个!),它的gems配置。为此,您不需要 root 访问权限。

    通过 RVM 安装 Ruby 时,您可能会收到安装从源代码编译 Ruby 所需的依赖项的提示。 这是一种情况。(事实证明,如果sudo 不可用,这可能会失败,所以see this question for possible alternatives 可能会失败)

    可能有时需要 root 访问权限来安装开发库,以便为某些 gem 编译 本机扩展。例如,对于 gem pg,您需要在 Debian 和衍生产品(Ubuntu、Mint 等)上使用 libpq-dev。虽然您可以尝试将源下载到您的主文件夹并将编译器指向该方向,但这需要时间。 这是两种情况。


    但没有 RVM...

    在您的具体情况下,rails 已经完成了这项工作:它生成了模板,但它只是未能bundle install 模板的依赖项。它使用 RubyGems 的默认 gem 目录。看到它是 /var/lib/gems/2.1.0我猜你正在使用系统范围的 Ruby。这对于开发来说并不理想,因为您可能希望在不同的解释器版本(甚至是 Rubinius 等实现)之间来回切换,使用版本管理器限制在您的主文件夹中。

    并不是说你无能为力。尝试cding 进入生成的文件夹并运行:

    bundle --help install
    

    有很多选择,你看。 --path 甚至 --standalone 可能会在这里救你,它覆盖 gem 安装路径并记住它被覆盖的事实,所以它知道在哪里寻找 gem。


    无论如何,一旦设置了应用程序并解决并安装了依赖项,您将不需要 root 访问权限来运行它(当然是在非特权端口上)或设置另一个应用程序,因为任何必要的系统 -届时将安装广泛的依赖项。

    【讨论】:

    • 不是提示,是错误!运行rvm install 2.2 --verify-downloads 0 --disable-binary 后,得到:Running 'apt-get --quiet --yes update' would require sudo, but 'sudo' is not found!。删除 --disable-binary 选项也无济于事。 :(
    • @STF 你用的是什么发行版?
    • 这是最新的 Debian 稳定版 (Jessie)。
    • @STF 这是一个全新的问题,probably a duplicate
    • 这似乎有效:~/.gem/ruby/2.1.0/bin/bundle install --path=~/.gem/(在应用程序目录中)(无 rvm)。
    【解决方案2】:

    据我所知,Ruby on Rails 应用程序默认需要 root 访问权限才能安装 gem。可能它可以配置,但有更简单的解决方案 - Ruby Version Manager 或类似的东西。

    Rvm 将 ruby​​ gems 安装在用户的主目录中,并且 gems 安装不需要 root 访问权限。除了不必要的 root Rvm 允许在一个用户配置文件中运行不同的 Ruby 环境(例如不同的 Ruby 或 RoR 版本)。

    看看如何在没有 root 访问权限的情况下安装 Rvm,例如 hereherefind it yourself

    【讨论】:

      猜你喜欢
      • 2013-05-29
      • 1970-01-01
      • 1970-01-01
      • 2012-06-16
      • 2011-11-19
      • 2013-02-23
      • 1970-01-01
      • 1970-01-01
      • 2015-11-12
      相关资源
      最近更新 更多