From 374373cc7ccdcfb12941af453025c229ac420027 Mon Sep 17 00:00:00 2001 From: Mathieu Benoit Date: Tue, 28 Jul 2026 07:27:44 +0000 Subject: [PATCH] =?UTF-8?q?[FIX]=20install=20Arch:=20mise=20=C3=A0=20jour?= =?UTF-8?q?=20compl=C3=A8te=20(pacman=20-Syu)=20contre=20glibc=20mismatch?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Après le passage à pacman, l'init PostgreSQL échouait : « /usr/bin/postgres: /usr/lib/libm.so.6: version GLIBC_2.44 not found ». Cause : Arch est en rolling release et NE SUPPORTE PAS les mises à jour partielles. Sur une image cloud dont la glibc date du build de l'image, un « pacman -S » (postgresql 18.4) installe un binaire lié à une glibc plus récente que celle du système -> symbole introuvable. Fix : mise à jour COMPLÈTE (pacman -Syu) avant d'installer, dans les deux endroits : install_arch_linux.sh (deps OS) et le bootstrap Arch de _qemu_erplibre_remote_cmd (todo.py, remplace -Syy par -Syu). Validé sur VM Arch réelle : après -Syu, « postgres (PostgreSQL) 18.4 » OK, initdb OK, service postgresql actif, superuser erplibre créé, psql connecte. Chaîne complète confirmée : gcc 16.1.1, make, node, psql tous présents. Co-Authored-By: Claude Opus 4.8 (1M context) --- script/install/install_arch_linux.sh | 10 +++++++--- script/todo/todo.py | 6 ++++-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/script/install/install_arch_linux.sh b/script/install/install_arch_linux.sh index 0cfad1d..3289b17 100755 --- a/script/install/install_arch_linux.sh +++ b/script/install/install_arch_linux.sh @@ -14,10 +14,14 @@ EL_USER=${USER} # pacman résilient : --needed saute ce qui est déjà là, --noconfirm en non -# interactif. On rafraîchit d'abord la base (best-effort : le remote cmd de -# todo a déjà pu lancer reflector + -Syy). +# interactif. PAC="sudo pacman -S --needed --noconfirm" -sudo pacman -Sy --noconfirm || true +# Mise à jour COMPLÈTE obligatoire : Arch est en rolling release et NE SUPPORTE +# PAS les mises à jour partielles. Sur une image cloud dont la glibc est +# ancienne, un « pacman -S » lie le binaire à une glibc plus +# récente que celle installée -> « /usr/bin/postgres: GLIBC_2.44 not found ». +# « -Syu » met à jour glibc (et tout le système) pour rester cohérent. +sudo pacman -Syu --noconfirm || true #-------------------------------------------------- # Outils de compilation — CRITIQUE (build Python via pyenv, extensions Python) diff --git a/script/todo/todo.py b/script/todo/todo.py index cf07683..18e7d1e 100755 --- a/script/todo/todo.py +++ b/script/todo/todo.py @@ -1754,11 +1754,13 @@ class TODO: "pgrep -x pacman >/dev/null 2>&1 " "|| sudo rm -f /var/lib/pacman/db.lck; " # Arch : reflector sélectionne les miroirs HTTPS les plus rapides, - # puis rafraîchit la base et installe. + # puis MISE À JOUR COMPLÈTE (-Syu) : Arch (rolling) ne supporte pas + # les màj partielles ; sur une image cloud à la glibc ancienne, un + # « pacman -S » casse avec « GLIBC_x.yy not found ». "sudo pacman -Sy --needed --noconfirm reflector || true; " "sudo reflector --latest 20 --protocol https --sort rate " "--save /etc/pacman.d/mirrorlist || true; " - "sudo pacman -Syy --noconfirm || true; " + "sudo pacman -Syu --noconfirm || true; " "sudo pacman -S --needed --noconfirm $PKGS; " "elif command -v yum >/dev/null 2>&1; then " "sudo yum makecache -q || true; sudo yum install -y $PKGS; "