Mise à jour de PostGIS problématique et Fedora

Pour quelques uns de mes projets de développement, j'utilise PostGIS, une extension de la base de données PostgreSQL qui permet de gérer des données géographiques. PostgreSQL et PostGIS sont régulièrement mises à jour, ce qui m'occasionne parfois de sacrés maux de tête. Danc cet article j’explique comment j’ai réussi à me sortir d’une mise à jour difficile à l’aide des outils fournis par Fedora et des conteneurs.

Ciel, une mise à jour

Un changement de version majeure de PostgreSQL n'est pas une opération triviale, car elle nécessite toujours de convertir les bases de données du système, la compatibilité du schéma étant cassée entre chacune de versions majeures.

L'utilitaire pg_upgrade est utilisé pour cela, mais il est un peu compliqué à utiliser. Heureusement certaines distributions proposent des outils pour simplifier cette mise à jour. Par exemple sous Debian, la mise à jour du paquet d'une version majeure vers une autre entraîne une conversion automatique de la base de données. Sous Fedora, ça n'est pas automatique, mais un utilitaire est fourni pour aider à la mise à jour.

Cela se complexifie avec PostGIS, comme on va le voir tout de suite. J'ai donc récemment mis à jour ma …

plus ...

Configurer un résolveur DNS local avec Unbound sous Fedora

Résoudre le DNS

DNS est le protocole Internet qui permet d'associer un nom de domaine comme www.ezvan.fr à une adresse Internet. On utilise un résolveur DNS pour effectuer cette association, ce qui est nécessaire pour pouvoir naviguer sur le Web. Quand vous êtes connectés à votre box Internet, un résolveur DNS est automatiquement configuré par votre système.

Généralement il est fourni par votre fournisseur d'accès, qui peut donc contrôler les réponses qu'il fournit. Cela peut être un moyen de censurer certains sites Web, comme expliqué par cet article de Stéphane Bortzmeyer.

Aussi il peut arriver que votre connexion soit quelque peu mauvaise, rendant les allers-retours vers le résolveur de votre fournisseur relativement longs, ce qui ralenti de manière non négligeable le chargement des pages Web.

Installer un résolveur local

Ces deux problèmes sont une bonne raison d'utiliser son propre résolveur DNS. Il est possible d'en utiliser un sur sa machine, ce que nous allons décrire ici. La procédure est ici décrite pour Fedora, mais est similaire pour d'autres distributions Linux.

Unbound

Unbound est un résolveur DNS moderne et léger. On va utiliser ce logiciel comme résolveur local.

Dnssec-trigger

Dnssec-trigger est un démon qui permet d'intégrer Unbound avec NetworkManager …

plus ...

Synchroniser ton calendrier et contacts avec Android

Comme tu le sais déjà, Ezvan.fr te permet de synchroniser ton calendrier et tes contacts comme décrit sur la page des services. Mais comment faire avec ton téléphone Android ?

DAVx⁵

Je recommande d'utiliser le logiciel DAVx⁵, parce qu'il est libre et fonctionne bien. Télécharge-le sur le Play store ou F-Droid.

Configuration

  • Lance l'application, et clique sur le petit "+" pour ajouter un compte.
  • Sélectionne "Connexion avec une URL et un nom d'utilisateur".
  • Comme URL de base entre https://cal.ezvan.fr.
  • Entre les mêmes identifiants que pour ton compte de courriel. Par exemple mon nom d'utilisateur est "paul".

Et voilà ! L'application va maintenant synchroniser tes contacts et ton calendrier avec Ezvan.fr, te permettant de le partager avec d'autres périphériques et applications. On verra plus tard comment synchroniser tout ça sur ton ordinateur avec Thunderbird.

plus ...

Conversion de type avec PostgreSQL

Tous les jours je reçois un message d'erreur généré par le script cron de mon logiciel de webmail Roundcube:

ERROR: [7] ERROR:  operator does not exist: boolean = integer
LINE 1: DELETE FROM "contactgroups" WHERE "del" = 1 AND "changed" < ...
                                                ^
HINT:  No operator matches the given name and argument type(s). You might need to
 add explicit type casts. (SQL Query: DELETE FROM "contactgroups" WHERE "del" = 1
  AND "changed" < '2018-12-04 00:00:00')

Il semble que l'erreur soit causée par une incompatibilité entre le schéma de la base de données et la requête SQL utilisée par le script de nettoyage.

Pour administrer mes bases de données PostgreSQL simplement j'utilise le logiciel web phpPgAdmin. En observant le schéma de la table contactgroups je note que le type de la colonne del est boolean. C'est incompatible avec la requête DELETE FROM "contactgroups" WHERE "del" = 1 car del devrait être un nombre entier (un int). PostreSQL est tâtillon avec les types, et ne convertit pas un entier en booléen implicitement, ce qui cause l'erreur.

J'avais importé cette base depuis MySQL vers PostgreSQL, ce qui a pu causer quelques incohérences avec la schéma attendu par Roundcube. Je vérifie que c'est le cas en comparant …

plus ...

Nouveau site avec Pelican

Je viens de publier une nouvelle version du site. J'en ai profité pour ré-organiser le site et utiliser un thème un peu plus moderne.

plus ...