Can gem install be configured to install executables outside /usr/bin/ by default?
See http://www.rubygems.org/read/chapter/11 and specify a ~/.gemrc
which defines a gemhome variable.
For example:
gemhome: /usr/local/rubygems
You can also place this file in /etc/gemrc
Alternatively you can set the GEM_HOME
env-variable:
$ export GEM_HOME=/tmp/gemtest
$ gem install bundler
$ ls /tmp/gemtest/bin/
bundle
Update (10 years later):
Andrey Rodionov below suggest using
gem: --bindir /usr/bin
Can't install gems on OS X El Capitan
Disclaimer: @theTinMan and other Ruby developers often point out not to use sudo
when installing gems and point to things like RVM. That's absolutely true when doing Ruby development. Go ahead and use that.
However, many of us just want some binary that happens to be distributed as a gem (e.g. fakes3
, cocoapods
, xcpretty
…). I definitely don't want to bother with managing a separate ruby. Here are your quicker options:
Option 1: Keep using sudo
Using sudo
is probably fine if you want these tools to be installed globally.
The problem is that these binaries are installed into /usr/bin
, which is off-limits since El Capitan. However, you can install them into /usr/local/bin
instead. That's where Homebrew install its stuff, so it probably exists already.
sudo gem install fakes3 -n/usr/local/bin
Gems will be installed into /usr/local/bin
and every user on your system can use them if it's in their PATH.
Option 2: Install in your home directory (without sudo)
The following will install gems in ~/.gem
and put binaries in ~/bin
(which you should then add to your PATH
).
gem install fakes3 --user-install -n~/bin
Make it the default
Either way, you can add these parameters to your ~/.gemrc
so you don't have to remember them:
gem: -n/usr/local/bin
i.e. echo "gem: -n/usr/local/bin" >> ~/.gemrc
or
gem: --user-install -n~/bin
i.e. echo "gem: --user-install -n~/bin" >> ~/.gemrc
(Tip: You can also throw in --no-document
to skip generating Ruby developer documentation.)
How to install a gem or update RubyGems if it fails with a permissions error
You don't have write permissions into the /Library/Ruby/Gems/1.8 directory.
means exactly that, you don't have permission to write there.
That is the version of Ruby installed by Apple, for their own use. While it's OK to make minor modifications to that if you know what you're doing, because you are not sure about the permissions problem, I'd say it's not a good idea to continue along that track.
Instead, I'll strongly suggest you look into using either rbenv or RVM to manage a separate Ruby, installed into a sandbox in your home directory, that you can modify/fold/spindle/change without worrying about messing up the system Ruby.
Between the two, I use rbenv, though I used RVM a lot in the past. rbenv takes a more "hands-off" approach to managing your Ruby installation. RVM has a lot of features and is very powerful, but, as a result is more intrusive. In either case, READ the installation documentation for them a couple times before starting to install whichever you pick.
Related Topics
How to Convert JSON to a Hash, Search for and Change a Value
Combine 2 Objects and Sort Rails 5
Multiple Applications Using a Single Code Base in Ruby
Ruby Equivalent of PHP's ".=" (Dot Equals) Operator
How to Use Private Submit to Hide from Profile
Rvm Ruby with Tk Installation (Osx)
How to Disable Wait Time for Watir
Does the Order of Gems in Your Gemfile Make a Difference
Trying to Get Content Inside Cdata Tags in Xml File Using Nokogiri
Param Is Missing or the Value Is Empty
How Does Activerecord Define Methods Compared to Attr_Accessor
Error Loading Active Record Gem with Sinatra App Using Rvm
Rspec Commandline Variable Input
Differencebetween Ruby's 'Open-Uri' and 'Net:Http' Gems
Regular Expression "Empty Range in Char Class Error"