Come installare MySQL e Rails su Osx Snow Leopard

Ciao a tutti.

In questi giorni ho comprato un MacBook Pro con pre installato Osx Snow Leopard a 64 bit.

Dovendo sviluppare prevalentemente in Rails e Django su MySQL e Postgres ho trovato alcune difficoltà nell'installare e configurare correttamente tutti i pacchetti.

I maggiori problemi erano dovuti alla presenza di librerie a 32bit e di altre a 64bit. Ad esempio, sia Python che Ruby (già pre installati) sembrano essere compilati a 32bit. Tutto pare comunque funzionare al meglio, fino a quando si cerca di installare la gemma mysql oppure le egg psycopg2 o MySQL_python.

I driver per connettersi a questi database, dovendo essere "compilati", generano infatti svariati problemi di incompatibilità tra le varie architetture.

In questo primo tutorial, vedremo come installare MySQL e Rails 3.0. Nel prossimo vedremo come si procede con PostgreSQL e Django.

Le soluzioni adottate da me non sono altro che il frutto di ricerche e di altri tutorial online. Linkerò dunque ogni risorsa da me utilizzata.

Per quanto riguarda l'installazione di MySQL, il tutorial da me seguito principalmente è quello di "Hivelogic":http://hivelogic.com/articles/compiling-mysql-on-snow-leopard.

Vediamo di seguito i punti chiave che mi hanno permesso una corretta installazione.

h1. Passo 1: Configurare la variabile d'ambiente $PATH

Apriamo un terminale ed impostiamo la variabile d'ambiente $PATH in modo da farla puntare alle corrette cartelle all'interno di /usr/local/


mate ~/.profile

Aggiungiamo, se non esiste già, questa riga in fondo al file .profile:


export PATH="~/bin;/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:$PATH"

e richarichiamo il $PATH lanciando questo metodo:


source ~/.profile

Per verificare che il nostro $PATH contenga i percorsi impostati sopra digitiamo il seguente comando:


echo $PATH

h1. Passo 2: Download di MySQL

Creiamo una nuova cartella in cui scaricare i sorgenti e poterli compilare:


mkdir ~/src
cd ~/src

Scarichiamo l'ultima versione disponibile al momento della stesura di questo tutorial:


curl -O http://mysql.mirrors.pair.com/Downloads/MySQL-5.1/mysql-5.1.47.tar.gz

h1. Passo 3: Compile and Install

Buildiamo ed installiamo MySQL con i seguenti comandi:


tar xzvf mysql-5.1.47.tar.gz
cd mysql-5.1.47
./configure --prefix=/usr/local/mysql --with-extra-charsets=complex \
--enable-thread-safe-client --enable-local-infile --enable-shared \
--with-plugins=innobase

make
sudo make install

Creiamo a questo punto un utente mysql ed un database di default.


cd /usr/local/mysql
sudo ./bin/mysql_install_db --user=mysql
sudo chown -R mysql ./var
cd ..

Ora possiamo creare degli script per startare e stoppare il server MySQL da linea di comando.

Creiamo una cartella bin nella nostra home ed il seguente file, dandogli inoltre i permessi di esecuzione:


mkdir bin
touch mysqlscript
chmod +x mysqlscript

ed editiamo il file appena creato inserendo il seguente corpo:


#!/bin/bash

start()
{
echo -n "Starting MysSQL server"
cd /usr/local/mysql ; sudo /usr/local/mysql/bin/mysqld_safe
return
}

stop()
{
echo -n "Stopping MySQL server"
cd /usr/local/mysql ; sudo /usr/local/mysql/bin/mysqladmin -u root -p shutdown
return
}

case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo "Usage: {start|stop|restart}"
exit 1
;;
esac
exit $?

A questo punto sarà possibile avviare il server digitando da console "mysqlsript start". Per stopparlo basterà invece digitare "mysqlscript stop".

Siamo ora in grado di installare Ruby e Rails. Come detto in testa all'articolo, Ruby è compilato a 32bit.

Se si vuole compilarlo a 64bit dai sorgenti e posizionarlo in /usr/local/ruby basterà seguire questo "tutorial":http://hivelogic.com/articles/compiling-ruby-rubygems-and-rails-on-snow-leopard

Siccome è invece mia intenzione usare "rmv":http://rvm.beginrescueend.com/, mi accontento di un Ruby di sistema a 32bit (non si sa mai) e preferisco compilare a 64bit gli ambienti Ruby virtuali (tratto da questo "tutorial":http://amerine.net/2010/02/24/rvm-rails3-ruby-1-9-2-setup.html)

Procediamo dunque come di seguito:

h1. Passo 1: Installiamo rvm

Lanciamo da console questo comando e seguiamo le istruzioni:


bash < <( curl http://rvm.beginrescueend.com/releases/rvm-install-head )

h2. Passo 2: Installiamo Ruby 1.9.2

Lanciamo in console i seguenti comandi e verifichiamo che sia installata la versione 1.9.2


rvm install 1.9.2 -C --with-readline-dir=/opt/local,--build=x86_64-apple-darwin10
rvm 1.9.2
ruby -v

h1. Passo 3: Creiamo un gemset Rails3

Creiamo un gemset Rails3 ed attiviamolo come default:


rvm use --create 1.9.2@rails3
rvm 1.9.2@rails3 --default

h1. Passo 4: Installiamo Rails3 ed i driver per Sqlite e MySQL


gem install sqlite3-ruby
env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
gem install rails

In questo tutorial abbiamo dunque installato dai sorgenti MySQL e Ruby 1.9.2. Ora che tutti i pacchetti sono stati compilati a 64bit non dovremmo più trovare errori nell'installare le gemme che ci serviranno in futuro.