如何安装 rails 并创建没有根访问权限的新应用程序?
How do I install rails and create a new application without root access?
我正在尝试在 Linux 机器上的 Rails 上安装 Ruby,位于我的主目录中(没有 root 访问权限)。我的 ruby 版本是 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 权限?
谢谢!
据我所知,Rails 上的 Ruby 应用程序默认需要 root 访问权限才能安装 gems。可能它可以配置,但有更简单的解决方案 - Ruby Version Manager 或类似的东西。
Rvm 在用户的主目录中安装 ruby 个 gem,安装 gem 不需要 root 访问权限。除了不必要的根 Rvm 允许在一个用户配置文件中 运行 不同的 Ruby 环境(例如不同的 Ruby 或 RoR 版本)。
看看如何在没有 root 访问权限的情况下安装 Rvm,例如 here, here or find it yourself
是也不是。
典型的开发环境是用 RVM(或 rbenv
,从未尝试过)设置的,并且完全包含在您的主文件夹中:Ruby interpreter (可能不止一个!),它的gems和配置。为此,您不需要根访问权限。
通过 RVM 安装 Ruby 时,您可能会收到安装从源代码编译 Ruby 所需的依赖项的提示。 那是一种情况。(事实证明,如果 sudo
不可用,这可能会失败,而且它可能是,所以 see this question for possible alternatives)
您可能偶尔需要 root 访问权限来安装开发库,这些开发库需要为某些 gem 编译 本机扩展。例如,对于 gem pg
,您将需要 libpq-dev
Debian 和衍生产品(Ubuntu、Mint 等)。虽然您可以尝试将源代码下载到您的主文件夹并将编译器指向那个方向,但这需要时间。 所以这是两种情况。
但没有给出 RVM...
在您的特定情况下,rails
已经很好地完成了工作:它生成了模板,只是未能 bundle install
模板的依赖项。它使用任何 gem 目录是 RubyGems 的默认目录。看到它是 /var/lib/gems/2.1.0
,我猜你正在使用系统范围的 Ruby。这对于开发来说并不理想,因为您可能希望在不同的解释器版本(甚至实现,例如 Rubinius)之间来回切换,使用版本管理器 限制到您的主文件夹。
并不是说您无能为力。尝试 cd
进入生成的文件夹并 运行:
bundle --help install
有很多选择,你看。 --path
甚至 --standalone
可能会在这里拯救你,它 覆盖 gem 安装路径并且 记住 事实上它被覆盖了,所以它知道在哪里寻找 gems.
无论如何,一旦设置了应用程序并解析和安装了依赖项,您就不需要 root 访问权限 运行 它(当然是在非特权端口上)或设置另一个应用程序,因为到那时已经安装了任何必要的系统范围的依赖项。
我正在尝试在 Linux 机器上的 Rails 上安装 Ruby,位于我的主目录中(没有 root 访问权限)。我的 ruby 版本是 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 权限?
谢谢!
据我所知,Rails 上的 Ruby 应用程序默认需要 root 访问权限才能安装 gems。可能它可以配置,但有更简单的解决方案 - Ruby Version Manager 或类似的东西。
Rvm 在用户的主目录中安装 ruby 个 gem,安装 gem 不需要 root 访问权限。除了不必要的根 Rvm 允许在一个用户配置文件中 运行 不同的 Ruby 环境(例如不同的 Ruby 或 RoR 版本)。
看看如何在没有 root 访问权限的情况下安装 Rvm,例如 here, here or find it yourself
是也不是。
典型的开发环境是用 RVM(或 rbenv
,从未尝试过)设置的,并且完全包含在您的主文件夹中:Ruby interpreter (可能不止一个!),它的gems和配置。为此,您不需要根访问权限。
通过 RVM 安装 Ruby 时,您可能会收到安装从源代码编译 Ruby 所需的依赖项的提示。 那是一种情况。(事实证明,如果 sudo
不可用,这可能会失败,而且它可能是,所以 see this question for possible alternatives)
您可能偶尔需要 root 访问权限来安装开发库,这些开发库需要为某些 gem 编译 本机扩展。例如,对于 gem pg
,您将需要 libpq-dev
Debian 和衍生产品(Ubuntu、Mint 等)。虽然您可以尝试将源代码下载到您的主文件夹并将编译器指向那个方向,但这需要时间。 所以这是两种情况。
但没有给出 RVM...
在您的特定情况下,rails
已经很好地完成了工作:它生成了模板,只是未能 bundle install
模板的依赖项。它使用任何 gem 目录是 RubyGems 的默认目录。看到它是 /var/lib/gems/2.1.0
,我猜你正在使用系统范围的 Ruby。这对于开发来说并不理想,因为您可能希望在不同的解释器版本(甚至实现,例如 Rubinius)之间来回切换,使用版本管理器 限制到您的主文件夹。
并不是说您无能为力。尝试 cd
进入生成的文件夹并 运行:
bundle --help install
有很多选择,你看。 --path
甚至 --standalone
可能会在这里拯救你,它 覆盖 gem 安装路径并且 记住 事实上它被覆盖了,所以它知道在哪里寻找 gems.
无论如何,一旦设置了应用程序并解析和安装了依赖项,您就不需要 root 访问权限 运行 它(当然是在非特权端口上)或设置另一个应用程序,因为到那时已经安装了任何必要的系统范围的依赖项。