Cet article vous donne quelque petits trucs pour permettre d’installer, via les sources (et pas en utilisant les packages solaris), PostgreSQL.
Tout d’abord, téléchargez PostgreSQL sur le site officiel. Vous ne devriez pas avoir de difficultés pour ça
Décompressez le, puis lancez le script configure.
Attention aux options, il est *nécessaire* de préciser l’option –enable-thread-safety, sans quoi votre serveur aura quelque soucis, et vous obtiendrez régulièrement le message “could not receive data from server: Error 0” dans votre client préféré.
./configure --prefix=/opt/clarisys --enable-thread-safety
Attention, vous aurez besoin de readline, ainsi que gmake et les outils de compilation standard. J’ai testé avec gcc, pas avec sunstudio. Reportez vous à la documentation de pkgsrc, ou de blastwave pour les obtenir.
Pour installer la librairie readline, j’ai utilisé la methode précédente, avec un –prefix=/opt/clarisys.
En revanche, pour compiler postgresql par la suite, j’ai du utiliser la ligne de commande suivante:
LDFLAGS=-L/opt/clarisys/lib CFLAGS=-I/opt/clarisys/include ./configure --prefix=/opt/clarisys --enable-thread-safety
Ceci permet d’utiliser la librairie readline compilée par nos soins.
Pour ce qui est de l’utilisation avec SMF, j’ai juste modifié les propriétés de svc://application/database/postgresql:version_82, comme ceci:
(N’oubliez pas que dans svccfg, vous pouvez utiliser la touche tabulation !
# svccfg svc:> select application/database/postgresql svc:/application/database/postgresql> select version_82 svc:/application/database/postgresql:version_82> editprop
Modifiez les valeurs intéressantes, afin de refléter votre configuration, puis sauvez le fichier.
Voici mon fichier de propriétés:
select svc:/application/database/postgresql:version_82 # Property group "postgresql" # delprop postgresql # addpg postgresql application # setprop postgresql/value_authorization = astring: (solaris.smf.value.postgres) # setprop postgresql/bin = astring: (/opt/clarisys/bin) # setprop postgresql/data = astring: (/home/ed/postgres/8.2) # setprop postgresql/log = astring: (postgresql-8.2.log) # Property group "method_context" # delprop method_context # addpg method_context framework # setprop method_context/limit_privileges = astring: (:default) # setprop method_context/privileges = astring: (:default) # setprop method_context/project = astring: (:default) # setprop method_context/resource_pool = astring: (:default) # setprop method_context/supp_groups = astring: (:default) # setprop method_context/use_profile = boolean: (false) # setprop method_context/group = astring: (staff) # setprop method_context/user = astring: (ed) # setprop method_context/working_directory = astring: (/home/ed/postgres/8.2) # Property group "general" # delprop general # addpg general framework # setprop general/enabled = boolean: (true) # Property group "restarter" # delprop restarter # addpg restarter framework # setprop restarter/transient_contract = count: () # setprop restarter/logfile = astring: (/var/svc/log/application-database-postgresql:version_82.log) # setprop restarter/contract = count: (138) # setprop restarter/start_pid = count: (1072) # setprop restarter/start_method_timestamp = time: (1198893763.098010000) # setprop restarter/start_method_waitstatus = integer: (0) # setprop restarter/auxiliary_state = astring: (none) # setprop restarter/next_state = astring: (none) # setprop restarter/state = astring: (online) # setprop restarter/state_timestamp = time: (1198893763.100456000) # Property group "restarter_actions" # delprop restarter_actions # addpg restarter_actions framework # setprop restarter_actions/maint_off = integer: ()
Les propriétés que j’ai modifié sont:
setprop postgresql/bin = "/opt/clarisys/bin" setprop postgresql/data = "/home/ed/postgres/8.2" setprop postgresql/log = "postgresql-8.2.log" setprop method_context/working_directory = "/home/ed/postgres/8.2"
Reportez vous au manuel de svccfg(1M) pour plus de détails.
Attention cette section est totalement incomplète. Reportez vous au manuel officiel de PostgreSQL pour plus de détails.
Afin d’augmenter les shared buffers, vous devez augmenter la quantité de mémoire partagée maximum autorisée par Solaris. Pour ce faire, éditez le fichier /etc/system, et rajoutez y ceci:
* PostgreSQL shmax * 4GB shm set shmsys:shminfo_shmmax = 4294967295
Attention les valeurs sont en octets et ne doivent *JAMAIS* dépasser la quantité maximum de mémoire dont vous disposez. Vous pouvez après un redémarrage de la machine, augmenter le paramètre shared_buffers de postgresql.conf.