Просмотр исходного кода

fix: Исправление полного удаления PosgreSQL

morikoff 3 часов назад
Родитель
Сommit
774a7909dc
1 измененных файлов с 22 добавлено и 9 удалено
  1. 22 9
      odoo19_install_debian13.sh

+ 22 - 9
odoo19_install_debian13.sh

@@ -3,12 +3,12 @@
 # Простая установка/обновление/удаление Odoo 19 на Debian 13 (Trixie)
 # Простая установка/обновление/удаление Odoo 19 на Debian 13 (Trixie)
 # - автоматический выбор свежего архива odoo_19.0+e.*.tar.gz
 # - автоматический выбор свежего архива odoo_19.0+e.*.tar.gz
 # - распаковка clean-enterprise-19.0.zip (если есть)
 # - распаковка clean-enterprise-19.0.zip (если есть)
-# - PostgreSQL 16 из официального репозитория (кластер создаётся автоматически)
+# - PostgreSQL 16 с принудительным созданием пользователя postgres и кластера
 # - wkhtmltopdf с libssl1.1 (совместимость с Trixie)
 # - wkhtmltopdf с libssl1.1 (совместимость с Trixie)
 # - venv, systemd, конфиг в /etc/odoo/
 # - venv, systemd, конфиг в /etc/odoo/
 #-------------------------------------------------------------------------------
 #-------------------------------------------------------------------------------
 # Сделайте скрипт исполняемым: chmod +x odoo19_install_debian13.sh
 # Сделайте скрипт исполняемым: chmod +x odoo19_install_debian13.sh
-# Использование: sudo ./odoo_install.sh {install|update|uninstall}
+# Использование: sudo ./odoo19_install_debian13.sh {install|update|uninstall}
 ################################################################################
 ################################################################################
 
 
 set -e
 set -e
@@ -197,20 +197,30 @@ do_install() {
         libjpeg-dev zlib1g-dev libpng-dev \
         libjpeg-dev zlib1g-dev libpng-dev \
         nodejs npm gdebi-core curl unzip
         nodejs npm gdebi-core curl unzip
 
 
-    # 2. PostgreSQL 16 (рекомендуемая версия для Odoo 19 на Debian 13)
+    # 2. PostgreSQL 16
     log_info "Установка PostgreSQL 16"
     log_info "Установка PostgreSQL 16"
+    # Убедимся, что системный пользователь postgres существует
+    if ! id "postgres" &>/dev/null; then
+        log_info "Создание системного пользователя postgres"
+        adduser --system --quiet --shell=/bin/bash --home=/var/lib/postgresql --group postgres
+    fi
+
+    # Добавляем репозиторий PostgreSQL (ключ перезаписывается без подтверждения)
     curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor -o /usr/share/keyrings/postgresql-archive-keyring.gpg
     curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor -o /usr/share/keyrings/postgresql-archive-keyring.gpg
     echo "deb [signed-by=/usr/share/keyrings/postgresql-archive-keyring.gpg] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list
     echo "deb [signed-by=/usr/share/keyrings/postgresql-archive-keyring.gpg] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list
     apt-get update
     apt-get update
     apt-get install -y postgresql-16 postgresql-client-16 postgresql-server-dev-16
     apt-get install -y postgresql-16 postgresql-client-16 postgresql-server-dev-16
 
 
-    # Если кластер не запустился автоматически — запускаем или создаём
-    if ! pg_isready -q; then
-        log_info "PostgreSQL не отвечает, пробуем запустить кластер"
-        pg_ctlcluster 16 main start || {
-            log_info "Не удалось запустить, создаём кластер вручную"
-            su - postgres -c "pg_createcluster 16 main --start --locale C.UTF-8"
+    # Проверяем, существует ли кластер 16 main
+    if ! pg_lsclusters 2>/dev/null | grep -q "16 main"; then
+        log_info "Кластер 16/main не найден, создаём вручную от пользователя postgres"
+        su - postgres -c "pg_createcluster 16 main --start --locale C.UTF-8" || {
+            log_error "Не удалось создать кластер. Попробуйте вручную: su - postgres -c 'pg_createcluster 16 main --start'"
+            exit 1
         }
         }
+    else
+        log_info "Кластер 16/main уже существует, запускаем"
+        pg_ctlcluster 16 main start || true
     fi
     fi
 
 
     # Создаём пользователя odoo в PostgreSQL
     # Создаём пользователя odoo в PostgreSQL
@@ -296,6 +306,9 @@ do_uninstall() {
     rm -rf /var/log/$OE_USER
     rm -rf /var/log/$OE_USER
     userdel -r $OE_USER 2>/dev/null || true
     userdel -r $OE_USER 2>/dev/null || true
 
 
+    # Удаляем ключ репозитория, чтобы при повторной установке не было запроса
+    rm -f /usr/share/keyrings/postgresql-archive-keyring.gpg
+
     read -p "Удалить пользователя PostgreSQL 'odoo' и его базы? (y/N): " del_pg
     read -p "Удалить пользователя PostgreSQL 'odoo' и его базы? (y/N): " del_pg
     if [[ "$del_pg" =~ ^[Yy]$ ]]; then
     if [[ "$del_pg" =~ ^[Yy]$ ]]; then
         if id "postgres" &>/dev/null; then
         if id "postgres" &>/dev/null; then