From the QEMU install logs: Debian 12 succeeded, Ubuntu 24.04 and Fedora 42 failed. Ubuntu (install_debian_dependency.sh): - apt failed with "Could not get lock" (cloud-init/unattended-upgrades hold it on first boot) -> all apt-get calls now use DPkg::Lock::Timeout=600 so apt waits for the lock. - "postgis" is not a package on Ubuntu 24.04, so the postgresql line exited 1 before installing build-essential -> no C compiler -> pyenv could not build Python 3.12.10. PostGIS is now best-effort (tries postgis, then postgresql-postgis) and never aborts; postgresql-contrib is added. Fedora (new install_fedora_dependency.sh, wired into install_dev.sh): - install_dev.sh dispatched Fedora to the apt script; it now has a fedora / ID_LIKE branch calling a dnf-based dependency installer (dev tools, postgresql-server + initdb, pyenv build deps, node, etc.), using --refresh --skip-unavailable to tolerate mirror/name issues. Bootstrap (todo.py): the dnf "curl git make" install hit a GPG/checksum failure on a fresh image; it now uses --refresh and retries after "dnf clean all". Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
114 lines
4.3 KiB
Bash
Executable file
114 lines
4.3 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# © 2021-2026 TechnoLibre (http://www.technolibre.ca)
|
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
|
|
#
|
|
# Dépendances système ERPLibre pour Fedora (dnf). Équivalent Fedora de
|
|
# install_debian_dependency.sh. « --skip-unavailable » tolère un nom de paquet
|
|
# absent (dnf5) au lieu d'échouer sur tout le lot.
|
|
|
|
. ./env_var.sh
|
|
|
|
EL_USER=${USER}
|
|
|
|
# dnf résilient : rafraîchit le cache (évite « checksum doesn't match » /
|
|
# signature après un cache périmé) et saute les paquets introuvables.
|
|
DNF="sudo dnf install -y --refresh --skip-unavailable"
|
|
|
|
#--------------------------------------------------
|
|
# Outils de compilation (build Python via pyenv, extensions Python)
|
|
#--------------------------------------------------
|
|
echo -e "\n---- Groupe outils de développement ----"
|
|
sudo dnf group install -y --skip-unavailable development-tools "C Development Tools and Libraries" \
|
|
|| sudo dnf install -y gcc gcc-c++ make automake patch
|
|
|
|
#--------------------------------------------------
|
|
# PostgreSQL
|
|
#--------------------------------------------------
|
|
echo -e "\n---- Install PostgreSQL Server ----"
|
|
${DNF} postgresql-server postgresql-contrib libpq-devel
|
|
retVal=$?
|
|
if [[ $retVal -ne 0 ]]; then
|
|
echo "dnf install postgresql installation error."
|
|
exit 1
|
|
fi
|
|
# Initialisation du cluster (Fedora ne le fait pas automatiquement).
|
|
if [ ! -f /var/lib/pgsql/data/PG_VERSION ]; then
|
|
echo -e "\n---- Initialisation du cluster PostgreSQL ----"
|
|
sudo postgresql-setup --initdb || true
|
|
fi
|
|
sudo systemctl enable --now postgresql 2>/dev/null || true
|
|
# PostGIS : optionnel (géospatial), ne bloque pas.
|
|
${DNF} postgis || echo "PostGIS non installé (optionnel)."
|
|
|
|
echo -e "\n---- Creating the ERPLibre PostgreSQL User ----"
|
|
sudo su - postgres -c "createuser -s ${EL_USER}" 2>/dev/null || true
|
|
|
|
#--------------------------------------------------
|
|
# Dépendances de build (extensions Python, Odoo)
|
|
#--------------------------------------------------
|
|
echo -e "\n--- Installing fedora dependency --"
|
|
${DNF} \
|
|
git wget libxslt-devel libzip-devel openldap-devel cyrus-sasl-devel \
|
|
libffi-devel bzip2-devel parallel swig cmake portaudio-devel \
|
|
cups-devel xmlsec1 xmlsec1-openssl mariadb-connector-c-devel freetds-devel
|
|
retVal=$?
|
|
if [[ $retVal -ne 0 ]]; then
|
|
echo "dnf fedora tool installation error."
|
|
exit 1
|
|
fi
|
|
|
|
# Dépendances de build pour pyenv (compilation de CPython) — CRITIQUE.
|
|
echo -e "\n---- Dépendances pyenv (compilation Python) ----"
|
|
${DNF} \
|
|
make gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel \
|
|
openssl-devel tk-devel libffi-devel xz-devel patch findutils
|
|
retVal=$?
|
|
if [[ $retVal -ne 0 ]]; then
|
|
echo "dnf pyenv dependencies installation error."
|
|
exit 1
|
|
fi
|
|
|
|
# Dépendances selenium / bindings.
|
|
${DNF} \
|
|
cairo-devel python3-devel pkgconf-pkg-config gobject-introspection-devel \
|
|
libXt-devel || echo "Dépendances selenium partielles (optionnel)."
|
|
|
|
#--------------------------------------------------
|
|
# Node.js + npm (rtlcss, less)
|
|
#--------------------------------------------------
|
|
echo -e "\n---- Installing nodeJS NPM and rtlcss ----"
|
|
${DNF} nodejs npm
|
|
retVal=$?
|
|
if [[ $retVal -ne 0 ]]; then
|
|
echo "dnf nodejs installation error."
|
|
exit 1
|
|
fi
|
|
sudo npm install -g rtlcss less || echo "npm rtlcss/less: erreur (optionnel)."
|
|
|
|
echo -e "\n---- Test tool ----"
|
|
npm install || echo "npm install (prettier/plugin-xml): erreur (optionnel)."
|
|
sudo ln -fs /usr/local/bin/lessc /usr/bin/lessc 2>/dev/null || true
|
|
|
|
#--------------------------------------------------
|
|
# nginx (optionnel)
|
|
#--------------------------------------------------
|
|
if [ "${EL_INSTALL_NGINX}" = "True" ]; then
|
|
echo -e "\n---- Installing nginx ----"
|
|
${DNF} nginx || echo "nginx: erreur (optionnel)."
|
|
fi
|
|
|
|
#--------------------------------------------------
|
|
# wkhtmltopdf (optionnel) — paquet RPM officiel wkhtmltopdf
|
|
#--------------------------------------------------
|
|
if [ "${EL_INSTALL_WKHTMLTOPDF}" = "True" ]; then
|
|
if ! command -v wkhtmltopdf >/dev/null 2>&1; then
|
|
echo -e "\n---- Installing wkhtml (best-effort) ----"
|
|
_url="https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-3/wkhtmltox-0.12.6.1-3.fedora-38.x86_64.rpm"
|
|
sudo dnf install -y "${_url}" \
|
|
|| echo "wkhtmltopdf non installé (optionnel) : ${_url}"
|
|
else
|
|
echo -e "\n---- Already installed wkhtml ----"
|
|
fi
|
|
fi
|
|
|
|
echo -e "\n---- Fedora dependency installation done ----"
|