简体   繁体   中英

Local gem repository? Install a ruby gem without 'gem'?

Is it possibile to have something like a 'local' gem repository for Ruby?

I'm working on a custom Linux distribution without admin rights. Ruby is installed on the machine (v.1.8.7) but apparently no 'gem' or 'bundle' or whatever are installed. I need to use some Ruby gems like Nokogiri.

Is it possible to use Ruby gems without installing them through gem install ?

Yes. Any gem can be used standalone. You just have to either download the source from github, or download the gem and extract its contents manually.

After you've done that you have to add the lib folder of the gem into the load path ( $: ) of Ruby. For example:

$:.unshift(File.expand_path("nokogiri-1.6.1/lib"))
require 'nokogiri'

Assuming you are running Ruby in the current directory and the Nokogiri source is in the folder nokogiri-1.6.1 .

But remember that first you have to do the same with all Nokogiri prerequisites. Ie all the libraries Nokogiri depends on.

Another option, which is what I would do, is to install RubyGems in your home directory. That can get a little bit tricky though, but it's possible by downloading the RubyGems package and running something like:

ruby setup.rb --prefix=/home/my_user_name/rubygems

Then you need to set up the ENV variables GEM_HOME and GEM_PATH to point to a location in your home directory where you want all your gems to be installed. See " What's the difference between GEM_HOME and GEM_PATH? " for a description of what they do.

You will also need to add something like /home/my_user_name/rubygems/bin to your PATH so that the gem command can be found by the shell.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM