2.6 Notes spécifiques aux systèmes d'exploitation
2 Installer MySQL
Manuel de Référence MySQL 4.1 : Version Française
. Notes relatives à Linux (toutes versions) . Notes relatives à Mac OS X ->Notes pour Solaris . Notes relatives à BSD . Notes sur les autres Unix . Notes relatives à OS/2 . Notes relatives à BeOS
|
2.6.3 Notes pour Solaris
Sous Solaris, vous pouvez rencontrer des problèmes avant même d'avoir
désarchivé la distribution MySQL! Le programme
tar
de Solaris
ne peut pas manipuler de noms de fichiers longs, provoquant les messages suivants quand
vous décompressez MySQL :
x mysql-3.22.12-beta/bench/Results/ATIS-mysql_odbc-NT_4.0-cmp-db2,\ informix,ms-sql,mysql,oracle,solid,sybase, 0 bytes, 0 tape blocks tar: directory checksum error
|
Dans ce cas, vous devez utiliser GNU
tar
(
gtar
) pour désarchiver la
distribution. Vous pouvez en trouver une copie précompilée pour Solaris sur
http://www.mysql.com/Downloads/ .La gestion native des threads Sun fonctionne uniquement depuis Solaris 2.5. Pour les
versions 2.4 et antérieures, MySQL utilisera automatiquement les
MIT-pthreads
.
Remarques sur MIT-pthreads .
Vous pouvez rencontrer les erreurs suivantes lors du configure:
checking for restartable system calls... configure: error can not run test programs while cross compiling
|
Cela signifie que l'installation de votre compilateur est défectueuse!
Dans ce cas, vous devez mettre à jour votre compilateur en faveur d'une version
plus récente. Vous pouvez aussi résoudre le problème en innérant
la ligne suivante dans le fichier
config.cache
:
ac_cv_sys_restartable_syscalls=${ac_cv_sys_restartable_syscalls='no'}
|
Si vous utilisez Solaris sur une architecture SPARC, nous recommandons
gcc
2.95.2
comme compilateur. Vous pouvez le trouver sur http://gcc.gnu.org/ .
Notez que
egcs
1.1.1 et
gcc
2.8.1 ne fonctionnent pas correctement sur
SPARC!La ligne
configure
recommandée dans le cas de l'utilisation de
gcc
2.95.2 est:
CC=gcc CFLAGS="-O3" \ CXX=gcc CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti" \ ./configure --prefix=/usr/local/mysql --with-low-memory --enable-assembler
|
Si vous avez une machine UltraSPARC, vous pouvez gagner 4% de performances
supplémentaires en ajoutant "
-mcpu=v8 -Wa,-xarch=v8plusa
" à CFLAGS et CXXFLAGS.Si vous utilisez le compilateur Forte 5.0 (et supérieur) de Sun, vous pouvez
lancer
configure
de la façon suivante :
CC=cc CFLAGS="-Xa -fast -native -xstrconst -mt" \ CXX=CC CXXFLAGS="-noex -mt" \ ./configure --prefix=/usr/local/mysql --enable-assembler
|
Vous pouvez créer un binaire 64 bits avec :
CC=cc CFLAGS="-Xa -fast -native -xstrconst -mt -xarch=v9" \ CXX=CC CXXFLAGS="-noex -mt -xarch=v9" \ ./configure --prefix=/usr/local/mysql --enable-assembler
|
Lors de bancs de tests MySQL, nous avons gagné 4% en vitesse sur une UltraSPARC en
utilisant Forte 5.0 en mode 32 bits plutôt que gcc 3.2 avec les marqueurs -mcpu.
Si vous créez un binaire 64 bits, il est de 4% plus lent que le binaire 32 bits, mais
en contrepartie vous pouvez gérer davantage de treads et de mémoire.
Si vous rencontrez des problèmes avec
fdatasync
ou
sched_yield
,
vous pouvez les résoudre en ajoutant
LIBS=-lrt
à la ligne configure.
Le paragraphe suivant ne s'applique qu'aux compilateurs plus anciens que WorkShop 5.3 :
Vous pouvez avoir à modifier le script
configure
et changer la ligne :
#if !defined(__STDC__) || __STDC__ != 1
|
en :
Si vous activez
__STDC__
avec l'option
-Xc
, le compilateur Sun ne peut
pas compiler avec le fichier d'entêtes
pthread.h
de Solaris. C'est un bogue de
Sun (compilateur ou fichier d'inclusion défectueux).
Si
mysqld
génère les messages d'erreur suivants lorsque vous le
lancez, cela est du au fait que vous avez compilé MySQL avec le compilateur de Sun
sans activer l'option multi-threads (
-mt
):
libc internal error: _rmutex_unlock: rmutex not held
|
Ajoutez
-mt
à
CFLAGS
et
CXXFLAGS
puis réessayez.
Si vous utilisez la version SFW de gcc (fournie avec Solaris 8),
vous devez ajouter
/opt/sfw/lib
à la variable d'environnement
LD_LIBRARY_PATH
avant de lancer le configure.
Si vous utilisez le gcc disponible sur
sunfreeware.com
, vous pouvez rencontrer
de nombreux problèmes. Vous devriez recompiler gcc et les GNU binutils sur la machine à partir de laquelle vous les utiliserez, afin d'éviter tout souci.
Si vous obtenez l'erreur suivante lorsque vous compilez MySQL avec
gcc
,
cela signifie que votre
gcc
n'est pas configuré pour votre version de Solaris :
shell> gcc -O3 -g -O2 -DDBUG_OFF -o thr_alarm ... ./thr_alarm.c: In function `signal_hand': ./thr_alarm.c:556: too many arguments to function `sigwait'
|
La meilleure chose à faire dans ce cas est d'obtenir la version la plus
récente de
gcc
et de compiler avec votre
gcc
actuel! Au moins pour Solaris 2.5, la plupart des versions binaires de
gcc
ont d'anciens fichiers
d'inclusion inutilisables qui planteront les programmes qui utilisent les threads (ainsi
probablement d'autres programmes)!
Solaris ne fournit pas de versions statiques de toutes les bibliothèques système
(
libpthreads
et
libdl
), vous ne pouvez donc pas compiler MySQL
avec
--static
. Si vous tentez de le faire, vous obtiendrez l'erreur :
ld: fatal: library -ldl: not found undefined reference to `dlopen' cannot find -lrt
|
Si de nombreux processus essaient de se connecter très rapidement à
mysqld
, vous verrez cette erreur dans le journal MySQL :
Error in accept: Protocol error
|
Pour éviter cela, vous pouvez lancer le serveur avec l'option
--set-variable back_log=50
. Veuillez noter que
--set-variable
est
déprécié depuis MySQL 4.0, utilisez uniquement
--back_log=50
.Si vous liez votre propre client MySQL, vous pouvez avoir l'erreur suivante quand
vous le lancez :
ld.so.1: ./my: fatal: libmysqlclient.so.#: open failed: No such file or directory
|
Le problème peut être évité avec l'une des méthodes suivantes :
-
Liez le client avec le marqueur suivant (à la place de
-Lpath
) :
-Wl,r/full-path-to-libmysqlclient.so
.
-
Copiez
libmysqclient.so
dans
/usr/lib
.
-
Ajoutez le chemin du répertoire où
libmysqlclient.so
est
installé à la variable d'environnement
LD_RUN_PATH
avant de
lancer votre client.
Si vous avez des soucis avec configure qui essaie de lier avec
-lz
et que
vous n'avez pas installé
zlib
, vous avez deux solutions :
-
Si vous voulez utiliser le protocole compressé de communication, vous devrez
vous procurer et installer zlib sur ftp.gnu.org.
-
Configurez avec
--with-named-z-libs=no
.
Si vous utilisez gcc et rencontrez des problèmes en chargeant la fonction
UDF
dans MySQL, essayez d'ajouter
-lgcc
à la ligne de liaison de la
fonction
UDF
.
Si vous voulez que MySQL se lance automatiquement, vous pouvez copier
support-files/mysql.server
dans
/etc/init.d
et créer un lien
symbolique pointant dessus et s'appelant
/etc/rc3.d/S99mysql.server
.
Comme Solaris ne supporte pas les fichiers core pour les applications
setuid()
, vous
ne pouvez pas obtenir un fichier core de
mysqld
si vous utilisez l'option
--user
.
Sommaire :
|