diff --git a/README.md b/README.md index 8cf3297..cdd1660 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # F7cloud Talk Recording — сборка для развёртывания -В репозитории собраны **все компоненты для работы сервиса**. Firefox ESR и GeckoDriver скопированы с машины сборки в `vendor/` и при развёртывании на другом сервере просто копируются из репо в `/opt/firefox-esr` и `/usr/local/bin/geckodriver`. Пакеты **xvfb**, **ffmpeg**, **python3.12** и **python3.12-venv** также включены в репозиторий в виде `.deb` (для Debian/Ubuntu) и при установке, при их отсутствии в системе, ставятся скриптом `install.sh` из `vendor/debs/` через `dpkg -i` (без доступа к внешним репозиториям). +В репозитории собраны **все компоненты для работы сервиса, кроме системных пакетов Python**. Firefox ESR и GeckoDriver скопированы с машины сборки в `vendor/` и при развёртывании на другом сервере просто копируются из репо в `/opt/firefox-esr` и `/usr/local/bin/geckodriver`. Пакеты **xvfb** и **ffmpeg** также включены в репозиторий в виде `.deb` (для Debian/Ubuntu) и при установке, при их отсутствии в системе, ставятся скриптом `install.sh` из `vendor/debs/` через `dpkg -i` (без доступа к внешним репозиториям). А вот **python3.12** и **python3.12-venv** ставятся через `apt-get` на целевой машине (если их ещё нет). ## Структура diff --git a/install.sh b/install.sh index 9f94e1e..760a7f1 100755 --- a/install.sh +++ b/install.sh @@ -17,7 +17,7 @@ fi REPO_ROOT="$(cd "$(dirname "$0")" && pwd)" -echo "=== 1. Зависимости (только Python 3.12, xvfb, ffmpeg — остальное в репо) ===" +echo "=== 1. Зависимости (Python 3.12 через apt, xvfb/ffmpeg — из репо) ===" NEED_PYTHON=0 NEED_XVFB=0 @@ -33,28 +33,16 @@ if ! command -v ffmpeg >/dev/null 2>&1; then NEED_FFMPEG=1 fi -# Пытаемся доустановить Python 3.12, xvfb и ffmpeg из vendor/debs, если они отсутствуют +# Пытаемся доустановить Python 3.12 через apt, если его нет if [ "$NEED_PYTHON" -eq 1 ]; then - PY_DEB="$(ls "$REPO_ROOT"/vendor/debs/python3.12_[0-9]*.deb 2>/dev/null | head -n1 || true)" - PY_VENV_DEB="$(ls "$REPO_ROOT"/vendor/debs/python3.12-venv_[0-9]*.deb 2>/dev/null | head -n1 || true)" - if [ -n "$PY_DEB" ]; then - echo "python3.12 не найден в системе. Устанавливаю из $PY_DEB ..." - if dpkg -i "$PY_DEB"; then - echo "python3.12 успешно установлен из vendor/debs." - else - echo "Не удалось установить python3.12 из $PY_DEB. Проверьте зависимости пакета." >&2 + echo "python3.12 не найден в системе. Попытка установки через apt-get (python3.12 python3.12-venv) ..." + if apt-get update -qq && apt-get install -y python3.12 python3.12-venv; then + if command -v python3.12 >/dev/null 2>&1; then + echo "python3.12 успешно установлен через apt-get." + NEED_PYTHON=0 fi - fi - if [ -n "$PY_VENV_DEB" ]; then - echo "python3.12-venv не найден в системе. Устанавливаю из $PY_VENV_DEB ..." - if dpkg -i "$PY_VENV_DEB"; then - echo "python3.12-venv успешно установлен из vendor/debs." - else - echo "Не удалось установить python3.12-venv из $PY_VENV_DEB. Проверьте зависимости пакета." >&2 - fi - fi - if command -v python3.12 >/dev/null 2>&1; then - NEED_PYTHON=0 + else + echo "Не удалось установить python3.12 через apt-get. Проверьте конфигурацию репозиториев." >&2 fi fi diff --git a/vendor/README.md b/vendor/README.md index d7ad078..4c91ed4 100644 --- a/vendor/README.md +++ b/vendor/README.md @@ -8,8 +8,7 @@ | **vendor/geckodriver/geckodriver** | Бинарь GeckoDriver для Linux. При деплое копируется в `/usr/local/bin/geckodriver`. | | **vendor/debs/xvfb\_*.deb** | Debian-пакет `xvfb` для установки Xvfb на целевой машине (`dpkg -i` вызывается из `install.sh`, если Xvfb не найден). | | **vendor/debs/ffmpeg\_*.deb** | Debian-пакет `ffmpeg` для установки ffmpeg на целевой машине (`dpkg -i` вызывается из `install.sh`, если ffmpeg не найден). | -| **vendor/debs/python3.12\_*.deb** | Debian-пакет `python3.12` для установки Python 3.12 на целевой машине (`dpkg -i` вызывается из `install.sh`, если `python3.12` не найден). | -| **vendor/debs/python3.12-venv\_*.deb** | Debian-пакет `python3.12-venv` для модуля venv (`dpkg -i` вызывается из `install.sh`, если модуль не установлен). | +| **Python 3.12** | Не включён в vendor — ставится через `apt-get install python3.12 python3.12-venv` на целевой машине (скрипт `install.sh` пытается сделать это автоматически и при ошибке выводит подсказку). | ## Обновление vendor/ (новая машина сборки) diff --git a/vendor/debs/python3.12-venv_3.12.3-1ubuntu0.12_amd64.deb b/vendor/debs/python3.12-venv_3.12.3-1ubuntu0.12_amd64.deb deleted file mode 100644 index 2e55ef6..0000000 Binary files a/vendor/debs/python3.12-venv_3.12.3-1ubuntu0.12_amd64.deb and /dev/null differ diff --git a/vendor/debs/python3.12_3.12.3-1ubuntu0.12_amd64.deb b/vendor/debs/python3.12_3.12.3-1ubuntu0.12_amd64.deb deleted file mode 100644 index 7afe6d8..0000000 Binary files a/vendor/debs/python3.12_3.12.3-1ubuntu0.12_amd64.deb and /dev/null differ