Moncef Belyamani

Coding, productivity, and Mac automation tutorials for beginners and beyond.

How to Install Xcode, Homebrew, Git, RVM, Ruby & Rails on Snow Leopard, Lion, Mountain Lion, and Mavericks

This tutorial was last updated on September 29, 2014.

After following many outdated and incomplete instructions for setting up a web development environment on a Mac (back in March 2012), and spending a lot of time finding solutions to the problems I encountered along the way, I decided to put together this detailed tutorial.

Over time, as tools have improved, and with new releases of OS X, I’ve updated this tutorial. With Mavericks, setting up a development environment on a Mac with Apple’s standalone Command Line Tools, Homebrew, Git, RVM, Ruby, and Rails is a fairly stress-free process that’s no longer fraught with the issues from two years ago.

I started with a clean system, and the following are the steps that worked for me. If you run into an issue, or find an error in this tutorial, please let me know and I’ll update it.

Click on your OS X version below to get started:

Historical Background

Up until February 2012, the only way you could get the Command Line Tools required for web development was via the full Xcode package, which is almost 2 GB in size. Since then, Apple started offering the Command Line Tools (CLT) as a separate, much smaller download (~118MB), which benefits those who don’t plan on writing Mac or iOS apps.

There is also a third-party option, the osx-gcc-installer by Kenneth Reitz, that supports both Snow Leopard and Lion. However, it is not updated as often as the official Apple tools, and I personally ran into issues with it on Lion.

When I tried Apple’s CLT for Lion back in March 2012, they weren’t compatible with Homebrew:

1
2
3
Warning: Your Xcode is configured with an invalid path.
You should change it to the correct path. Please note that there is no correct
path at this time if you have *only* installed the Command Line Tools for Xcode.

As of August 6, 2012, the issue above is no longer present with the latest CLT for Mountain Lion, and I believe that’s the case on Lion as well, but I haven’t confirmed that yet. Until I do, I recommend getting the CLT from Xcode if you’re on Lion, as explained in this tutorial.

Step 1: Download and Install the Command Line Tools (via Xcode or the standalone installer)

Step 1 starts with the standalone CLT instructions, as that’s the easiest and fastest way to get started. Here’s a quick link to the Xcode instructions.

Installing the standalone Command Line Tools on Mavericks

Launch the “Terminal” application, which you can find in the “Utilities” folder in “Applications”.

Location of the Terminal app in Finder

Inside the Terminal window, copy and paste (or type) the following command, and press the return key on your keyboard:

1
xcode-select --install

You should see the pop up below on your screen. Click Install when it appears.

install xcode on mavericks step 1

Click Agree when the License Agreement appears:

install xcode on mavericks step 2

Your computer will then attempt to find the software, and then will start downloading it. The following popup will appear:

install xcode on mavericks step 4

Once the software is installed, click Done. That’s it! You’re now ready to go to Step 2.

install xcode on mavericks step 5

Installing the standalone Command Line Tools on Mountain Lion

Go to http://developer.apple.com/downloads and sign in with your Apple ID (the same one you use for iTunes and app purchases).

sign in to developer.apple.com

Search for “command line tools” (in the search field on the left), then click on the latest version of “Command Line Tools (OS X Mountain Lion) for Xcode,” and click on the the .dmg link to download it.

command line tools for mountain lion

Once the .dmg has finished downloading, double-click on it (if it didn’t already open automatically). This will mount the disk image and open a window in your Finder that looks like this:

command line tools package installer for mountain lion

Double-click on the “Command Line Tools (Mountain Lion).mpkg” installer and go through the installation. Once the CLT are installed, go to Step 2.

Installing Xcode on Lion or Mountain Lion

Click on this link to Xcode on the Mac App Store, then click on “View in Mac App Store.”

view in mac app store

It should automatically launch the “App Store” app on your Mac and take you the Xcode page. Click on the “Free” button, then click on “Install App.”

Once the installation is complete, go to your Applications folder and double-click on Xcode, then install any required components if asked to.

install mobile component

Go to Xcode’s Preferences via the menu bar, or by pressing the command and comma keys.

Go to Xcode Preferences

Click on the “Downloads” icon, then click on the “Install” button next to “Command Line Tools.”

Install Command Line Tools

When prompted to log in, you should be able to use the same email and password you use for iTunes and app purchases. Once the Command Line Tools are installed, you can quit Xcode and move on to Step 2.

IMPORTANT NOTE: If you upgraded to Mountain Lion from Lion, and you already had Xcode installed on Lion, and you updated to Xcode 4.4 and updated the Command Line Tools while still on Lion, you will have to go back to Xcode and download the Command Line Tools again after upgrading to Mountain Lion.

Snow Leopard Instructions

UPDATE: A kind reader (P. Martin) pointed out that the Xcode 4.2 download for Snow Leopard is only available to those registered in the $99/year developer program. I confirmed that the latest version of Xcode for Snow Leopard available to me while signed in with a free account is 3.2.6. I have not tested this setup with Xcode 3.2.6, but I would love to hear from you if you have. Otherwise, I recommend that you upgrade to Lion, Mountain Lion or Mavericks.

Go to http://developer.apple.com/downloads and sign in with your Apple ID (the same one you use for iTunes and app purchases).

If you are part of the $99/year Apple developer program, search for “xcode 4.2” (in the search field on the left), then click on “Xcode 4.2 for Snow Leopard,” and click on the .dmg link to download it.

Otherwise, search for “xcode 3.2”, then click on “Xcode 3.2.6 and iOS SDK 4.3 for Snow Leopard,” and click on the .dmg link to download it. As mentioned at the beginning of this section, I have not tested this tutorial with Xcode 3.2.6, so I would recommend that you upgrade to Lion, Mountain Lion or Mavericks.

Download Xcode 4.2 for Snow Leopard

Once the .dmg has finished downloading, it should automatically mount the disk image and open a window in your Finder that looks like this:

Xcode package installer

Double-click on the “Xcode” package installer. Once the installer launches, make sure all the checkboxes are checked, as shown in the screenshot below:

Install Xcode

Click “Continue,” and go through the rest of the installation. If the installation fails, quit the installer, then run Software Update and install any updates that it finds.

run software update

If no new updates are available, restart your computer and try installing Xcode again. Once Xcode is successfully installed, you can move on to Step 2.

Step 2: Verify that GCC was installed

Launch the “Terminal” application, which you can find in the “Utilities” folder in “Applications”.

Location of the Terminal app in Finder

From now on, you will be copying and pasting (or typing) a lot of commands in Terminal. They will be formatted like so:

1
$ some command you will run

The “$” appears automatically at the end of the command prompt in Terminal after every command that you run. You will not be copying and pasting or typing the $, only what comes after it. After entering the command, you will press “return” to execute the command.

The first command we will run will serve to verify that GCC was successfully installed by either Xcode or the standalone CLT:

1
$ gcc --version

If all went well, you should see the GCC version in the output. It will show something like this:

1
i686-apple-darwin10-llvm-gcc-4.2 (GCC) 4.2.1

The exact output will differ depending on which version of OS X you’re on. Here are some screenshots from Lion, Mountain Lion, and Mavericks.

Lion:

checking gcc version in Terminal

Mountain Lion:

gcc version on mountain lion

Mavericks:

gcc version on mavericks

Step 3: Install Homebrew

Homebrew, “the missing package manager for OS X,” allows you to easily install hundreds of open-source tools. The full instructions are available on the Homebrew Wiki, but you should only need to run the command that’s listed at the bottom of the Homebrew site:

1
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Note that the command listed on the Homebrew site could change, so please make sure that what I have listed above is the same. If it isn’t, please let me know and I’ll update it.

Run the command, and follow the instructions when prompted, as highlighted in the screenshot below. Note that Terminal does not provide visual feedback when you type your password. Just type it slowly and press return.

install homebrew on mountain lion

Once the installation is successful, run the following command:

1
$ brew doctor

If you get Your system is ready to brew, you can move on to Step 4. Otherwise, continue reading to learn how to fix errors and warnings you might run into.

In many cases, Homebrew will provide helpful instructions for dealing with warnings and errors, and I usually follow those instructions. I’ve tried to cover the most common sources of warning and errors. If you run into an issue I haven’t mentioned, try looking it up in the Homebrew GitHub Issues, or Google the error message. If that doesn’t help, contact me and I’ll do my best to help you.

After you fix each issue, run brew doctor until you get Your system is ready to brew. Then go to Step 4.

Common Homebrew warnings and errors, and how to get rid of them

If you get Warning: /usr/bin occurs before /usr/local/bin, run the command below, as recommended by Homebrew:

1
$ echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.bash_profile

This command takes everything between the single quotes and adds it (>>) to a file called .bash_profile in your user’s root directory (~/). Every time you open a new Terminal window or tab, .bash_profile is called. The export PATH line tells your system to look in /usr/local/bin first. In Step 4, I explain why this is important.

Quit and relaunch Terminal, then run brew doctor once more. Your system should be ready to brew now.

If you get Warning: Experimental support for using Xcode without the "Command Line Tools", you probably upgraded from Lion to Mountain Lion but didn’t reinstall the Command Line Tools. See the important note in Step 1.

If you get Error: No such file or directory - /usr/local/Cellar, run the following command, which creates the /usr/local/Cellar directory:

1
$ sudo mkdir /usr/local/Cellar

sudo allows you to run commands as a user with higher access rights, which is why it prompts you for your password, and mkdir stands for “make directory.”

If you get /usr/local/etc isn't writable or Cannot write to /usr/local/Cellar or if it complains that any directories inside /usr/local aren’t writable, fix it with this command:

1
$ sudo chown -R `whoami` /usr/local

This makes you the owner of the /usr/local directory, in addition to all nested directories.

chown stands for “change owner,” the -R flag applies this to all nested files and directories, and whoami is a variable that represents your OS X username. You should copy and paste the command above as is.

To learn more about any Unix command, type man (for “manual”), followed by the command. For example:

1
$ man chown

If a manual is longer than a page long, it will display a : at the end to signify there is more to read. To display one additional line at a time, press return. To display an additional page at a time, press the space bar. To quit at any time, press q.

If you get Warning: Unbrewed dylibs were found in /usr/local/lib, or a warning about any type of unbrewed files or static libraries, you may need to delete them as suggested by Homebrew (unless you put them there on purpose, which is unlikely). You’ll have to delete each file it complains about one by one with the rm command. For example, to remove a file called libgd.2.0.0.dylib from /usr/local/lib, you would run this command:

1
$ rm /usr/local/lib/libgd.2.0.0.dylib

If you get Warning: Python is installed at /Library/Frameworks/Python.framework, or Warning: "config" scripts exist outside your system or Homebrew directories related to Python, it most likely means you installed Python with a tool other than Homebrew. If you think you might need this version of Python, then just ignore those warnings. Otherwise, run the command below to remove that version of Python, but read this thread first.

1
$ sudo rm -rf /Library/Frameworks/Python.framework

If you’re on Lion, you might get this:

1
2
3
4
5
6
7
8
9
10
Warning: Your Xcode is configured with an invalid path.
You should change it to the correct path. Please note that there is no correct
path at this time if you have *only* installed the Command Line Tools for Xcode.
If your Xcode is pre-4.3 or you installed the whole of Xcode 4.3 then one of
these is (probably) what you want:

    sudo xcode-select -switch /Developer
    sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer

DO NOT SET / OR EVERYTHING BREAKS!

This should fix it:

1
$ sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer

Run brew doctor to verify. Your system should be ready to brew now.

Step 4: Install Git

Git is the version control system of choice among many web developers. With Homebrew, installing Git is as easy as this:

1
2
$ brew update
$ brew install git

install git

Since we just installed Homebrew, we could have skipped brew update, but it’s a good habit to run it before installing anything with Homebrew because Homebrew is updated regularly.

Run brew doctor to make sure everything is still working. If you get Warning: /usr/bin occurs before /usr/local/bin, run the command below, as recommended by Homebrew:

1
$ echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.bash_profile

This command takes everything between the single quotes and adds it (>>) to a file called .bash_profile in your user’s root directory (~/). Every time you open a new Terminal window or tab, .bash_profile is called. The export PATH line tells your system to look in /usr/local/bin first. This is important because Xcode installs an older version of Git in /usr/bin, but we want to use the latest version that Homebrew installed in /usr/local/bin.

Quit and relaunch Terminal, then run brew doctor once more. Your system should be ready to brew now.

To verify:

1
$ which git

You should get /usr/local/bin/git.

Step 5: Configure Git with your Name and Email

1
2
$ git config --global user.name "Your Full Name"
$ git config --global user.email "Your Email Address"

Note that the email address you set above will be attached to every Git commit you make, so you might want to use a bogus email if you want to keep your email private. If you use GitHub, I think you’ll need to add that email address to your GitHub email settings. To learn more about Git, check out the various resources I’ve tagged with “git” on Pinboard.

Step 6: Install RVM with the latest Ruby (2.1.1) and Rails (4.1.0)

RVM stands for Ruby Version Manager, and is one of the most popular tools that allow you to install and manage multiple versions of Ruby and Rails on the same computer.

RVM has come a long way since I originally published this tutorial. As of March 30, 2013, you can now install the latest RVM, Ruby, and Rails in one step. However, because RVM installs documentation for every gem that Rails depends on, which takes forever, I recommend disabling documentation first:

1
$ echo "gem: --no-document" >> ~/.gemrc

Now you can install everything with one command. If you’re not interested in Rails, just remove --rails from the command below:

1
$ curl -L https://get.rvm.io | bash -s stable --rails --autolibs=enable

Read the RVM installation documentation to see all the different options you can use.

I verified this on a clean installation of Mountain Lion 10.8.3 and Mavericks 10.9.2, but I have not tested it on Snow Leopard or Lion.

This will take a few minutes, and once it’s done, quit and relaunch Terminal, then run this command:

1
$ type rvm | head -1

If you get rvm is a function, that means RVM was successfully installed. If not, go to the Troubleshooting section.

To make sure the latest versions of RVM, Ruby and Rails were installed, run the commands below:

For RVM

1
$ rvm -v

You should get rvm 1.25.25 or higher.

For Ruby

1
$ ruby -v

You should get ruby 2.1.1p76 or higher.

For Rails

1
$ rails -v

You should get Rails 4.1.0 or higher.

To make sure your system is still ready to brew:

1
$ brew doctor

If everything went well, you’re done! Your machine is now set up with the basic tools for web development.

If you run into any other issues, please let me know and I will do my best to help you. If you got any value out of my tutorial, I have more time-saving tips and tricks for you in my free newsletter. If you’re feeling really appreciative, you can also donate, which will automatically give you a discount for any paid courses I will release in 2014.

Troubleshooting

In some cases, brew doctor might show you this warning:

1
2
3
4
5
6
7
8
9
10
11
12
Warning: Some keg-only formula are linked into the Cellar.
Linking a keg-only formula, such as gettext, into the cellar with
`brew link <formula>` will cause other formulae to detect them during
the `./configure` step. This may cause problems when compiling those
other formulae.

Binaries provided by keg-only formulae may override system binaries
with other strange results.

You may wish to `brew unlink` these brews:

libxml2

Homebrew messages are generally very helpful and they let you know exactly what to do. In this case, it is telling you to fix the linking issue by running brew unlink, followed by the tools (or “brews”) that need to be unlinked. Here, there is only one tool that needs to be unlinked. Therefore, you should run this command:

1
brew unlink libxml2

If it listed more than one tool, you would add them to the command separated by a space, like so:

1
brew unlink tool1 tool2 tool3

Run brew doctor once more, and you should be ready to brew now.

How to load RVM into your shell session as a function

Run this command:

1
$ echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function' >> ~/.bash_profile

Just like the command we saw in Step 4, this adds everything between the single quotes to your .bash_profile, which ensures that every time you start a new Terminal session, you will be able to use all of RVM’s commands.

Now that .bash_profile has been modified, it needs to be reloaded. For initial RVM installations, the preferred way to do this is to quit and relaunch Terminal. Otherwise, you can use the following command:

1
$ source ~/.bash_profile

If all went well, you should see rvm is a function after you run this command:

1
$ type rvm | head -1

Next Steps

Once you start hacking away on your computer, you will most likely need to install more tools with Homebrew. Before you do, remember to always run brew update and brew doctor to make sure your system is still ready to brew. To upgrade your existing packages, run brew upgrade.

If you installed the full Xcode package, remember that when you update it via the Mac App Store, you might also need to update the Command Line Tools via Xcode’s Preferences. If you installed the standalone CLT, I recommend checking for a new version once a month or so.

If you followed this tutorial because you’re interested in Rails development, I recommend visiting Daniel Kehoe’s excellent RailsApps Project.

If you want to install another version of Ruby besides 2.1.1, follow the instructions below.

Installing other versions of Ruby, such as 1.9.3

Before you install a version of Ruby with RVM, you should make sure you have the latest version of RVM:

1
$ rvm get stable --autolibs=enable

Then run:

1
$ rvm install 1.9.3

To see all the versions of Ruby installed via RVM:

1
$ rvm list rubies

This output also lets you know which version is the default and which one is the current one in use.

To use a specific version (2.0.0 in the example below) and also set it as the default version for new shell sessions:

1
$ rvm use 2.0.0 --default

To verify:

1
$ ruby -v

The version should match that of the current Ruby in use.

Previous Notes

Installing Ruby on Snow Leopard and Lion is presumably as easy as on Mountain Lion, but I haven’t been able to verify that. The instructions below are based on my experience in 2012. I’ve left them here for reference but I’m not sure if they still apply. For example, running rvm requirements used to provide instructions specific to your environment, but now it tries to install all the requirements for you.

The screenshots below are examples of the kind of output rvm requirements would show. One is for Snow Leopard 10.6.8 with Xcode 4.2, and the other for Mountain Lion 10.8 with no Xcode:

configure rvm

didn't have to install libksba on mountain lion

According to the requirements, we must first install libksba. This applies to Snow Leopard, Lion and Mountain Lion.

We can do that easily with Homebrew, but first we should make sure it is up to date:

1
2
$ brew update
$ brew install libksba

Since Homebrew is updated regularly, it’s advisable to run brew update before installing anything with Homebrew.

Now we’re finally ready to install Ruby 1.9.3! If you’re on Snow Leopard, you need to add a flag to the command (as specified in the RVM requirements):

1
$ rvm install 1.9.3  --with-gcc=clang

install ruby 1.9.3

If you’re on Lion, you need to install automake first:

1
2
$ brew install automake
$ rvm install 1.9.3

Otherwise, you will get this error when installing Ruby 1.9.3:

1
rvm requires autoreconf to install the selected ruby interpreter however autoreconf was not found in the PATH.

rvm install 1.9.3 on lion

If you’re on Mountain Lion 10.8.2 with Xcode 4.5, you will need to run these commands first:

1
2
3
4
5
6
$ brew update
$ brew tap homebrew/dupes
$ brew install autoconf automake apple-gcc42
$ rvm pkg install openssl
$ rvm install 1.9.3 (or `rvm reinstall all --force` in case you had already installed ruby)
$ sudo ln -s /usr/local/bin/gcc-4.2 /usr/bin/gcc-4.2

The steps above are necessary for you to be able to install Ruby gems, such as Rails. Otherwise, you will run into errors such as these:

1
2
3
4
5
6
7
8
9
ERROR: Failed to build gem native extension

make: /usr/bin/gcc-4.2: No such file or directory

Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers

The compiler failed to generate an executable file

You have to install development tools first