Reputation: 25120
I have installed ruby 1.9.3 using hombrew
brew install ruby
But default 1.8.7 is still used. How can I switch osx to use 1.9.3 as default ruby?
Upvotes: 110
Views: 159240
Reputation: 1
In my case,
brew link --overwrite ruby -f
doesn't work, it can NOT overwrite all links(maybe quite shouldn't).
If you take a look at the output of that command:
Warning: Refusing to link macOS provided/shadowed software: ruby
If you need to have ruby first in your PATH, run:
echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.zshrc
For compilers to find ruby you may need to set:
export LDFLAGS="-L/usr/local/opt/ruby/lib"
export CPPFLAGS="-I/usr/local/opt/ruby/include"
For pkg-config to find ruby you may need to set:
export PKG_CONFIG_PATH="/usr/local/opt/ruby/lib/pkgconfig"
just adjust the precedence as above answers say, and more if you use zsh I suggest that run this command instead:
echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.zshenv
To intergrate with gcc or g++, clang
and so on, just set the LDFLAGS and CPPFLAGS
in your ~/.zshenv
too.
Upvotes: 0
Reputation: 377
brew install ruby
This will install the latest version of ruby, now you want to set it as default use for example in my case:
echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.zshrc
then run
source ~/.zshrc
this will set it as default in the profile
now you can check the version of ruby
ruby -v
Upvotes: 6
Reputation: 51
After seeing Craig Wayne's answer I thought maybe I had missed a warning when installing ruby with Homebrew. So I reinstalled it with brew reinstall [email protected]
and there it was:
==> Caveats
By default, binaries installed by gem will be placed into:
/usr/local/lib/ruby/gems/2.7.0/bin
You may want to add this to your PATH.
[email protected] is keg-only, which means it was not symlinked into /usr/local,
because this is an alternate version of another formula.
If you need to have [email protected] first in your PATH, run:
echo 'export PATH="/usr/local/opt/[email protected]/bin:$PATH"' >> ~/.zshrc
For compilers to find [email protected] you may need to set:
export LDFLAGS="-L/usr/local/opt/[email protected]/lib"
export CPPFLAGS="-I/usr/local/opt/[email protected]/include"
For pkg-config to find [email protected] you may need to set:
export PKG_CONFIG_PATH="/usr/local/opt/[email protected]/lib/pkgconfig"
So the solution for me was adding /usr/local/opt/[email protected]/bin:
to the beginning of PATH in ~/.zshrc
.
Upvotes: 0
Reputation: 5100
Ruby was installed by Homebrew at /usr/local/opt/ruby
. So, we need to add this path to bash
or Zsh
.
# Type this to find out which shell you're using (e.g., bash, Zsh)
echo $SHELL
# If you're using Bash (e.g., echo $SHELL returns /bin/bash)
echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.bash_profile
# If you're using Zsh
echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.zshrc
Then, source the file
# E.g., if you're using bash
source ~/.bash_profile
Finally, verify ruby's version
ruby -v
Upvotes: 11
Reputation: 41
SHORT: Do note what you want to change it for.
If you're on OS X and trying to use Ruby for something like Jekyll, then don't use homebrew because that's what Apple is using for Ruby for and it might not be good to use if you're not sure what you're doing. Instead, use rbenv or RVM.
LESS SHORT: I was trying to switch from the default version to an updated version (from 2.0) to use Jekyll because it required Ruby version 2.2.5 and above. I updated it and version 2.5 was installed, but when I checked "ruby -v", it was still 2.0. Once I finally got around to changing the default version, I wasn't able to install the package I needed because I didn't have write permission. For example, if you come across something like this, then you probably are having the same problem
$ gem install jekyll bundler
ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.
Upvotes: 4
Reputation: 5068
SHORT ANSWER:
after installing ruby via homebrew just do this:
brew link --overwrite ruby
and restart or reopen your Terminal
LONG ANSWER
So I did a normal install of ruby using homebrew
brew install ruby
that installed fine BUT it was still using the system's default ruby. which I verified by doing:
which ruby
#/usr/bin/ruby
So as per Matthew Rudy's suggestion, I checked the order of my /etc/paths, and all was good.
Then I decided to do:
which -a ruby
#/usr/bin/ruby
#usr/local/bin/ruby
so nothing was broken as such. tried to reinstall ruby again using the homebrew method, and then i found it.
Homebrew mentioned:
Warning: ruby-2.3.1 already installed, it's just not linked
so had to do:
brew link --overwrite ruby
Upvotes: 129
Reputation: 281
In OSX you can change the path using:
sudo nano /etc/paths
And then add a path or change the order.
Upvotes: 0
Reputation: 10204
I had similar situation. I installed ruby using Homebrew. which -a ruby
gave me the following output:
#usr/local/bin/ruby
#/usr/bin/ruby
Which means that newly installed version should have been used, but ruby --version
still returned the old system version.
I quit terminal (Cmd+Q), and after restart ruby --version
returned the correct version. So make sure you restart terminal after installing before trying any other (potentially unnecessary) fixes.
Upvotes: 10
Reputation: 164
Just as an alternative approach for anyone else looking for an answer to this - you can set an alias in your .bash_profile e.g
ruby="/usr/local/bin/ruby"
this is how i got around the issue
Upvotes: -2
Reputation: 16844
I suggest you take a look at rvm.
You can then set it as default with rvm use 1.9.3 --default
But if you are happy with your homebrew install.
Then just change the precedence of directories in the PATH
Here is my /etc/paths
# homebrews should always take precedence
/usr/local/bin
# the default stack
/usr/bin
/bin
/usr/sbin
/sbin
This is important generally for homebrew, else the system version of git, ruby, pg_admin,... will all be used instead of the brew version.
if you say which -a ruby
you'll see all the installed rubies, and the precedence in the PATH
eg.
$ which -a ruby
/Users/matthew/.rvm/rubies/ruby-1.9.3-p0/bin/ruby
/Users/matthew/.rvm/bin/ruby
/usr/bin/ruby
/etc/paths
Instead you need to check which of .profile
, .bashrc
, or .bash_login
is being loaded in your shell, and just add /usr/local/bin
to your path.
For me, I only have a .profile
. You can create that file if none of those files already exist in your home directory.
# homebrews should always take precedence
export PATH=/usr/local/bin:$PATH
Upvotes: 96
Reputation: 4285
If you'd like to use homebrew to install 1.9.3, you can follow these steps:
$ brew update
$ brew install rbenv
$ brew install ruby-build
Once you have rbenv and ruby-build installed, you can run the following command to get Ruby 1.9.3 installed.
$ rbenv install 1.9.3-p125
Now if you’d like to use 1.9.3 by default, you can run the following command:
$ rbenv global 1.9.3-p125
Upvotes: 49