Quelle che seguono, rappresentano le linee guida da seguire per
installare mono 2.4.2 su Linux Centos 5.3 senza grossi problemi.
Prima di proseguire con l'installazione, conviene preparare un
ambiente di programmazione di Linux che può venire utile anche
in altre installazioni.
Ovviamente assumiamo che Apache 2.2 sia già correttamente
installato e configurato, altrimenti vi rimando all'articolo che sto
scrivendo e che publicherò al più presto.
Da questo momento lavoreremo all'interno di una finestra terminal se
non si è già in modalità console, ricordatevi
che bisogna accedere come root quindi eventualmente eseguire il
comando: "su" dalla riga di comando.
Installiamo il repository di rpmforge, che aggiunge la
possibilità di avere dei pacchetti aggiuntivi non ancora
esistenti nei repository standard di Centos, sgegliere il link x86_64
per macchine a 64 bit altrimenti i386:
Assumiamo che la macchina sia a 64 bit e in una finestra terminal
digitiamo le seguenti righe:
cd /root
wget
http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm
rpm --install rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm
Il passo successivo è quello di installare alcune librerie di
sviluppo utilizzate dai package di installazione di mono.
Per esempio provando ad installare libgdiplus, il programma configure
avrà un output che finisce con qualcosa di simile:
Configuration summary
* Installation prefix = /opt/mono-2.4
* Cairo = 1.6.4 (internal)
* Text = cairo
* EXIF tags = No. Get it from http://libexif.sourceforge.net/
* Codecs supported:
- TIFF: no (Get it from http://www.libtiff.org/)
- JPEG: no (Get it from http://freshmeat.net/projects/libjpeg)
- GIF: no (See http://sourceforge.net/projects/libgif)
- PNG: yes
NOTE: if any of the above say 'no' you may install the
corresponding development packages for them, rerun
autogen.sh to include them in the build.
Il fatto che non siano state trovate alcune librerie, non vuol dire
che le librerie non siano presenti nel sistema ma sicuramente non lo
sono i relativi package di sviluppo quindi bisogna installarli, in
questo caso sono necessari i package di sviluppo delle librerie come
elencato.
yum install esegue l'installazione del package o, se questi esiste,
il relativo upgrade, altrimenti ci comunica che non ha intrapreso
nessuna azione (package esistente ed aggiornato oppure non ha trovato
il package da nessuna parte).
Se vogliamo ridurre al minimo le possibilità di insuccesso,
installando uno dei package successivi, abbiamo due scelte:
-
la macchina è stata installata come server senza le librerie
X
digitare i seguenti comandi per installare tutte le librerie di
sviluppo
(soluzione, a mio avviso, consigliata anche per la scelta 2,
installa le stesse librerie che avremmo installato se al momento
dell'installazione del sistema avessimo scelto di installare le
librerie di sviluppo, questa scelta installa un centinaio di
package che comunque non consuma risorse a runtime ma solo circa
200MB di hard disk, risolvendo futuri problemi di dipendenza,
ricordatevi che su Linux avremo spesso la necessità di
compilare dei pacchetti di tipo sorgente)
yum groupinstall "Development Tools"
yum groupinstall "X Software Development"
-
la macchina è stata installata come desktop con le librerie
X
in questo caso il sistema dovrebbe aver installato molte delle librerie precedenti quindi la sequenza di comandi successiva dovrebbe coprire la totalità dei casi, personalmente consiglio di lanciare comunque i due comandi precedenti
yum install automake
yum install libexif-devel
yum install libtiff-devel
yum install libjpeg-devel
yum install libpng-devel
yum install giflib-devel
yum install httpd-devel
yum install apr-devel
yum install xulrunner-devel
yum install xulrunner-devel-unstable
yum install bison-devel
yum install flex
yum install fontconfig-devel
yum install libXt-devel
yum install libXrender-devel
Oltre alle librerie precedenti, bisogna installare le tre utility
seguenti che, per non impazzire nella loro ricerca, potete scaricare
direttamente da qui:
m4-1.4.10-3.fc9.i386.rpm
automake17-1.7.9-7.noarch.rpm
autoconf-2.61-10.fc9.noarch.rpm
autoconf-2.63-1.fc9.noarch.rpm
wget http://www.fcservice.com/m4-1.4.10-3.fc9.i386.rpm
rpm --install m4-1.4.10-3.fc9.i386.rpm --force
wget http://www.fcservice.com/automake17-1.7.9-7.noarch.rpm
rpm --install automake17-1.7.9-7.noarch.rpm
wget http://www.fcservice.com/autoconf-2.63-1.fc9.noarch.rpm
rpm --install autoconf-2.63-1.fc9.noarch.rpm
Nell'eventualità che rpm si rifiuti di installare
perchè esiste già uno dei package con versione minore
disinstallare il package incriminato è riprovare:
"rpm -e
--nodeps nomepackage_incriminato"
A questo punto siamo pronti per eseguire l'installazione, creiamo
quindi la direcotory source dentro la directory root e, all'interno
di source, le directory mono e monodevelop all'interno delle quali
scaricheremo i package occorrenti:
cd /root
mkdir source
mkdir source/mono
mkdir source/monodevelop
cd source/mono
Se avete già installato in precedenza le librerie di sviluppo
probabilmente avrete già nel sistema la libreria
glib-2.20 quindi saltate al passo successivo, altrimenti eseguite
l'installazione
:
wget
http://ftp.gnome.org/pub/gnome/sources/glib/2.20/glib-2.20.4.tar.bz2
tar -jxf
glib-2.20.4.tar.bz2
cd
glib-2.20.4
autoconf
./configure --prefix=/opt/mono-2.4
make
make install
cd ..
Il parametro --prefix=/opt/mono-2.4 serve a fissare il path dove
verra installato il tutto, ovviamente se scegliete un altro path
questo si dovrà ripetere per ogni package da installare.
Inseriamo le seguenti righe nel file "/etc/profile" prima
dell'ultima riga che inizia con export
if [ "$PKG_CONFIG_PATH" = "" ]; then
PKG_CONFIG_PATH=/opt/mono-2.4/lib/pkgconfig:/usr/lib/pkgconfig
else
PKG_CONFIG_PATH=/opt/mono-2.4/lib/pkgconfig:/usr/lib/pkgconfig:$PKG_CONFIG_PATH
fi
if [ "$MANPATH" = "" ]; then
MANPATH="/opt/mono-2.4/share/man"
else
MANPATH="/opt/mono-2.4/share/man:$MANPATH"
fi
PATH=/opt/mono-2.4/bin:/opt/mono-2.4/share:$PATH
e accodiamo alla fine della riga export " PKG_CONFIG_PATH
MANPATH"
avremo del codice simile a questo:
if [ "$PKG_CONFIG_PATH" = "" ]; then
PKG_CONFIG_PATH=/opt/mono-2.4/lib/pkgconfig
else
PKG_CONFIG_PATH=/opt/mono-2.4/lib/pkgconfig:$PKG_CONFIG_PATH
fi
if [ "$MANPATH" = "" ]; then
MANPATH="/opt/mono-2.4/share/man"
else
MANPATH="/opt/mono-2.4/share/man:$MANPATH"
fi
PATH=/opt/mono-2.4/bin:/opt/mono-2.4/share:$PATH
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC
PKG_CONFIG_PATH MANPATH
modifichiamo quindi il file "/root/.bashrc" aggiungendo
alla fine del file le seguenti righe:
if [ "$LD_LIBRARY_PATH" = "" ]; then
LD_LIBRARY_PATH="/opt/mono-2.4/lib:/usr/lib/xulrunner-1.9"
else
LD_LIBRARY_PATH="/opt/mono-2.4/lib:/usr/lib/xulrunner-1.9:$LD_LIBRARY_PATH"
fi
export LD_LIBRARY_PATH
export MOZILLA_FIVE_HOME=/usr/lib/xulrunner-1.9
attenzione nella vostra macchina al posto della directory
"/usr/lib/xulrunner-1.9" potreste avere
"/usr/lib/xulrunner-1.8" oppure
"/usr/lib/xulrunner" a seconda della versione di firefox
installata. La riga dell'esempio si riferisce a Centos 5.3 con
installato firefox 3.0.11.
A questo punto conviene riavviare la macchina per aggiornare le
variabili d'ambiente in modo corretto.
Dopo il riavvio apriamo la finestra terminal e ci posizioniamo di
nuovo nella directory mono con il comando
"cd /root/source/mono"
e procediamo all'installazione dei rimanenti pacchetti.
Non stupitevi se tra una compilazione e l'altra alterniamo
l'installazione di autoconf-2.61 e autoconf-2.63, purtroppo i vari
package, provenendo da diverse fonti, utilizzano sia l'uno che
l'altro e la sequenza con cui installiamo i pacchetti è
importante.
Il gruppo di istruzioni seguenti è simile per ogni package:
wget
http://ftp.gnome.org/pub/gnome/sources/atk/1.12/atk-1.12.4.tar.bz2
tar -jxf
atk-1.12.4.tar.bz2
cd
atk-1.12.4
./configure --prefix=/opt/mono-2.4
make
make install
cd ..
rpm -e --nodeps autoconf-2.63
rpm --install autoconf-2.61-10.fc9.noarch.rpm
wget
http://cairographics.org/releases/pixman-0.10.0.tar.gz
tar -zxf
pixman-0.10.0.tar.gz
cd
pixman-0.10.0.tar
autoconf
./configure --prefix=/opt/mono-2.4
make
make install
cd ..
wget http://cairographics.org/releases/cairo-1.6.0.tar.gz
tar -zxf
cairo-1.6.0.tar.gz
cd
cairo-1.6.0
autoconf
./configure --prefix=/opt/mono-2.4
make
make install
cd ..
wget
http://ftp.gnome.org/pub/gnome/sources/pango/1.20/pango-1.20.5.tar.bz2
tar -jxf
pango-1.20.5.tar.bz2
cd
pango-1.20.5
autoconf
./configure --prefix=/opt/mono-2.4
make
make install
cd ..
wget
http://ftp.gnome.org/pub/gnome/sources/gtk+/2.12/gtk+-2.12.12.tar.bz2
tar -jxf
gtk+-2.12.12.tar.bz2
cd
gtk+-2.12.12
autoconf
./configure --prefix=/opt/mono-2.4
make
make install
cd ..
wget
http://ftp.novell.com/pub/mono/sources/libgdiplus/libgdiplus-2.4.2.tar.bz2
tar -jxf libgdiplus-2.4.2.tar.bz2
cd libgdiplus-2.4.2
autoconf
./configure --prefix=/opt/mono-2.4
make
make install
cd ..
wget http://ftp.novell.com/pub/mono/sources/mono/mono-2.4.2.3.tar.bz2
tar -jxf mono-2.4.2.3.tar.bz2
cd mono-2.4.2.3
autoconf
./configure --prefix=/opt/mono-2.4 --with-libgdiplus=installed
make
make install
cd ..
wget
http://ftp.novell.com/pub/mono/sources/mono-basic/mono-basic-2.4.2.tar.bz2
tar -jxf mono-basic-2.4.2.tar.bz2
cd mono-basic-2.4.2
./configure --prefix=/opt/mono-2.4
make
make install
cd ..
wget
http://ftp.novell.com/pub/mono/sources/gtk-sharp210/gtk-sharp-2.10.4.tar.bz2
tar -jxf
gtk-sharp-2.10.4.tar.bz2
cd
gtk-sharp-2.10.4
autoconf
./configure --prefix=/opt/mono-2.4
make
make install
cd ..
wget
http://ftp.novell.com/pub/mono/sources/gluezilla/gluezilla-2.4.2.tar.bz2
tar -jxf gluezilla-2.4.2.tar.bz2
cd gluezilla-2.4.2
autoconf
./configure --prefix=/opt/mono-2.4
make
make install
cd ..
wget http://ftp.novell.com/pub/mono/sources/xsp/xsp-2.4.2.tar.bz2
tar -jxf xsp-2.4.2.tar.bz2
cd xsp-2.4.2
autoconf
./configure --prefix=/opt/mono-2.4
make
make install
cd ..
wget
http://ftp.novell.com/pub/mono/sources/mod_mono/mod_mono-2.4.2.tar.bz2
tar -jxf mod_mono-2.4.2.tar.bz2
cd mod_mono-2.4.2
autoconf
./configure --prefix=/opt/mono-2.4
make
make install
cd ..
wget
http://ftp.novell.com/pub/mono/sources/mono-addins/mono-addins-0.4.zip
unzip -x mono-addins-0.4
cd mono-addins-0.4
autoconf
./configure --prefix=/opt/mono-2.4
make
make install
A questo punto dovremmo ritrovarci con mono-2.4.2 correttamente
installato.
Nella directory "/usr/lib/httpd/modules" di Apache
sarà stato copiato "mod_mono.so" e nella directory
"/etc/httpd/conf" troveremo il file di configurazione
"mod_mono.conf" .
Nel mio caso, realizzo le web application in Windows utilizzando il
pacchetto di programmazione VisualStudio 2008, quando tutto è
testato e deployato correttamente, copio la directory contenente il
sito in Linux è tutto funziona correttamente, ovviamente, non
posso utilizzare funzionalità peculiari dell'ambiente
Microsoft ma, fino ad ora non mi è mai capitato di averne
bisogno.
Guardate questa pagina "default.aspx", all'apparenza semplice contiene due dll compilate con VisualStudio 2008 e sta funzionando su Apache 2.2 sotto Linux Centos 5.3.
Per chi invece non vuole lavorare in Windows, bisognerà
installare monodevelop 2.0, vedi articolo
Installare MonoDevelop su Linux
Centos.
Leggete inoltre gli articoli:
Creare una applicazione web ASP.NET con
VisualStudio 2008
Agiungere un controllo di tipo Html
Container in una applicazione web ASP.NET
Publicare una applicazione web ASP.NET
su Apache 2.2
Ovviamente, prima di copiare il sito in Linux è possibile
testare il tutto con Moma, un applicativo di mono che esegue un test
di compatibilità, vedremo come in un successivo articolo compatibilmente con i miei impegni di lavoro.
|