29-11-2011 : Remettre dans le débat politique les principes du Conseil National de la Résistance
17-02-2012 : Pétition pour une protection de l’apiculture et des consommateurs face au lobby des OGM
Logo de mon site
Logo de mon site
Faire un don

Luxpopuli / Internet / Serveur web Apache / Apache 1.3.37 : compiler et installer les librairies (II)





Right menu

Logo du site ez.no  Logo XHTML 1.O du W3C  Logo XHTML 1.O du W3C  Site francophone officiel de Firefox
zero papier grâce aux catalogues et promos en ligne de bonial

Apache 1.3.37 : compiler et installer les librairies (II)

Date de publication: le vendredi 17 août 2007 à 14h05
Dernière modification: par Pascal BOYER le mardi 14 septembre 2010 à 23h52
« Article précédent: Apache 1.3.37 : compiler un serveur web (I)
» Article suivant: Apache 1.3.37 : installer les sources du serveur (III)

Vous tous, ô mes amis!
Vous le savez et je le sais:
notre vie passe en une fois,
en un seul jour, en une nuit,
c'est le dépouillement.
Nous ne sommes venus que pour nous rencontrer et sur terre la vie n'est qu'un prêt.

Popol Vuh

Cet article, très long, présente la procédure détaillée de la compilation de différentes librairies utilisées par PHP ou des modules de Apache. Je me suis astreint à donner le plus de détails possible pour que les personnes qui ne sont pas expertes en compilation puissent avoir le maximum de repères à chaque étape de la compilation/installation.
Cependant, j'insiste sur le fait qu'il n'est en rien obligatoire de procéder à ces compilations pour installer un serveur Apache fonctionnel et ceux qui le souhaitent, peuvent directement passer à l'article suivant. Veillez alors simplement à bien installer les versions de développement des packages de ces librairies afin de pouvoir compiler PHP et certains modules.
 

Vous trouverez également, sur le site apachefrance.com , des informations générale et de compilation des librairies suivantes:

  •  MM
  •  FreeType
  •  GD
  •  PDFlib

Sur les systèmes Linux, les logiciels externes compilés/installés à partir des sources sont habituellement placés dans un sous-répertoire du répertoire prévu à cet effet, à savoir:

/usr/local/

Pour éviter que la pagaille ne s'installe au bout d'un certain temps, celui au bout duquel on ne se souvient plus de ce que l'on a fait, ni pourquoi on l'a fait, nous allons créer un sous-répertoire ServeurWeb et y installer tout ce qui est en rapport avec la mise en oeuvre de Apache:

cd /usr/local

mkdir ServeurWeb

Si cela ne vous convient pas, pensez, par la suite, à adapter les chemins des commandes.

Optimiser la compilation

Il est possible d'optimiser la compilation en modifiant simplement le niveau d'optimisation utilisé par le compilateur. Par défaut, le niveau est -O2. Il est possible de passer en toute sécurité au niveau -O3. Pour cela, on dispose de deux solutions.

export CFLAGS="-O3"

...auquel cas cette valeur est utilisée tant que l'on reste dans la même session shell.

  •  Soit on indique au cas par cas, et donc à chaque fois, la valeur que l'on souhaite pour cette variable:

./configure CFLAGS="-O3" --with-xxxx=xxx --with-xxx

:
Dans la commande ci-dessus, ce n'est pas un zéro "0" mais la lettre O majuscule qui est placée devant le chiffre 3 !
 

Apache 1.3.37 : compiler et installer la librairie MM 

:
Dans la mesure où la librairie MM est utilisée par les modules mod_ssl et mod_php, il est important de procéder à son installation dès à présent.
 

:
Il peut-être instructif de lire la section du fichier INSTALL de mod_ssl consacrée à la compilation de MM. On y trouve par exemple ceci:
 

 For instance this allows mod_ssl to use a high-performance RAM-based session cache instead of a disk-based one. 
 Par exemple, MM permet au module mod_ssl d'utiliser les hautes performances de la mémoire RAM pour placer les données plutôt que d'utiliser le disque dur.
 

Sur le site de apachefrance.com  on peut lire ceci:

« MM est une librairie qui permet une utilisation simplifiée de la mémoire partagée (ou shared memory) utilisée lors de la communication inter-processus (ou IPC, Inter Processus Communication) sur les plates-formes de type Unix. La raison pour laquelle il est intéressant d'installer cette librairie sur votre système est lors de l'utilisation des sessions avec PHP 4. 
En effet, Tobias Ratschiller, dans son article sur la gestion des sessions recommende la librairie MM : "si vous souhaitez des performances élevées, le module mm est une alternative très intéressante, car il permet le stockage des données de session en mémoire partagée (NDR : plutôt que dans un fichier) et n'est donc pas limité par les perfornances du sous-système disque".»
 

Télécharger la librairie MM 

On se place dans le répertoire ServeurWeb:

cd /usr/local/ServeurWeb

...et on télécharge la dernière version de la librairie directement à partir la page d'accueil du projet MM   ou, plus simplement, avec la commande wget:

wget ftp://ftp.ossp.org/pkg/lib/mm/mm-1.4.2.tar.gz

--00:26:33--  ftp://ftp.ossp.org/pkg/lib/mm/mm-1.4.2.tar.gz
 => `mm-1.4.2.tar.gz'
Résolution de ftp.ossp.org... 195.30.6.156
Connexion vers ftp.ossp.org|195.30.6.156|:21...connecté.
Ouverture de session en anonymous...Session établie!
==> SYST ... complété. ==> PWD ... complété.
==> TYPE I ... complété. ==> CWD /pkg/lib/mm ... complété.
==> PASV ... complété. ==> RETR mm-1.4.2.tar.gz ... complété.
Taille: 344 903 (337K) (non certifiée)
 
100%[=========================================>] 344 903 1.26M/s
 
00:26:34 (1.26 MB/s) - « mm-1.4.2.tar.gz » sauvegardé [344903]

Puis on extrait le contenu de l'archive:

tar zxfv mm-1.4.2.tar.gz

On se place dans le nouveau répertoire:

cd mm-1.4.2

Compiler et installer MM 

On crée le Makefile:

./configure --disable-shared

Cette commande très verbeuse se termine ainsi:

Output Substitution:
configure: creating ./config.status
config.status: creating Makefile
config.status: creating mm-config
config.status: creating config.h
config.status: executing adjustment commands

Le fichier Makefile étant créé, on peut compiler la librairie:

make

./libtool --quiet --mode=compile gcc -c -O3 mm_global.c
./libtool --quiet --mode=compile gcc -c -O3 mm_alloc.c
./libtool --quiet --mode=compile gcc -c -O3 mm_core.c
./libtool --quiet --mode=compile gcc -c -O3 mm_lib.c
./libtool --quiet --mode=compile gcc -c -O3 mm_vers.c
./libtool --quiet --mode=link gcc -o libmm.la mm_global.lo mm_alloc.lo mm_core.lo mm_lib.lo mm_vers.lo \
 -rpath /usr/local/lib -version-info `./shtool version -l c -d libtool mm_vers.c`
./libtool --quiet --mode=compile gcc -c -O3 mm_test.c
./libtool --quiet --mode=link gcc -o mm_test mm_test.lo libmm.la

 Pour information: dans les lignes ci-dessus on retrouve la valeur -O3 du paramètre CFLAGS employée pour la compilation.

On effectue un petit test:

make test

...dont la sortie très verbeuse doit se terminer par ces lignes (surtout la dernière !):

Checking for memory leaks
Fine, we have again 1048576 bytes available
Destroying MM object
 
OK - ALL TESTS SUCCESSFULLY PASSED.

Et on termine en installant la librairie:

make install

./shtool mkdir -f -p -m 755 /usr/local/bin
./shtool mkdir -f -p -m 755 /usr/local/include
./shtool mkdir -f -p -m 755 /usr/local/lib
./shtool mkdir -f -p -m 755 /usr/local/share/man/man1
./shtool mkdir -f -p -m 755 /usr/local/share/man/man3
./shtool install -c -m 755 mm-config /usr/local/bin/mm-config
./shtool install -c -m 644 mm-config.1 /usr/local/share/man/man1/mm-config.1
./shtool install -c -m 644 mm.3 /usr/local/share/man/man3/mm.3
./shtool install -c -m 644 mm.h /usr/local/include/mm.h
./shtool install -c -m 644 .libs/libmm.lai /usr/local/lib/libmm.la
./shtool install -c -m 644 .libs/libmm.a /usr/local/lib/libmm.a
chmod 644 /usr/local/lib/libmm.a
ranlib /usr/local/lib/libmm.a
PATH="$PATH:/sbin" ldconfig -n /usr/local/lib
----------------------------------------------------------------------
Libraries have been installed in:
   /usr/local/lib
 
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
 - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
  during execution
 - add LIBDIR to the `LD_RUN_PATH' environment variable
 during linking
 - use the `-Wl,--rpath -Wl,LIBDIR' linker flag
 - have your system administrator add LIBDIR to `/etc/ld.so.conf'
 
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------

Les lignes véritablement instructives sont celles qui contiennent le mot install car elles nous révèlent où ont été déposées les librairies qui viennent d'être compilées.

 :
 Les 5 premières lignes indiquent que 5 répertoires ont été créés (sauf s'ils existaient déjà bien sûr). Le fait que ces 5 répertoires aient tous été créés dans /usr/local/ est dû au fait que la valeur par défaut du paramètre --prefix de la commande ./configure vaut justement /usr/local (pour le savoir il suffit de lancer la commande ./configure --help)
 

Voici les nouvelles librairies statiques compilées:

ls -la /usr/local/lib/libmm.*

-rw-r--r-- 1 root staff 15828 2007-08-20 09:34 /usr/local/lib/libmm.a
-rw-r--r-- 1 root staff   736 2007-08-20 09:34 /usr/local/lib/libmm.la

Apache 1.3.37 : compiler et installer gettext 

Gettext est utilisé pour l'internationalisation des logiciel et permet d'afficher les messages dans la langue native de l'utilisateur.

Voici le lien vers le site officiel du projet: gettext  

Voici le lien vers la page que lui consacre wikipedia: gettext sur wikipedia  

Télécharger gettext 

On se place dans notre répertoire ServeurWeb:

cd /usr/local/ServeurWeb

On télécharge l'archive à partir de cette page  de téléchargement ou directement avec wget:

wget ftp://ftp.gnu.org/gnu/gettext/gettext-0.16.1.tar.gz

On extrait le contenu de l'archive:

tar zxfv gettext-0.16.1.tar.gz

On se place dans le répertoire de la librairie:

cd gettext-0.16.1

Compiler et installer gettext 

On crée le Makefile (on refuse la création de librairies dynamiques).

./configure --disable-shared

On compile:

make

On lance le test:

make check

Il est possible d'obtenir un message d'erreur relatif aux tests avec PHP. On en tient pas compte et on passe à l'étape suivante...

...et on installe:

make install

Voici les nouvelles librairies statiques présentes dans le répertoire /sur/local/lib/:

drwxr-sr-x 2 root staff 4096 2007-08-20 14:20 gettext
-rw-r--r-- 1 root staff 49908 2007-08-20 14:19 libasprintf.a
-rwxr-xr-x 1 root staff 752 2007-08-20 14:19 libasprintf.la
-rwxr-xr-x 1 root staff 762 2007-08-20 14:20 libgettextlib.la
-rw-r--r-- 1 root staff 356356 2007-08-20 14:20 libgettextpo.a
-rwxr-xr-x 1 root staff 759 2007-08-20 14:20 libgettextpo.la
-rwxr-xr-x 1 root staff 794 2007-08-20 14:20 libgettextsrc.la

Apache 1.3.37 : compiler et installer openSSL 

Les librairies openSSL sont utilisées par le module mod_ssl.

Il est évident que vous pouvez vous dispenser de l'installation manuelle de cette librairie et préférer leur installation au moyen du package debian. Au final, quelque soit la méthode d'installation choisie pour ces librairies, le module mod_ssl fonctionnera quand même et utilisera les librairies que nous lui dirons d'utiliser.

Télécharger openSSL 

On se place dans notre répertoire ServeurWeb:

cd /usr/local/ServeurWeb

On télécharge la dernière archive sur le site openssl.org  avec cette commande:

wget http://www.openssl.org/source/openssl-0.9.8e.tar.gz

--17:48:42--  http://www.openssl.org/source/openssl-0.9.8e.tar.gz
=> `openssl-0.9.8e.tar.gz'
Résolution de www.openssl.org... 195.30.6.166
Connexion vers www.openssl.org|195.30.6.166|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 3 341 665 (3.2M) [application/x-tar]
 
100%[========================================>] 3 341 665      1.55M/s
 
17:48:46 (1.54 MB/s) - « openssl-0.9.8e.tar.gz » sauvegardé [3341665/3341665]

 :
 Comme il y a les signatures sur le site on peut en profiter pour contrôler l'intégrité  de l'archive téléchargée.
 

On extrait le contenu de l'archive:

tar zxfv openssl-0.9.8e.tar.gz

On se place dans le nouveau répertoire:

cd openssl-0.9.8e

Compiler et installer openSSL 

Dans le fichier INSTALL on peut lire ceci:

 Note on shared libraries 
 Notes à propos des librairies partagées
 Shared libraries have certain caveats. Binary backward compatibility can't be guaranteed before OpenSSL version 1.0. The only reason to use them would be to conserve memory on systems where several programs are using OpenSSL. 
 Les librairies partagées sont à envisager aux risques de l'utilisateur. La compatibilité binaire ascendante n'est pas garantie pour les versions antérieures à la version 1.0 de OpenSSL. La seule raison d'utiliser les librairies partagées serait de préserver la mémoire sur les systèmes où il y auraient plusieurs programmes utilisant OpenSSL.
 

Dans le fichier INSTALL de mod_ssl on peut lire:

  •  que l'option -DSSL_FORBID_ENULL permet d'interdire les cryptage vide.
  •  que l'option -fPIC permet de compiler OpenSSL avec l'option Position Independent Code (Position du Code Indépendante). Cette option doit être utiliser lorsque l'on souhaite compiler le module mod_ssl en tant que DSO (Dynamic Shared Object - Objet Partagé Dynamique).
     Il est très important de respecter la syntaxe de cette option.
     
  •  que l'option -no-threads permet d'accroître les performances de OpenSSL puisque, de toute façon, Apache 1.3 n'utilise pas les threads (flots d'exécution). Par défaut, OpenSSL est compilé en mode multi-threads.

Par ailleurs, il est important, pour cette librairie, de ne pas oublier de spécifier la valeur du préfix. Donc on crée le Makefile comme ceci:

./config --prefix=/usr/local no-shared no-threads

Puis on compile:

make

...
...
's/ /:/g'`; LD_LIBRARY_PATH=$LIBPATH:$LD_LIBRARY_PATH ${LDCMD} ${LDFLAGS} -o ${APPNAME:=dummytest}
dummytest.o ${LIBDEPS} )
make[2]: quittant le répertoire « /usr/local/ServeurWeb/openssl-0.9.8e/test »
make[1]: quittant le répertoire « /usr/local/ServeurWeb/openssl-0.9.8e/test »
making all in tools...
make[1]: entrant dans le répertoire « /usr/local/ServeurWeb/openssl-0.9.8e/tools »
make[1]: Rien à faire pour « all ».
make[1]: quittant le répertoire « /usr/local/ServeurWeb/openssl-0.9.8e/tools »

Il est recommandé de faire le test:

make test

Et on installe les librairies:

make install

Voici ce qu'il y a de nouveau dans le répertoire /usr/local/lib/:

...
drwxr-sr-x 2 root staff 4096 2007-08-17 19:21 engines
-rw-r--r-- 1 root staff 2225766 2007-08-17 19:21 libcrypto.a
-rw-r--r-- 1 root staff 365870 2007-08-17 19:21 libssl.a
...

Apache 1.3.37 : compiler et installer Zlib 

  •  Cette librairie est nécessaire à la compilation de la librairie zzip 

Télécharger zlib 

On se place dans notre répertoire ServeurWeb:

cd /usr/local/ServeurWeb

On télécharge l'archive sur le site officiel zlib.net  ou avec wget:

wget http://www.gzip.org/zlib/zlib-1.2.3.tar.gz

On extrait le contenu de l'archive:

tar zxfv zlib-1.2.3.tar.gz

On se place dans le répertoire de la librairie:

cd zlib-1.2.3

Compiler et installer zlib 

On crée le Makefile:

./configure --prefix=/usr/local

Checking for gcc...
Building static library libz.a version 1.2.3 with gcc.
Checking for unistd.h... Yes.
Checking whether to use vs[n]printf() or s[n]printf()... using vs[n]printf()
Checking for vsnprintf() in stdio.h... Yes.
Checking for return value of vsnprintf()... Yes.
Checking for errno.h... Yes.
Checking for mmap support... Yes.

On compile:

make

gcc -O3 -DUSE_MMAP  -c -o example.o example.c
gcc -O3 -DUSE_MMAP  -c -o adler32.o adler32.c
gcc -O3 -DUSE_MMAP  -c -o compress.o compress.c
gcc -O3 -DUSE_MMAP  -c -o crc32.o crc32.c
gcc -O3 -DUSE_MMAP  -c -o gzio.o gzio.c
gcc -O3 -DUSE_MMAP  -c -o uncompr.o uncompr.c
gcc -O3 -DUSE_MMAP  -c -o deflate.o deflate.c
gcc -O3 -DUSE_MMAP  -c -o trees.o trees.c
gcc -O3 -DUSE_MMAP  -c -o zutil.o zutil.c
gcc -O3 -DUSE_MMAP  -c -o inflate.o inflate.c
gcc -O3 -DUSE_MMAP  -c -o infback.o infback.c
gcc -O3 -DUSE_MMAP  -c -o inftrees.o inftrees.c
gcc -O3 -DUSE_MMAP  -c -o inffast.o inffast.c
ar rc libz.a adler32.o compress.o crc32.o gzio.o uncompr.o deflate.o trees.o zutil.o inflate.o
infback.o inftrees.o inffast.o
gcc -O3 -DUSE_MMAP -o example example.o -L. libz.a
gcc -O3 -DUSE_MMAP -c -o minigzip.o minigzip.c
gcc -O3 -DUSE_MMAP -o minigzip minigzip.o -L. libz.a

On teste:

make test

hello world
zlib version 1.2.3 = 0x1230, compile flags = 0x55
uncompress(): hello, hello!
gzread(): hello, hello!
gzgets() after gzseek: hello!
inflate(): hello, hello!
large_inflate(): OK
after inflateSync(): hello, hello!
inflate with dictionary: hello, hello!
*** zlib test OK ***

Et on installe:

make install

cp zlib.h zconf.h /usr/local/include
chmod 644 /usr/local/include/zlib.h /usr/local/include/zconf.h
cp libz.a /usr/local/lib
cd /usr/local/lib; chmod 755 libz.a
cd /usr/local/lib; if test -f libz.so.1.2.3; then \
rm -f libz.so libz.so.1; \
ln -s libz.so.1.2.3 libz.so; \
ln -s libz.so.1.2.3 libz.so.1; \
 (ldconfig || true)  >/dev/null 2>&1; \
fi
cp zlib.3 /usr/local/share/man/man3
chmod 644 /usr/local/share/man/man3/zlib.3

Une nouvelle librairie statique a été compilée:

ls -la /usr/local/lib/libz.a

-rwxr-xr-x 1 root staff  89092 2007-08-17 19:53 libz.a

Apache 1.3.37 : compiler et installer libpng 

Cette librairie à besoin de zlib 

Télécharger libpng 

On se place dans notre répertoire ServeurWeb:

cd /usr/local/ServeurWeb

On télécharge l'archive sur le site officiel libpng.org  ou avec wget:

wget http://prdownloads.sourceforge.net/libpng/libpng-1.2.18.tar.gz?download

On contrôle l'intégrité du fichier:

md5sum libpng-1.2.18.tar.gz

bd08a55e319022a7cdc6e3882d6b9497 libpng-1.2.18.tar.gz

...que l'on contrôle avec la signature proposée en ligne sur la page de téléchargement:

bd08a55e319022a7cdc6e3882d6b9497

On extrait le contenu de l'archive:

tar zxfv libpng-1.2.18.tar.gz

On se place dans le répertoire de la librairie:

cd libpng-1.2.18

Compiler et installer libpng 

On crée le Makefile (on refuse la création de librairies dynamiques/partagées):

./configure --disable-shared

On compile:

make check

...
...
make  check-TESTS
make[1]: entrant dans le répertoire « /usr/local/ServeurWeb/libpng-1.2.18 »
Testing libpng version 1.2.18
with zlib   version 1.2.3
 
libpng version 1.2.18 - May 15, 2007
Copyright (c) 1998-2007 Glenn Randers-Pehrson
Copyright (c) 1996-1997 Andreas Dilger
Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
library (10218): libpng version 1.2.18 - May 15, 2007 (header)
pngtest (10218): libpng version 1.2.18 - May 15, 2007 (header)
png_sizeof(png_struct)=728, png_sizeof(png_info)=288
Testing ./pngtest.png:
Pass 0: rwrwrwrwrwrwrwrwrw
Pass 1: rwrwrwrwrwrwrwrwrw
Pass 2: rwrwrwrwrwrwrwrw
Pass 3: rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw
Pass 4: rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw
Pass 5: rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw
rwrwrwrw
Pass 6: rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw
rwrwrwrwrw
PASS (9782 zero samples)
Filter 0 was used 21 times
Filter 1 was used 15 times
Filter 2 was used 52 times
Filter 3 was used 10 times
Filter 4 was used 33 times
TIME = 7 Jun 1996 17:58:08 +0000
libpng passes test
PASS: test-pngtest.sh
==================
All 1 tests passed
==================
make[1]: quittant le répertoire « /usr/local/ServeurWeb/libpng-1.2.18 »

La 4ème ligne du message ci-dessous nous indique que les librairies zlib que nous avons précédemment compilées ont bien été prises en compte.

On termine en installant les librairies:

make install

Voici les nouvelles librairies statiques compilées:

ls -la /usr/local/lib/libpng*

-rw-r--r-- 1 root staff 189652 2007-08-17 20:39 libpng12.a
-rwxr-xr-x 1 root staff  753 2007-08-17 20:39 libpng12.la
lrwxrwxrwx 1 root staff 10 2007-08-17 20:39 libpng.a -> libpng12.a
lrwxrwxrwx 1 root staff 11 2007-08-17 20:39 libpng.la -> libpng12.la

Apache 1.3.37 : compiler et installer libxml2 

Cette librairie est nécessaire à la compilation de libxslt que nous compilerons tout à l'heure.

Sur cette page du site xmlsoft.org vous trouverez les dernières versions de la librairie: dernière version  de la librairie libxml. 

Télécharger libxml2 

On se place dans notre répertoire ServeurWeb:

cd /usr/local/ServeurWeb

On télécharge l'archive à partir de ce site ftp  ou directement avec wget:

wget ftp://fr.rpmfind.net/pub/libxml/libxml2-2.6.29.tar.gz

On extrait le contenu de l'archive:

tar zxfv libxml2-2.6.29.tar.gz

On se place dans le répertoire de la librairie:

cd libxml2-2.6.29

Compiler et installer libxml2 

Pour être compilée, cette librairie n'en requière aucune autre.

Par ailleurs, l'aide renvoyée par la commande ./configure --help nous indique que beaucoup d'options sont compilées par défaut.

On crée le Makefile (on refuse la création de librairies dynamiques/partagées):

./configure --disable-shared

On compile:

make

Et on installe:

make install

Voici les nouvelles librairies statiques compilées:

ls -la /usr/local/lib/libxml2.*

-rw-r--r-- 1 root staff 1849624 2007-08-17 21:58 libxml2.a
-rwxr-xr-x 1 root staff 754 2007-08-17 21:58 libxml2.la
-rw-r--r-- 1 root staff  211 2007-08-17 21:58 xml2Conf.sh

Apache 1.3.37 : compiler et installer libgpg-error 

Cette librairie est nécessaire à la compilation de libgrypt

Cette librairie est liée au développement du logiciel GnuPG  et sur cette page  vous trouverez une description de libgpg-error 

  •  Pour compiler cette librairie il faut installer g++.

Télécharger libgpg-error 

On se place dans notre répertoire ServeurWeb:

cd /usr/local/ServeurWeb

On télécharge l'archive à partir de la page gnupg.org  ou directement avec wget:

wget ftp://ftp.gnupg.org/gcrypt/libgpg-error/libgpg-error-1.4.tar.gz

On extrait le contenu de l'archive:

tar zxfv libgpg-error-1.4.tar.gz

On se place dans le répertoire de la librairie:

cd libgpg-error-1.4

Compiler et installer libgpg-error 

On crée le Makefile (on refuse la création de librairies dynamiques/partagées):

./configure --disable-shared

On compile:

make

Et on installe:

make install

Voici les nouvelles librairies statiques compilées:

ls -la /usr/local/lib/libgpg-error.*

-rw-r--r-- 1 root staff  13830 2007-08-17 22:58 libgpg-error.a
 -rwxr-xr-x 1 root staff 771 2007-08-17 22:58 libgpg-error.la

Apache 1.3.37 : compiler et installer libgcrypt 

Cette librairie est nécessaire (pas obligatoire) à libxslt.

Cette librairie est liée au développement du logiciel GnuPG  et sur cette page  vous trouverez une description de libgcrypt 

  •  Pour compiler cette librairie il faut installer g++.

Télécharger libgcrypt 

On se place dans notre répertoire ServeurWeb:

cd /usr/local/ServeurWeb

On télécharge l'archive à partir de la page gnupg.org  ou directement avec wget:

wget ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-1.2.4.tar.bz2

On extrait le contenu de l'archive:

tar jxfv libgcrypt-1.2.4.tar.bz2

On se place dans le répertoire de la librairie:

cd libgcrypt-1.2.4

Compiler et installer libgcrypt 

On crée le Makefile (on refuse la création de librairies dynamiques/partagées):

./configure --disable-shared --with-gpg-error-prefix=/usr/local

On compile:

make

Et on installe:

make install

Voici les nouvelles librairies statiques compilées:

ls -la /usr/local/lib/libgcrypt.*

-rw-r--r-- 1 root staff 482512 2007-08-17 23:05 libgcrypt.a
 -rwxr-xr-x 1 root staff 813 2007-08-17 23:05 libgcrypt.la

Apache 1.3.37 : compiler et installer libmcrypt 

  •  Nécessite l'installation de g++ pour être compilé
  •  Cette librairie est nécessaire à la compilation de mycrypt lui nécessaire au fonctionnement de phpMyAdmin .

Voici le lien vers le site officiel du projet: libmcrypt  

Télécharger libmcrypt 

On se place dans notre répertoire ServeurWeb:

cd /usr/local/ServeurWeb

On télécharge l'archive à partir de cette page  ou directement avec wget:

wget http://downloads.sourceforge.net/mcrypt/libmcrypt-2.5.8.tar.gz?modtime=1171868460&big_mirror=0

On extrait le contenu de l'archive:

tar zxfv libmcrypt-2.5.8.tar.gz

On se place dans le répertoire de la librairie:

cd libmcrypt-2.5.8

Compiler et installer libmcrypt 

On crée le Makefile (on refuse la création de librairies dynamiques).

./configure --enable-shared --enable-static --disable-posix-threads

 :
 L'option --disable-posix-threads est obligatoire (voir cette page de php.net )
 

On compile:

make

On lance le test:

make check

...
...
PASS: ciphertest
AES tests (CFB, nCFB, nOFB, CTR) were successful.
PASS: aestest
==================
All 2 tests passed
==================
make[2]: quittant le répertoire « /usr/local/ServeurWeb/libmcrypt-2.5.8/src »
make[1]: quittant le répertoire « /usr/local/ServeurWeb/libmcrypt-2.5.8/src »
Making check in doc
make[1]: entrant dans le répertoire « /usr/local/ServeurWeb/libmcrypt-2.5.8/doc »
make[1]: Rien à faire pour « check ».
make[1]: quittant le répertoire « /usr/local/ServeurWeb/libmcrypt-2.5.8/doc »
make[1]: entrant dans le répertoire « /usr/local/ServeurWeb/libmcrypt-2.5.8 »
make[1]: quittant le répertoire « /usr/local/ServeurWeb/libmcrypt-2.5.8 »

Et on installe:

make install

Voici les nouvelles librairies compilées:

ls -la /usr/local/lib/libmcrypt*

-rw-r--r-- 1 root staff 302296 2007-08-21 15:19 /usr/local/lib/libmcrypt.a
 -rwxr-xr-x 1 root staff 806 2007-08-21 15:19 /usr/local/lib/libmcrypt.la
 lrwxrwxrwx 1 root staff 18 2007-08-21 15:19 /usr/local/lib/libmcrypt.so -> libmcrypt.so.4.4.8
 lrwxrwxrwx 1 root staff 18 2007-08-21 15:19 /usr/local/lib/libmcrypt.so.4 -> libmcrypt.so.4.4.8
 -rwxr-xr-x 1 root staff 228605 2007-08-21 15:19 /usr/local/lib/libmcrypt.so.4.4.8

Prise en compte des nouvelles librairies

Pour que le système prenne en compte les nouvelles librairies partagées du répertoires /usr/local/lib/ il faut commencer par s'assurer que la commande ldconfig regarde dans ce répertoire. Pour cela, il suffit de lancer cette commande:

ldconfig

Puis on recherche dans son cache, par exemple, la librairie libmcrypt.so:

ldconfig --print-cache |grep libmcrypt

libmcrypt.so.4 (libc6) => /usr/local/lib/libmcrypt.so.4
libmcrypt.so.4 (libc6) => /usr/lib/libmcrypt.so.4
libmcrypt.so (libc6) => /usr/local/lib/libmcrypt.so
libmcrypt.so (libc6) => /usr/lib/libmcrypt.so

 Si la première ou troisième ligne n'apparaît pas, alors il faut éditer le fichier de configuration /etc/ld.so.conf et y placer cette ligne:
 

/usr/local/lib

Puis relancer les deux commandes ci-dessus.

Apache 1.3.37 : compiler et installer mcrypt 

Cette librairie est nécessaire (pas obligatoire) à libxslt.

Voici le lien vers le site officiel de libmcrypts: mcrypt  

Pour s'assurer que les binaires mcrypt et mdecrypt seront compilés en static et n'utiliseront pas de librairies dynamiques, il faut désinstaller les trois paquets suivants:

  •  libmcrypt4
  •  php4-mcrypt
  •  libmcrypt-dev

Télécharger mcrypt 

On se place dans notre répertoire ServeurWeb:

cd /usr/local/ServeurWeb

On télécharge l'archive à partir de cette page  ou directement avec wget:

wget http://downloads.sourceforge.net/mcrypt/mcrypt-2.6.6.tar.gz?modtime=1181390179&big_mirror=0

On extrait le contenu de l'archive:

tar zxfv mcrypt-2.6.6.tar.gz

On se place dans le répertoire de la librairie:

cd mcrypt-2.6.6

Compiler et installer mcrypt 

On crée le Makefile:

 :
 L'option --with-included-gettext est donnée dans le fichier INSTALL 
 

./configure --enable-shared --enable-static --enable-static-link --with-libmcrypt-prefix=/usr/local --with-included-gettext

On compile:

make

Et on installe:

make install

Voici les nouveaux binaires compilés:

ls -la /usr/local/bin/m*crypt*

-rwxr-xr-x 1 root staff 643911 2007-08-21 15:36 /usr/local/bin/mcrypt
 lrwxrwxrwx 1 root staff 6 2007-08-21 15:36 /usr/local/bin/mdecrypt -> mcrypt

Contrôler les dépendances d'un exécutable

Nous diposons d'un outil très pratique permettant de savoir instantanément les librairies dynamiques chargées/utilisées par les binaires (exécutables). On peut dès lors contrôler que le binaire mcrypt que l'on vient de compiler n'utilise pas de librairie partagé libmrypt. Pour cela, il suffit de lancer la commande suivante:

 ldd /usr/local/bin/mcrypt
 

linux-gate.so.1 =>  (0xffffe000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7e4d000)
/lib/ld-linux.so.2 (0xb7f86000)

Avant de supprimer les trois packages sités ci-dessus, j'ai fait une première compilation, puis j'ai lancé la commande ldd:

ldd /usr/local/bin/mcrypt

linux-gate.so.1 => (0xffffe000)
libmcrypt.so.4 => /usr/lib/libmcrypt.so.4 (0xb7f0a000) <==== ICI !!!
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7dd9000)
/lib/ld-linux.so.2 (0xb7f40000)

C'est comme ça que j'ai compris qu'il fallait supprimer les trois packages.

Apache 1.3.37 : compiler et installer libxslt 

Sur cette page du site xmlsoft.org vous trouverez les dernières versions de la librairie: dernière version  de la librairie libxslt.

Télécharger libxslt 

On se place dans notre répertoire ServeurWeb:

cd /usr/local/ServeurWeb

On télécharge l'archive à partir de ce site ftp  ou directement avec wget:

wget ftp://fr.rpmfind.net/pub/libxml/libxslt-1.1.21.tar.gz

On extrait le contenu de l'archive:

tar zxfv libxslt-1.1.21.tar.gz

On se place dans le répertoire de la librairie:

cd libxslt-1.1.21

Compiler et installer libxslt 

On crée le Makefile:

 :
 Pour ne pas avoir de message d'erreur lié à libexslt.a et crypto.o lors de la compilation de Apache, il est indispensable de compiler, aussi, les librairies dynamiques de xslt.
 

./configure --enable-shared --enable-static --with-libxml-include-prefix=/usr/local --with-libxml-prefix=/usr/local --with-libxml-libs-prefix=/usr/local --with-crypto=/usr/local

On compile:

make

On lance le test:

make check

...
...
Current Date : 2007-08-21T15:48:56+01:00
year : 2007
leap-year : false
month-in-year : 8
month-name : August
month-abbreviation&nbsp; : Aug
week-in-year : 34
day-in-year : 233
day-in-month : 21
day-of-week-in-month : 3
day-in-week : 3
day-name : Tuesday
day-abbreviation : Tue
time : 15:48:56+01:00
hour-in-day : 15
minute-in-hour : 48
second-in-minute : 56
## Running exslt common tests
make[5]: quittant le répertoire « /usr/local/ServeurWeb/libxslt-1.1.21/tests/exslt/date »
make[4]: quittant le répertoire « /usr/local/ServeurWeb/libxslt-1.1.21/tests/exslt »
make[4]: entrant dans le répertoire « /usr/local/ServeurWeb/libxslt-1.1.21/tests/plugins »
## Running plugin tests
mkdir .libs
&nbsp;gcc -DHAVE_CONFIG_H -I. -I. -I../.. -I../.. -I../../libxslt -I/usr/local -I/usr/local/include/libxml2
-DMODULE_COMPILE -I/usr/local -I/usr/local/include/libxml2 -O3 -Wall -MT
xmlsoft_org_xslt_testplugin_la-testplugin.lo -MD -MP -MF
.deps/xmlsoft_org_xslt_testplugin_la-testplugin.Tpo -c testplugin.c -fPIC -DPIC -o 
.libs/xmlsoft_org_xslt_testplugin_la-testplugin.o
&nbsp;gcc -DHAVE_CONFIG_H -I. -I. -I../.. -I../.. -I../../libxslt -I/usr/local -I/usr/local/include/libxml2
-DMODULE_COMPILE -I/usr/local -I/usr/local/include/libxml2 -O3 -Wall -MT 
xmlsoft_org_xslt_testplugin_la-testplugin.lo -MD -MP -MF
.deps/xmlsoft_org_xslt_testplugin_la-testplugin.Tpo -c testplugin.c -o
xmlsoft_org_xslt_testplugin_la-testplugin.o >/dev/null 2>&1
gcc -shared .libs/xmlsoft_org_xslt_testplugin_la-testplugin.o -Wl,--rpath -Wl,
/usr/local/ServeurWeb/libxslt-1.1.21/libxslt/.libs -Wl,--rpath -Wl,/usr/local/lib
&nbsp;../../libxslt/.libs/libxslt.so -L/usr/local -L/usr/local/lib /usr/local/lib/libxml2.a -lz -lm -Wl,
-soname -Wl, xmlsoft_org_xslt_testplugin.so -o. libs/xmlsoft_org_xslt_testplugin.so
ar cru .libs/xmlsoft_org_xslt_testplugin.a xmlsoft_org_xslt_testplugin_la-testplugin.o
ranlib .libs/xmlsoft_org_xslt_testplugin.a
creating xmlsoft_org_xslt_testplugin.la
(cd .libs && rm -f xmlsoft_org_xslt_testplugin.la && ln -s ../xmlsoft_org_xslt_testplugin.la
xmlsoft_org_xslt_testplugin.la)
make[4]: quittant le répertoire « /usr/local/ServeurWeb/libxslt-1.1.21/tests/plugins »
make[3]: quittant le répertoire « /usr/local/ServeurWeb/libxslt-1.1.21/tests »
make[2]: quittant le répertoire « /usr/local/ServeurWeb/libxslt-1.1.21 »
make[1]: quittant le répertoire « /usr/local/ServeurWeb/libxslt-1.1.21 »

Et on installe:

make install

Voici les nouvelles librairies compilées:

ls -la /usr/local/lib/lib*xslt.*

-rw-r--r-- 1 root staff&nbsp; 91558 2007-08-21 15:51 /usr/local/lib/libexslt.a
-rwxr-xr-x 1 root staff 907 2007-08-21 15:51 /usr/local/lib/libexslt.la
lrwxrwxrwx 1 root staff 18 2007-08-21 15:51 /usr/local/lib/libexslt.so -> libexslt.so.0.8.13
lrwxrwxrwx 1 root staff 18 2007-08-21 15:51 /usr/local/lib/libexslt.so.0 -> libexslt.so.0.8.13
-rwxr-xr-x 1 root staff 508733 2007-08-21 15:51 /usr/local/lib/libexslt.so.0.8.13
-rw-r--r-- 1 root staff 277410 2007-08-21 15:51 /usr/local/lib/libxslt.a
-rwxr-xr-x 1 root staff 837 2007-08-21 15:51 /usr/local/lib/libxslt.la
lrwxrwxrwx 1 root staff 17 2007-08-21 15:51 /usr/local/lib/libxslt.so -> libxslt.so.1.1.21
lrwxrwxrwx 1 root staff 17 2007-08-21 15:51 /usr/local/lib/libxslt.so.1 -> libxslt.so.1.1.21
-rwxr-xr-x 1 root staff 1987683 2007-08-21 15:51 /usr/local/lib/libxslt.so.1.1.21

Prise en compte des nouvelles librairies

Pour que le système prenne en compte les nouvelles librairies partagées du répertoires /usr/local/lib/ il faut commencer par s'assurer que la commande ldconfig regarde dans ce répertoire. Pour cela, il suffit de lancer cette commande:

ldconfig

Puis on recherche dans son cache, par exemple, la librairie libxslt.so.1:

ldconfig --print-cache |grep libxslt

libxslt.so.1 (libc6) => /usr/local/lib/libxslt.so.1
libxslt.so.1 (libc6) => /usr/lib/libxslt.so.1
libxslt.so (libc6) => /usr/local/lib/libxslt.so
libxslt.so (libc6) => /usr/lib/libxslt.so

 Si la première ou troisième ligne n'apparaît pas, alors il faut éditer le fichier de configuration /etc/ld.so.conf et y placer cette ligne:
 

/usr/local/lib

Puis relancer les deux commandes ci-dessus.

Apache 1.3.37 : compiler et installer libgd2 

  •  Cette librairie est nécessaire au fonctionnement de phpMyAdmin .

Sur cette page du site libgd.org vous trouverez les dernières versions de la librairie: dernière version  de la librairie libgd.

Pour être compilée, il faut installer sur le système:

  •  libfreetype6-dev
  •  libjpeg62-dev
  •  libxpm-dev ou libgd2-xpm-dev (ou les deux ?)
  •  libfontconfig1-dev

Une fois installés, il n'y a rien à faire d'autre.

Il est bien sûr possible de compiler/installer ces librairies plutôt que d'avoir recours aux packages Debian.

Télécharger libgd2 

On se place dans notre répertoire ServeurWeb:

cd /usr/local/ServeurWeb

On télécharge l'archive (et éventuellement la signature md5) à partir de cette page  ou directement avec wget:

wget http://www.libgd.org/releases/gd-2.0.35.tar.gz

On extrait le contenu de l'archive:

tar zxfv gd-2.0.35.tar.gz

On se place dans le répertoire de la librairie:

cd gd-2.0.35

Compiler et installer libgd2 

On crée le Makefile (on refuse la création de librairies dynamiques/partagées). Aucune option particulière relative aux packages de développement mentionnés ci-dessus n'est nécessaire à la commande ci-dessous.

./configure --disable-shared

...
...
checking for libpng12-config... /usr/local/bin/libpng12-config
checking for libpng-config... /usr/local/bin/libpng-config
checking png.h usability... yes
checking png.h presence... yes
checking for png.h... yes
checking for png_create_read_struct in -lpng12... yes
checking for freetype-config... /usr/bin/freetype-config
checking for FT_Init_FreeType in -lfreetype... yes
checking ft2build.h usability... yes
checking ft2build.h presence... yes
checking for ft2build.h... yes
checking for FcInit in -lfontconfig... yes
checking for jpeg_set_defaults in -ljpeg... yes
checking for XpmReadFileToXpmImage in -lXpm... yes
checking for the pthreads library -lpthreads... no
checking whether pthreads work without any flags... yes
checking for joinable pthread attribute... PTHREAD_CREATE_JOINABLE
checking if more special flags are required for pthreads... no
 
** Configuration summary for gd 2.0.34:
 
 Support for PNG library: yes
 Support for JPEG library: yes
 Support for Freetype 2.x library: yes
 Support for Fontconfig library: &nbsp; yes
 Support for Xpm library: yes
 Support for pthreads: yes
 
configure: creating ./config.status
config.status: creating Makefile
config.status: creating config/Makefile
config.status: creating config/gdlib-config
config.status: creating test/Makefile
config.status: creating config.h
config.status: executing depfiles commands

Les deux premières lignes du message indiquent que ce sont bien les librairies libpng que nous avons compilées qui sont utilisées.

On compile:

make

Et on installe:

make install

Voici les nouvelles librairies statiques compilées:

ls -la /usr/local/lib/libgd.*

-rw-r--r-- 1 root staff 295878 2007-08-17 23:45 libgd.a
-rwxr-xr-x 1 root staff 855 2007-08-17 23:45 libgd.la

Apache 1.3.37 : compiler et installer mhash 

Voici le lien vers le site officiel de mhash: mhash  

Télécharger mhash 

On se place dans notre répertoire ServeurWeb:

cd /usr/local/ServeurWeb

On télécharge l'archive à partir de cette page  ou directement avec wget:

wget http://downloads.sourceforge.net/mhash/mhash-0.9.9.tar.gz?modtime=1175740843&big_mirror=0

On extrait le contenu de l'archive:

tar zxfv mhash-0.9.9.tar.gz

On se place dans le répertoire de la librairie:

cd mhash-0.9.9

Compiler et installer mhash 

On crée le Makefile (on refuse la création de librairies dynamiques/partagées).

./configure --disable-shared

On compile:

make

Et on installe:

make install

Voici les nouvelles librairies statiques compilées:

ls -la /usr/local/lib/libmhash.*

-rw-r--r-- 1 root staff 329336 2007-08-18 13:27 libmhash.a
-rwxr-xr-x 1 root staff 759 2007-08-18 13:27 libmhash.la

Apache 1.3.37 : compiler et installer libmcal 

La compilation de la librairie que l'on trouve sur le site officiel  est problématique. Et pour tout dire, je ne suis jamais arrivé jusqu'au bout.

Il faut commencer par installer une ancienne version de GCC pour pouvoir compiler les drivers, et ensuite on rencontre des problèmes avec l'analyseur syntaxique... bref... autant installer le package debian:

  •  libmcal0-dev

apt-get install libmcal0-dev

L'autre solution, voir ci-dessous, consiste à télécharger les sources du package debian pour les compiler. Pour cela, il faut tout d'abord installer le package apt-src:

apt-get install apt-src

 :
 Même avec cette solution, j'obtiens un beau message d'erreur lors de la compilation de Apache. J'ai donc fini par abandonner et j'installe les packages Debian (qui ne donnent pas plus de résultat d'ailleurs :-(). Je laisse tout de même la procédure pour ceux qui souhaitent quand même essayer.
 

Télécharger libmcal 

On se place dans notre répertoire ServeurWeb:

cd /usr/local/ServeurWeb

Puis on télécharge les sources de la librairie:

apt-get source libmcal0

Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances... Fait
Nécessité de prendre 78,0ko dans les sources.
Réception de : 1 http://ftp.fr.debian.org etch/main libmcal 0.6-16 (dsc) [583B]
Réception de : 2 http://ftp.fr.debian.org etch/main libmcal 0.6-16 (tar) [47,2kB]
Réception de : 3 http://ftp.fr.debian.org etch/main libmcal 0.6-16 (diff) [30,1kB]
78,0ko réceptionnés en 8s (9475o/s)
gpg: Signature made dim 19 fév 2006 22:58:29 CET using DSA key ID 0FE53DD9
gpg: Can't check signature: public key not found
dpkg-source : extraction de libmcal dans libmcal-0.6
dpkg-source : extraction de libmcal_0.6.orig.tar.gz
dpkg-source : ./libmcal_0.6-16.diff.gz

 :
 Les 3 fichiers téléchargés sont placés à la racine du répertoire à partir duquel est lancé la commande et l'extraction du contenu de l'archive tar fait automatiquement (voir l'antépénultième ligne du message ci-dessus).
 

Compiler et installer les drivers icap et mstore 

Pour compiler la librairie, il faut d'abord compiler les deux drivers icap et mstore qu'elle contient. Donc on commence par se placer dans le répertoire de icap:

cd libmcal-0.6/icap

On édite le Makefile pré-existant pour modifier les chemins qui ne sont pas, par défaut, les bons:

vi Makefile

...
 &nbsp;7 INCLUDE = -I.. -I. -I/usr/local/include
...
...
 18 &nbsp; &nbsp; mkdir -p $(DESTDIR)/usr/local/include/icap
 19 &nbsp; &nbsp; install -m644 *.h $(DESTDIR)/usr/local/include/icap
...
...

On compile:

make

gcc -O3 -D_REENTRANT -Wall -I.. -I. -I/usr/local/include -c -o icap.o icap.c
gcc -O3 -D_REENTRANT -Wall -I.. -I. -I/usr/local/include -c -o icaproutines.o icaproutines.c
flex icapscanner.lex
gcc -O3 -D_REENTRANT -Wall -I.. -I. -I/usr/local/include -c -o lex.icap_yy.o lex.icap_yy.c
ld -r -o icap_driver.o icap.o icaproutines.o lex.icap_yy.o
gcc -c -fPIC -O3 -D_REENTRANT -Wall -I.. -I. -I/usr/local/include -o icap.lo icap.c
gcc -c -fPIC -O3 -D_REENTRANT -Wall -I.. -I. -I/usr/local/include -o icaproutines.lo icaproutines.c
gcc -c -fPIC -O3 -D_REENTRANT -Wall -I.. -I. -I/usr/local/include -o lex.icap_yy.lo lex.icap_yy.c
ld -r -o icap_driver.lo icap.lo icaproutines.lo lex.icap_yy.lo
touch bootstrap.in

Puis on installe:

make install

touch bootstrap.in
mkdir -p /usr/local/include/icap
install -m644 *.h /usr/local/include/icap

On se déplace dans le répertoire de mstore:

cd ../mstore

On édite le Makefile pré-existant pour modifier les chemins qui ne sont pas, par défaut, les bons:

vi Makefile

...
...
 &nbsp;7 INCLUDE = -I.. -I. -I/usr/local/include
...
...
 18 mkdir -p $(DESTDIR)/usr/local/include/mstore
 19 install -m644 *.h $(DESTDIR)/usr/local/include/mstore
...

On compile:

make

gcc -O3 -D_REENTRANT -Wall -I.. -I. -I/usr/local/include &nbsp; -c -o mstore.o mstore.c
mstore.c: In function ‘read_event’:
mstore.c:285: warning: pointer targets in passing argument 2 of ‘ical_preprocess’ differ in
signedness mstore.c: In function ‘mstore_store’:
mstore.c:596: warning: assignment discards qualifiers from pointer target type
ld -r -o mstore_driver.o mstore.o
gcc -c -fPIC -O3 -D_REENTRANT -Wall -I.. -I. -I/usr/local/include &nbsp;-o mstore.lo mstore.c
mstore.c: In function ‘read_event’:
mstore.c:285: warning: pointer targets in passing argument 2 of ‘ical_preprocess’ differ in
signedness mstore.c: In function ‘mstore_store’:
mstore.c:596: warning: assignment discards qualifiers from pointer target type
ld -r -o mstore_driver.lo mstore.lo
touch bootstrap.in

Puis on installe:

make install

touch bootstrap.in
mkdir -p /usr/local/include/mstore
install -m644 *.h /usr/local/include/mstore

Compiler et installer libmcal 

On se place dans le répertoire de la librairie:

cd ..

On rend le fichier configure exécutable:

chmod +x configure

On crée le Makefile:

./configure --disable-shared --with-icap --with-mstore --prefix=/usr/local

On édite le Makefile qui est créé par la commande ./configure à partir du fichier Makefile.in pour modifier des chemins:

vi Makefile

...
...
 38 mkdir -p $(DESTDIR)/usr/local/lib
 39 cp -af *.so* $(DESTDIR)/usr/local/lib
 40 cp -af $(LIBCAL) $(DESTDIR)/usr/local/lib
 41 mkdir -p $(DESTDIR)/usr/local/include
 42 cp -af *.h $(DESTDIR)/usr/local/include
...

On compile:

make

...
...
gcc -O3 -D_REENTRANT -Wall -Imstore -Iicap -I. -c -o lex.ical_yy.o lex.ical_yy.c
gcc -O3 -D_REENTRANT -Wall -Imstore -Iicap -I. -c -o icalroutines.o icalroutines.c
icalroutines.c: In function ‘ical_parse_vevent’:
icalroutines.c:247: warning: pointer targets in passing argument 1 of ‘cal_decode_base64’ differ in
 signedness
icalroutines.c:247: warning: pointer targets in assignment differ in signedness
icalroutines.c: In function ‘icalout_string’:
icalroutines.c:545: warning: pointer targets in passing argument 2 of ‘ical_encode_base64’ differ in
 signedness
gcc -O3 -D_REENTRANT -Wall -Imstore -Iicap -I. -c -o cal_misc.o cal_misc.c
rm -f libmcal.a
ar r libmcal.a mcal.o datetime.o lex.ical_yy.o icalroutines.o cal_misc.o icap/icap_driver.o
 mstore/mstore_driver.o
ar: création de libmcal.a

Et on install:

make install

Voici les nouvelles librairies compilées:

ls -la /usr/local/lib/libmcal.*

-rw-r--r-- 1 root root 79082 2007-08-18 15:40 libmcal.a
 lrwxrwxrwx 1 root root 14 2007-08-18 15:46 libmcal.so -> libmcal.so.0.6
 lrwxrwxrwx 1 root root 14 2007-08-18 15:46 libmcal.so.0 -> libmcal.so.0.6
 -rwxr-xr-x 1 root root 60388 2007-08-18 15:40 libmcal.so.0.6

Problèmes rencontrés

Il m'a été impossible de compiler:

  •  libzzip ou zziplib
  •  ImageMagick (Ce logiciel est indispensable à l'affichage des vignettes, etc... dans l'interface d'administration de eZ Publish)

...que ce soit les archives récupérées sur les sites officiels ou les sources des packages Debian.

Commentaires