Come installare MySQL e Rails su Osx Snow Leopard

By | 13 settembre 2010

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>

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/


1
2
<br />
mate ~/.profile<br />


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


1
2
<br />
export PATH="~/bin;/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:$PATH"<br />


e richarichiamo il $PATH lanciando questo metodo:


1
2
<br />
source ~/.profile<br />


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


1
2
<br />
echo $PATH<br />


h1. Passo 2: Download di MySQL


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


1
2
3
<br />
mkdir ~/src<br />
cd ~/src<br />


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


1
2
<br />
curl -O http://mysql.mirrors.pair.com/Downloads/MySQL-5.1/mysql-5.1.47.tar.gz<br />


h1. Passo 3: Compile and Install


Buildiamo ed installiamo MySQL con i seguenti comandi:


1
2
3
4
5
6
7
8
<br />
tar xzvf mysql-5.1.47.tar.gz<br />
cd mysql-5.1.47<br />
./configure --prefix=/usr/local/mysql --with-extra-charsets=complex \<br />
--enable-thread-safe-client --enable-local-infile --enable-shared \<br />
--with-plugins=innobase</p>
<p>make<br />
sudo make install<br />


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


1
2
3
4
5
<br />
cd /usr/local/mysql<br />
sudo ./bin/mysql_install_db --user=mysql<br />
sudo chown -R mysql ./var<br />
cd ..<br />


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:


1
2
3
4
<br />
mkdir bin<br />
touch mysqlscript<br />
chmod +x mysqlscript<br />


ed editiamo il file appena creato inserendo il seguente corpo:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<br />
#!/bin/bash</p>
<p>start()<br />
{<br />
        echo -n "Starting MysSQL server"<br />
        cd /usr/local/mysql ; sudo /usr/local/mysql/bin/mysqld_safe<br />
        return<br />
}</p>
<p>stop()<br />
{<br />
        echo -n "Stopping MySQL server"<br />
        cd /usr/local/mysql ; sudo /usr/local/mysql/bin/mysqladmin -u root -p shutdown<br />
        return<br />
}</p>
<p>case "$1" in<br />
    start)<br />
        start<br />
        ;;<br />
    stop)<br />
        stop<br />
        ;;<br />
    restart)<br />
        stop<br />
        start<br />
        ;;<br />
    *)<br />
        echo "Usage: {start|stop|restart}"<br />
        exit 1<br />
        ;;<br />
esac<br />
exit $?<br />


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>

Siccome è invece mia intenzione usare rmv, 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)


Procediamo dunque come di seguito:


h1. Passo 1: Installiamo rvm


Lanciamo da console questo comando e seguiamo le istruzioni:


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


h2. Passo 2: Installiamo Ruby 1.9.2


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


1
2
3
4
<br />
rvm install 1.9.2 -C --with-readline-dir=/opt/local,--build=x86_64-apple-darwin10<br />
rvm 1.9.2<br />
ruby -v<br />


h1. Passo 3: Creiamo un gemset Rails3


Creiamo un gemset Rails3 ed attiviamolo come default:


1
2
3
<br />
rvm use --create 1.9.2@rails3<br />
rvm 1.9.2@rails3 --default<br />


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


1
2
3
4
<br />
gem install sqlite3-ruby<br />
env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config<br />
gem install rails<br />


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.

Category: Svliluppo Metodologie Ruby Tag:, , , ,

About Stefano

Stefano Mancini is a co-founder of DevInterface.

After graduating in Computer Science, he first specialized in Java/J2EE development by participating in several international projects in the pharmaceutical and banking ambits.

Enthusiast of agile development, like SCRUM for project management and eXtreme Programming for code writing, he then moved to dynamic languages like Ruby and Python.

14 thoughts on “Come installare MySQL e Rails su Osx Snow Leopard

  1. Pingback: How to install MySQL and Rails on Osx Snow Leopard « XP on Rails

  2. Pingback: Tweets that mention How to install MySQL and Rails on Osx Snow Leopard | DevInterface Blog -- Topsy.com

  3. Stefano Post author

    I don’t really like the script that starts and stops MySQL.

    The problem is that the terminal console must be kept open.

    If someone has a better script (to start and stop manually MySQL) please share.

  4. runmen

    why not homebrew? works like a charm
    only line to install mysql gem actual

    mysql.server start

  5. Stefano Post author

    @Alexey, @Runmen: thanks for your suggestion.

    I’ve took a look at MacPorts and Fink but not Homebrew yet.

    How can I find a list of supported packages that can be installed? Is this tool as powerful as MacPorts for example?

    Thanks!

  6. Pingback: How to install MySQL and Rails on Osx Snow Leopard | DevInterface Blog | mysql

  7. Alexey Pychenkov

    @Stefano

    Supported “formulas” (packages) can be viewed in its repository: http://github.com/mxcl/homebrew/tree/master/Library/Formula/

    What do you mean by saying “powerful” about Macports? I think it depends on what tasks you want to do with its help. Homebrew is just lighter. They are both helpful if you want just to install some packages on Mac. However, Homebrew will do this installing and compiling everything (if possible) with native Mac libraries. Macports will compile everything from sources. And looking at ruby Homebrew formulas is more pleasant than Macports’ make-scripts.

  8. Ciaran Lee

    Check out cinderella, it’s sets up ruby (with rvm), mysql, postgres, memcached, node, and a bunch more stuff. It’s awesome:
    http://www.atmos.org/cinderella/intro.html

    It’s a one liner to install the whole lot. It uses homebrew so when you are done you can still install a bunch of extra homebrew stuff.

    To answer your question about homebrew v macports: I think homebrew has less installable software.

  9. Jamie Dyer

    You can’t mix and match the architecture like you have with the mysql gem, it doesn’t work. If you have 64 bit MySQL you need 64 bit ruby, 32 bit MySQL requires 32 bit ruby. Stick with one or the other, you’ll run into problems if you try to use both.

  10. Stefano Post author

    @Alexey: thanks, I’ll take a deeper look to homebrew.

    @Ciaran: yeah, this should be a nice package to quickly install everything.

    @Jamie: I’m not mixing architectures:
    at the end of the tutorial I have an 64bit MySQL and a 64bit Ruby (installed with rvm).
    I’ve only left the 32bit Ruby provided by the system, but I don’t care because I’ll never use it.

  11. Patrick Tulskie

    Snow leopard comes with 64 bit ruby out of the box. You can just upgrade rubygems and go. That being said – it’s always a good idea to switch to RVM asap because it makes managing your ruby installs pretty painless.

    You also could have grabbed MySQL from the binary on mysql.com. It comes with a preference pane to control it, and it even installs in /usr/local. Homebrew is a nice way to go, but path of least resistence is just installing with the package from mysql.com

  12. Stefano Post author

    @Patrick: In a first time I’ve installed MySQL from 64bit binaries but I’ve got lot of errors while compiling the mysql gem.
    So that’s why I’ve copiled MySQL from scratch.

Comments are closed.