These are instructions for compiling and installing 64-bit Ruby, Rubygems, and Ruby on Rails on Mac OS X 10.6, Snow Leopard.
The benefits of manually building a copy of Ruby in
/usr/local are detailed here and here.
Before following these instructions, you will need:
Mac OS X 10.6 Snow Leopard
The latest Xcode Tools (from the Snow Leopard DVD or downloaded from Apple — the 10.5 version won’t work)
Confidence running UNIX commands using the Terminal
If you want to learn more about UNIX and the command line, check out my PeepCode screencast on this topic.
Step 1: Set the PATH
Launch Terminal.app from the
The first thing we’ll do is set your shell’s PATH variable. The PATH variable determines where your system searches for command-line programs. You’ll need to set it so that it can find the new apps you’re about to install. Using the editor of your choice, create and edit a file in your home directory named
.profile (note the “.” preceding the filename).
If you’re using TextMate like you should be and have installed the UNIX
mate command, then you can create and start editing the file like this:
To the end of this file, add the following line:
Close and save the file and run this command to load the new setting into your current shell:
To verify that you’ve updated your path, enter the following command:
You should see
/usr/local/bin at the beginning of the line returned by the system.
Step 2: Download
We’re going to create a folder to contain the files we’re about to download and compile. If you want, you can delete this folder when you’re done, but keeping it around makes it easier to re-install (or uninstall) these apps later.
Make the new folder:
Download Ruby and Rubygems:
curl -O ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p174.tar.gz
curl -O http://files.rubyforge.vm.bytemark.co.uk/rubygems/rubygems-1.3.5.tgz
Step 3: Compile and Install
tar xzvf ruby-1.8.7-p174.tar.gz
./configure --enable-shared --enable-pthread CFLAGS=-D_XOPEN_SOURCE=1
sudo make install
To verify that Ruby is installed and in your path, just type:
You should see:
If you do, this means you now have a super-fast, 64-bit version of Ruby ready to go. If you saw something different, you haven’t set your path correctly. Go back and try again.
Compile and install RubyGems:
tar xzvf rubygems-1.3.5.tgz
sudo /usr/local/bin/ruby setup.rb
sudo gem install rails
If you use MySQL, you can now install the MySQL gem. You’ll need to know the location of your MySQL installation, which is typically
/usr/local/mysql. Install the gem like this:
sudo gem install mysql -- --with-mysql-dir=/usr/local/mysql
Congratulations, you now have a custom-built Ruby, RubyGems, and Rails configuration.
Posted 3 years, 8 months ago at 11:28 am. Add a comment
Last Friday, Apple released their new OS version: Snow Leopard. Upgrading to SL is very easy and even gives you back quite a lot of HD space. However a few things have changed in the OS and you need to understand what is going on so you won’t get frustrated with the updating process and won’t be wasting time fighting with the system.
The key change for us Ruby developers, is the fact that, in Snow Leopard, all the interpreted languages (including Ruby) are now running in 64-bit by default (obviously, only if you have a 64-bit machine). For pure Ruby applications and libraries this shouldn’t pose any problems. But if you are migrating from a Leopard environment where you compiled C extensions for 32-bit only, these gems won’t properly load in Snow Leopard. Same thing goes for libraries you might have compiled in 32-bit mode and that you might want to use on your migrated system.
Something else you need to know: Snow Leopard now comes bundled with Ruby 1.8.7 instead of 1.8.6. This should not be a problem since Rails has been running on Ruby 1.8.7 for a long time and Rails 3 will require Ruby 1.8.7 and prefer Ruby 1.9.2.
Here is a quick rundown of common tasks you might have to do to migrate properly.
Install Snow Leopard developer tools
On the Snow Leopard DVD, under “Optional Installs”, install “Xcode.mpkg”. Use all default options.
$ sudo gem install -r passenger
$ sudo passenger-install-apache2-module
Press Enter when prompted. Passenger will compile and install its Apache module. Press Enter when prompted the second time too.
$ cd /etc/apache2
Open httpd.conf in your text editor (if you use TextMate, try running mate httpd.conf from the command line) and look for a line like “LoadModule passenger_module” and some lines following that have “passenger” in them too. Delete them. If you don’t see them them, move your cursor to the end of the file.
Then insert these lines:
LoadModule passenger_module /Library/Ruby/Gems/1.8/gems/passenger-2.2.4/ext/apache2/ mod_passenger.so
To avoid weird issues with MySQL, it’s strongly recommended to upgrade to the 64-bit version. Start by shutting down mysqld if it’s running. (Depending on how you installed MySQL, you might be able to use the preference panel, or use sudo /opt/local/share/mysql5/mysql/mysql.server stop if you installed it using MacPorts)
Now install the Mac OS X 10.5 (x86_64) version of mysql from here
When the disk image opens, first install “mysql-5.1.37-osx10.5-x86_64.pkg”. Use all default options.
Next install “MySQLStartupItem.pkg”. Use all default options.
Next install “MySQL.prefPane”. Double-click to install it. Choose to replace the existing preference pane when prompted. (Apparently the preference pane is still 32-bit.) At this point you can click “Start MySQL Server” to start the server and verify it works.
Unmount the MySQL disk image.
Since you are upgrading from Leopard, your mysql gem is compiled for 32-bit only and therefore needs to be recompiled. However, it’s not that simple, the mysql gem is a bit of an exception. Under Snow Leopard when you do a gem install for a C extension it tries to build the extension for two architectures: i386 (32-bit) as well as x86_64 (64-bit). The problem is that the binary from mysql.com is not universal and therefore we need to force the C extension to be only compiled in 64-bit.
$ sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
note: You shouldn’t have to set the ARCHFLAGS to compile any other gems.
Posted 3 years, 8 months ago at 1:13 pm. Add a comment