From efb2dfc0d87ae64fe005f3318021f1b0debb6c8c Mon Sep 17 00:00:00 2001 From: MickLesk Date: Sun, 15 Mar 2026 20:50:03 +0100 Subject: [PATCH] fix(immich): use gcc-13 for compilation & add uv python pre-install with retry - Install gcc-13/g++-13 and export CC/CXX before compiling custom photo-processing libraries to work around GCC-14 ICE segfaults on Debian 13 Trixie (closes #12895) - Pre-install Python via 'uv python install' with 3-attempt retry logic before running 'uv sync' to prevent connection reset failures during machine-learning setup (closes #12926) - Applied to both fresh install and update paths --- ct/immich.sh | 24 ++++++++++++++++++++---- install/immich-install.sh | 26 +++++++++++++++++++++++--- 2 files changed, 43 insertions(+), 7 deletions(-) diff --git a/ct/immich.sh b/ct/immich.sh index de757d76f..28ffe2e66 100644 --- a/ct/immich.sh +++ b/ct/immich.sh @@ -133,7 +133,9 @@ EOF $STD sudo -u postgres psql -d immich -c "REINDEX INDEX face_index;" $STD sudo -u postgres psql -d immich -c "REINDEX INDEX clip_index;" fi - ensure_dependencies ccache + ensure_dependencies ccache gcc-13 g++-13 + export CC=gcc-13 + export CXX=g++-13 INSTALL_DIR="/opt/${APP}" UPLOAD_DIR="$(sed -n '/^IMMICH_MEDIA_LOCATION/s/[^=]*=//p' /opt/immich/.env)" @@ -218,14 +220,28 @@ EOF chown immich:immich ./uv.lock export VIRTUAL_ENV="${ML_DIR}"/ml-venv if [[ -f ~/.openvino ]]; then + ML_PYTHON="python3.13" + msg_info "Pre-installing Python ${ML_PYTHON} for machine-learning" + for attempt in $(seq 1 3); do + $STD sudo --preserve-env=VIRTUAL_ENV -nu immich uv python install "${ML_PYTHON}" && break + [[ $attempt -lt 3 ]] && msg_warn "Python download attempt $attempt failed, retrying..." && sleep 5 + done + msg_ok "Pre-installed Python ${ML_PYTHON}" msg_info "Updating HW-accelerated machine-learning" - $STD uv add --no-sync --optional openvino onnxruntime-openvino==1.24.1 --active -n -p python3.13 --managed-python - $STD sudo --preserve-env=VIRTUAL_ENV -nu immich uv sync --extra openvino --no-dev --active --link-mode copy -n -p python3.13 --managed-python + $STD uv add --no-sync --optional openvino onnxruntime-openvino==1.24.1 --active -n -p "${ML_PYTHON}" --managed-python + $STD sudo --preserve-env=VIRTUAL_ENV -nu immich uv sync --extra openvino --no-dev --active --link-mode copy -n -p "${ML_PYTHON}" --managed-python patchelf --clear-execstack "${VIRTUAL_ENV}/lib/python3.13/site-packages/onnxruntime/capi/onnxruntime_pybind11_state.cpython-313-x86_64-linux-gnu.so" msg_ok "Updated HW-accelerated machine-learning" else + ML_PYTHON="python3.11" + msg_info "Pre-installing Python ${ML_PYTHON} for machine-learning" + for attempt in $(seq 1 3); do + $STD sudo --preserve-env=VIRTUAL_ENV -nu immich uv python install "${ML_PYTHON}" && break + [[ $attempt -lt 3 ]] && msg_warn "Python download attempt $attempt failed, retrying..." && sleep 5 + done + msg_ok "Pre-installed Python ${ML_PYTHON}" msg_info "Updating machine-learning" - $STD sudo --preserve-env=VIRTUAL_ENV -nu immich uv sync --extra cpu --no-dev --active --link-mode copy -n -p python3.11 --managed-python + $STD sudo --preserve-env=VIRTUAL_ENV -nu immich uv sync --extra cpu --no-dev --active --link-mode copy -n -p "${ML_PYTHON}" --managed-python msg_ok "Updated machine-learning" fi cd "$SRC_DIR" diff --git a/install/immich-install.sh b/install/immich-install.sh index a95c7cada..eeb566263 100644 --- a/install/immich-install.sh +++ b/install/immich-install.sh @@ -154,6 +154,12 @@ sed -i "s/^#shared_preload.*/shared_preload_libraries = 'vchord.so'/" /etc/postg systemctl restart postgresql.service PG_DB_NAME="immich" PG_DB_USER="immich" PG_DB_GRANT_SUPERUSER="true" PG_DB_SKIP_ALTER_ROLE="true" setup_postgresql_db +msg_info "Installing GCC-13 (workaround for GCC-14 ICE on Trixie)" +$STD apt install -y gcc-13 g++-13 +export CC=gcc-13 +export CXX=g++-13 +msg_ok "Installed GCC-13" + msg_warn "Compiling Custom Photo-processing Libraries (can take anywhere from 15min to 2h)" LD_LIBRARY_PATH=/usr/local/lib export LD_RUN_PATH=/usr/local/lib @@ -341,14 +347,28 @@ $STD useradd -U -s /usr/sbin/nologin -r -M -d "$INSTALL_DIR" immich mkdir -p "$ML_DIR" && chown -R immich:immich "$INSTALL_DIR" export VIRTUAL_ENV="${ML_DIR}/ml-venv" if [[ -f ~/.openvino ]]; then + ML_PYTHON="python3.13" + msg_info "Pre-installing Python ${ML_PYTHON} for machine-learning" + for attempt in $(seq 1 3); do + $STD sudo --preserve-env=VIRTUAL_ENV -nu immich uv python install "${ML_PYTHON}" && break + [[ $attempt -lt 3 ]] && msg_warn "Python download attempt $attempt failed, retrying..." && sleep 5 + done + msg_ok "Pre-installed Python ${ML_PYTHON}" msg_info "Installing HW-accelerated machine-learning" - $STD uv add --no-sync --optional openvino onnxruntime-openvino==1.24.1 --active -n -p python3.13 --managed-python - $STD sudo --preserve-env=VIRTUAL_ENV -nu immich uv sync --extra openvino --no-dev --active --link-mode copy -n -p python3.13 --managed-python + $STD uv add --no-sync --optional openvino onnxruntime-openvino==1.24.1 --active -n -p "${ML_PYTHON}" --managed-python + $STD sudo --preserve-env=VIRTUAL_ENV -nu immich uv sync --extra openvino --no-dev --active --link-mode copy -n -p "${ML_PYTHON}" --managed-python patchelf --clear-execstack "${VIRTUAL_ENV}/lib/python3.13/site-packages/onnxruntime/capi/onnxruntime_pybind11_state.cpython-313-x86_64-linux-gnu.so" msg_ok "Installed HW-accelerated machine-learning" else + ML_PYTHON="python3.11" + msg_info "Pre-installing Python ${ML_PYTHON} for machine-learning" + for attempt in $(seq 1 3); do + $STD sudo --preserve-env=VIRTUAL_ENV -nu immich uv python install "${ML_PYTHON}" && break + [[ $attempt -lt 3 ]] && msg_warn "Python download attempt $attempt failed, retrying..." && sleep 5 + done + msg_ok "Pre-installed Python ${ML_PYTHON}" msg_info "Installing machine-learning" - $STD sudo --preserve-env=VIRTUAL_ENV -nu immich uv sync --extra cpu --no-dev --active --link-mode copy -n -p python3.11 --managed-python + $STD sudo --preserve-env=VIRTUAL_ENV -nu immich uv sync --extra cpu --no-dev --active --link-mode copy -n -p "${ML_PYTHON}" --managed-python msg_ok "Installed machine-learning" fi cd "$SRC_DIR"