Installation des packages MySQL sous Solaris

Introduction

Cette documentation s'attarde sur l'installation des packages MySQL en environnement Solaris.

Dans l'environnement évoqué, le user mysql a pour répertoire par défaut (home directory) : /Software/mysql et les versions 4.1.10a et 5.0.4 max sont installées sur une machine Solaris SPARC 2.8 biprocesseur 32 bits.

L'installation ne se fera pas dans le répertoire par défaut /usr/local mais dans le répertoire /Software/mysql, délocalisation qui nécessite des opérations particulières.

Généralités et objectifs

Les packages zippés (extension .gz) MySQL 4.1.10a et 5.0.4 pour Solaris 2.8 (SPARC, 32 bits) sont téléchargés à partir du site Web de MySQL :

  • mysql-max-4.1.10a-sun-solaris2.8.sparc.pkg.gz
  • mysql-max-5.0.4-sun-solaris2.8.sparc.pkg.gz

Dans cette documentation, seule l'installation de la version 5.0.4 beta est présentée, l'installation de la version 4.1.10 étant rigoureusement analogue.

Problème des packages Solaris livrés par MySQL

Un problème majeur se présente avec les packages livrés par MySQL pour Solaris car l'appel de la commande pkgadd -R<target_dir> engendre automatiquement une installation dans le répertoire <target_dir>/usr/local, cependant dans la plupart des environnements, on souhaite généralement installer MySQL dans un environnement normalisé.

Il existe une méthode simple pour générer une installation des packages Solaris MySQL dans un répertoire autre que le répertoire par défaut /usr/local. Cette méthode fait l'objet de cette documentation technique.

Objectif des installations

L'objectif des installations consiste à installer respectivement les packages MySQL 4.1.10a et 5.0.4 respectivement dans les répertoires /Software/mysql/mysql-4.1.10 et /Software/mysql/mysql-5.0.4.

mysql@SRVUNXFR1> cd /Software/mysql
mysql@SRVUNXFR1> ls -lrt
total 10
drwxr-xr-x 3 mysql dba 512 May 6 18:10 mysql-4.1.10
drwxr-xr-x 3 mysql dba 512 May 6 18:12 mysql-5.0.4
lrwxrwxrwx 1 mysql dba 11 May 6 18:17 mysql-5.0 -> mysql-5.0.4
lrwxrwxrwx 1 mysql dba 12 May 6 18:17 mysql-4.1 -> mysql-4.1.10

Installation du package MySQL 5.0.4

Décompression et mise en format fichier du package (pkgtrans)

Avec le user root, le fichier mysql-max-5.0.4-beta-sun-solaris2.8-sparc.pkg.gz est installé dans le répertoire /Software/mysql et l'opération de dézip du package est lancée avec la commande gunzip (pour cette opération, vérifier l'espace disponible dans le filesystem /Software/mysql).

root@SRVUNXFR1> cd /Software/mysql
root@SRVUNXFR1> gunzip mysql-max-5.0.4-beta-sun-solaris2.8-sparc.pkg.gz

Le package MySQL 5.0.4 se présente alors sous la forme d'un seul fichier : mysql-max-5.0.4-beta-sun-solaris2.8-sparc.pkg.

La mise en format fichier du package MySQL 5.0.4 est alors réalisée dans le répertoire /tmp avec la commande pkgtrans :

pkgtrans <package_name> <target_dir>
root@SRVUNXFR1> pkgtrans mysql-max-5.0.4-beta-sun-solaris2.8-sparc.pkg /tmp
The following packages are available:
1 mysql-max mysql
(sun4u) 5.0.4
Select package(s) you wish to process (or 'all' to process
all packages). (default: all) [?,??,q]: 1
Transferring <mysql-max> package instance

A l'issue de la commande pkgtrans, le package MySQL 5.0.4 au format fichier est installé dans le répertoire /tmp/mysql-max, répertoire qui contient les fichiers pkginfo, pkgmap et le répertoire reloc :

root@SRVUNXFR1> cd /tmp/mysql-max
root@SRVUNXFR1> ls -ll
total 352
-rw-r--r-- 1 root sys 173 Apr 17 07:14 pkginfo
-rw-r--r-- 1 root sys 159229 Apr 17 07:14 pkgmap
drwxr-xr-x 3 root sys 215 May 6 16:12 reloc
Le propriétaire des fichiers dans le répertoire /tmp/mysql-max n'est pas forcément root. Si effectivement root n'est pas le propriétaire des fichiers, lancer la commande chown afin que root en soit le propriétaire .
root@SRVUNXFR1> cd /tmp/mysql-max
root@SRVUNXFR1> chown -R root:sys *

Le répertoire reloc

Le répertoire reloc contient le répertoire mysql-max-5.0.4-beta-sun-solaris2.8-sparc, répertoire dans lequel se trouve la distribution MySQL 5.0.

/tmp/mysql-max/reloc /mysql-max-5.0.4-beta-sun-solaris2.8-sparc /bin


/lib


/share


...

Le fichier pkginfo

Le fichier /tmp/mysql-max/pkginfo contient les entrées ci-dessous :

/tmp/mysql-max/pkginfo
PKG=mysql-max
NAME=mysql
ARCH=sun4u
VERSION=5.0.4
CATEGORY=application
VENDOR=MySQL AB
EMAIL=build@mysql.com
PSTAMP=MySQL AB Build Engineers
BASEDIR=/usr/local
CLASSES=none

C'est l'entrée BASEDIR=/usr/local qui est à la source du problème d'installation automatique dans un répertoire /usr/local.

Le fichier pkgmap

Le fichier pkgmap liste tous les fichiers et répertoires dans le répertoire reloc pour l'installation de la distribution, il liste également le propriétaire, le groupe du propriétaire et les droits. Le flag en deuxième position dans le fichier pkgmap permet d'indiquer si il s'agit d'un répertoire (d), d'un fichier (f) ou d'un fichier d'information (i).

Exemple :

...
1 d none mysql-max-5.0.4-beta-sun-solaris2.8-sparc 0755 bin bin
1 f none mysql-max-5.0.4-beta-sun-solaris2.8-sparc/README 0644 bin bin 1937 40976 1113394105
1 d none mysql-max-5.0.4-beta-sun-solaris2.8-sparc/bin 0755 bin bin
...
1 f none mysql-max-5.0.4-beta-sun-solaris2.8-sparc/bin/mysqld 0755 bin bin 7737028 38662 1113411306
...
1 i pkginfo 173 14029 1113714878

Dans l'exemple ci-dessus :

La ligne 1 d none mysql-max-5.0.4-beta-sun-solaris2.8-sparc/bin 0755 bin bin

indique à pkgadd d'installer le répertoire bin dans le répertoire BASEDIR (/usr/local) à partir du répertoire bin dans le répertoire /tmp/mysql-max/reloc/mysql-max-5.0.4-beta-sun-solaris2.8-sparc; ce répertoire aura pour propriétaire bin (groupe bin) avec les droits 0755.

La ligne 1 f none mysql-max-5.0.4-beta-sun-solaris2.8-sparc/bin/mysqld 0755 bin bin

indique à pkgadd d'installer le fichier mysqld dans le répertoire BASEDIR/bin (/usr/local/bin) contenu dans le répertoire /tmp/mysql-max/reloc/mysql-max-5.0.4-beta-sun-solaris2.8-sparc/bin; ce répertoire aura pour propriétaire bin (groupe bin) avec les droits 0755.

Systématiquement, en dernière position dans le fichier pkgmap, le fichier pkginfo est référencé avec le flag i :

1 i pkginfo 173 14029 1113714878

173 correpond au résultat de la commande :

wc -c pkginfo | cut -f6 -d' '

14029 correpond au résultat de la commande :

sum pkginfo | cut -f1 -d' '

1113714878 correpond au résultat de la commande :

grep 'pkginfo' pkgmap | cut -f6 -d' '

Ces valeurs sont essentielles car elles sont analysées par la commande pkgadd pour gérer la cohérence du package.

Personnalisation des fichiers pkgmap et pkginfo

Modification du fichier pkginfo

Pour empêcher la création du répertoire /usr/local, la variable BASEDIR dans le fichier /tmp/mysql-max/pkginfo est modifiée (/usr/local est remplacé par /) :

PKG=mysql-max
NAME=mysql
ARCH=sun4u
VERSION=5.0.4
CATEGORY=application
VENDOR=MySQL AB
EMAIL=build@mysql.com
PSTAMP=MySQL AB Build Engineers
BASEDIR=/usr/local
CLASSES=none

PKG=mysql-max
NAME=mysql
ARCH=sun4u
VERSION=5.0.4
CATEGORY=application
VENDOR=MySQL AB
EMAIL=build@mysql.com
PSTAMP=MySQL AB Build Engineers
BASEDIR=/
CLASSES=none

Modification du fichier pkgmap

Pour terminer la personnalisation de l'installation du package MySQL-5.0.4, le fichier pkgmap est également modifié pour :

  • prendre en compte un propriétaire et un groupe différents : mysql dba
  • refléter les modifications apportées au fichier pkginfo dans l'étape précédente.

1/ la chaîne de caractère bin bin est remplacée par la chaîne mysql dba dans le fichier pkgmap.

2/ les résultats des commandes ci-dessous (suite à la modification du fichier pkginfo dans l'étape précédente) sont reportées dans le fichier pkgmap, cette étape est cruciale sous peine de voir la commande pkgadd échouer.

root@SRVUNXFR1> wc -c pkginfo | cut -f6 -d' '
164
root@SRVUNXFR1> sum pkginfo | cut -f1 -d' '
13113
root@SRVUNXFR1> grep 'pkginfo' pkgmap | cut -f6 -d' '
1113714878 
...
1 i pkginfo 164 13113 1113714878
        

Le fichier pkgmap modifié se présente alors ainsi :

...
1 d none mysql-max-5.0.4-beta-sun-solaris2.8-sparc 0755 mysql dba
1 f none mysql-max-5.0.4-beta-sun-solaris2.8-sparc/README 0644 mysql dba 1937 40976 1113394105
1 d none mysql-max-5.0.4-beta-sun-solaris2.8-sparc/bin 0755 mysql dba
...
1 f none mysql-max-5.0.4-beta-sun-solaris2.8-sparc/bin/mysqld 0755 mysql dba 7737028 38662 111341..
...
1 i pkginfo 164 13113 1113714878

Installation

À l'issue de la personnalisation des fichiers pkgmap et pkginfo qui permet d'éviter le sous répertoire /usr/local et d'appliquer le propriétaire mysql (groupe dba), l'installation du package MySQL 5.0.4 dans le répertoire /Software/mysql peut être lancée avec la commande pkgadd :

root@SRVUNXFR1> cd /tmp
root@SRVUNXFR1> pkgadd -d /tmp -R/Software/mysql
The following packages are available:
1 mysql-max mysql
(sun4u) 5.0.4
Select package(s) you wish to process (or 'all' to process
all packages). (default: all) [?,??,q]:1

À l'issue de l'installation un répertoire mysql-5.0.4 est bien créé dans le répertoire /Software/mysql et le propriétaire est mysql (groupe dba).

Un répertoire var est créé par la commande pkgadd dans le répertoire de destination /Software/mysql, ce dernier peut être tout simplement supprimé.
root@SRVUNXFR1> cd /Software/mysql
root@SRVUNXFR1> ls -lrt
drwxr-xr-x 3 root other 512 May 6 16:21 var
drwxr-xr-x 14 mysql dba 512 May 6 16:21 mysql-5.0.4
root@SRVUNXFR1>
root@SRVUNXFR1> rm -rf var