Passer au contenu principal

code. grind. sleep.

Got GUC?

Les paramètres de configuration de PostgreSQL sont appelés GUC ce qui signifie Grand Unified Configuration, c’est le nom de la partie du code qui gère les paramètres de configuration. En gros, ce sont tous les paramètres du fichier postgresql.conf. Ce qui est moins connu et utilisé, c’est la possibilité de configurer ces paramètres à différents niveaux : Fichier postgresql.conf Ligne de commande du postmaster, le processus principal du serveur Base de données Rôle Rôle sur une base de données Session Transaction La précédence des valeurs va en descendant dans la liste, par exemple la valeur d’un paramètre au niveau d’un rôle écrase celle positionnée au niveau de la base de donnée ou la ligne de commande.

Compiler dans l'arbre des sources

Je m’occupe actuellement de préparer ma box pour le FOSDEM, et il s’avère qu’il manque le support du DRM (Direct Rendering Manager, le truc pour avoir de l’accélération graphique dans le kernel pour X.org) pour ma carte vidéo. Il s’agit de NetBSD 5.1.1, la version 6 n’aura pas ce manque.

X11 forwarding request failed on channel 0

Quand j’essaye de me logguer sur ma box NetBSD fraichement passé en X.org modular, j’ai ça : orgrim@serfouette ~ $ ssh rateau X11 forwarding request failed on channel 0 Last login: Fri Oct 21 12:20:24 2011 from serfouette.home.orgrim.net WTF? ça tombe en marche SSH normalement. Et bien le souci vient de l’échange des magic cookies pour l’authentification entre serveurs X à travers SSH, c’est utilisé par le X11 forwarding et on a besoin de plusieurs choses pour ça :

Quand PostgreSQL n'a plus d'espace disque à manger

Voilà donc une question intéressante, comment se comporte PostgreSQL face à un système de fichier plein ? Un peu d’expérimentation est nécessaire pour se rassurer… On crée deux systèmes de fichiers de faible taille pour les tests. Le premier stockera PGDATA, ainsi qu’une base de données nommée db_data. Le second sera le tablesapce ts1, dans lequel oncréera une base de données db_ts1. L’objectif est de montrer que seules les transactions modifiant des objets stockés sur des systèmes de fichier plein sont affectées, c’est pourquoi on a besoin de plusieurs tablespaces.

Passer de X.org natif à modular

X.org est fourni dans le basesys et dans pkgsrc, on appelle le premier « native » et le second « modular » selon la valeur de la variable X11_TYPE que l’on positionne dans son /etc/mk.conf pour signifier à pkgsrc sur lequel linker.

Bulk build partiel de pkgsrc

En suivant l'excellent tip de Mr GuiGui2, j’ai pu monter ma petite archi de bulk build personnelle pour fournir du package tout frais à pkgin. J’ai donc ajouté le bloc magique suivant à mon /etc/mk.conf, qui permet de gérer la présence de commentaires dans pkgchk.conf : # bulk build config DEPENDS_TARGET= bulk-install BATCH= yes BULK_PREREQ+= pkgtools/lintpkgsrc .if defined(SPECIFIC_PKGS) PKGLIST!= awk '$$1 !~ /^\\#/ {print $$1}' ${PKGCHK_CONF} . for _pkg_ in ${PKGLIST} HOST_SPECIFIC_PKGS+= ${_pkg_} .

Montrer les dépendances avec make dans pkgsrc

Généralement, on peut savoir quelles sont les dépendances d’un package en utilisant make show-depends, mais cela ne montre que les dépendances pour l’installation, les dépendances pour la compilation ne sont pas montrées. $ cd /usr/pkgsrc/databases/postgresql90-server/ $ make show-depends postgresql90-client>=9.0.4:../../databases/postgresql90-client Pour connaître les dépendances selon leur type (installation ou compilation), on peut utiliser la cible show-depends-pkgpaths alliée à la variable DEPENDS_TYPE. Pour avoir seulement les dépendances de compilation : $ make DEPENDS_TYPE=build show-depends-pkgpaths devel/bison devel/gmake pkgtools/digest Pour avoir seulement celles d’installation :

Could not open relation with oid N

On peut parfois trouver cet étrange message d’erreur dans les traces de PostgreSQL (N étant un nombre) ou lors de l’exécution d’une requête : ERROR: could not open relation with OID N Si on recherche ce message dans les mailing-lists du projet, on peut facilement conclure que la base de données est corrompue, qu’il y a des problèmes matériels et que la sécurité des données est en péril. Et bien, ce n’est pas forcément le cas : obtenir ce message peut être tout à fait normal.