install: установка xvfb и ffmpeg из vendor/debs

This commit is contained in:
root 2026-03-11 09:09:54 +00:00
parent ac88da4dfb
commit 890ed5fc93
5 changed files with 32 additions and 4 deletions

View File

@ -1,6 +1,6 @@
# F7cloud Talk Recording — сборка для развёртывания # F7cloud Talk Recording — сборка для развёртывания
В репозитории собраны **все компоненты для работы сервиса, кроме Python**. Firefox ESR и GeckoDriver скопированы с машины сборки в `vendor/` и при развёртывании на другом сервере просто копируются из репо в `/opt/firefox-esr` и `/usr/local/bin/geckodriver`. Python, xvfb и ffmpeg вы должны заранее установить на целевой машине (скрипт `install` лишь проверяет их наличие и подсказывает, чего не хватает). В репозитории собраны **все компоненты для работы сервиса, кроме Python**. Firefox ESR и GeckoDriver скопированы с машины сборки в `vendor/` и при развёртывании на другом сервере просто копируются из репо в `/opt/firefox-esr` и `/usr/local/bin/geckodriver`. Пакеты **xvfb** и **ffmpeg** также включены в репозиторий в виде `.deb` (для Debian/Ubuntu) и при установке будут поставлены скриптом `install` из `vendor/debs/` при их отсутствии в системе. Python 3.12 вы должны установить на целевой машине самостоятельно.
## Структура ## Структура

29
install
View File

@ -33,6 +33,33 @@ if ! command -v ffmpeg >/dev/null 2>&1; then
NEED_FFMPEG=1 NEED_FFMPEG=1
fi fi
# Пытаемся доустановить xvfb и ffmpeg из vendor/debs, если они отсутствуют
if [ "$NEED_XVFB" -eq 1 ]; then
XVFB_DEB="$(ls "$REPO_ROOT"/vendor/debs/xvfb_*.deb 2>/dev/null | head -n1 || true)"
if [ -n "$XVFB_DEB" ]; then
echo "Xvfb не найден в системе. Устанавливаю из $XVFB_DEB ..."
if dpkg -i "$XVFB_DEB"; then
echo "Xvfb успешно установлен из vendor/debs."
NEED_XVFB=0
else
echo "Не удалось установить Xvfb из $XVFB_DEB. Проверьте зависимости пакета." >&2
fi
fi
fi
if [ "$NEED_FFMPEG" -eq 1 ]; then
FFMPEG_DEB="$(ls "$REPO_ROOT"/vendor/debs/ffmpeg_*.deb 2>/dev/null | head -n1 || true)"
if [ -n "$FFMPEG_DEB" ]; then
echo "ffmpeg не найден в системе. Устанавливаю из $FFMPEG_DEB ..."
if dpkg -i "$FFMPEG_DEB"; then
echo "ffmpeg успешно установлен из vendor/debs."
NEED_FFMPEG=0
else
echo "Не удалось установить ffmpeg из $FFMPEG_DEB. Проверьте зависимости пакета." >&2
fi
fi
fi
if [ "$NEED_PYTHON" -eq 0 ] && [ "$NEED_XVFB" -eq 0 ] && [ "$NEED_FFMPEG" -eq 0 ]; then if [ "$NEED_PYTHON" -eq 0 ] && [ "$NEED_XVFB" -eq 0 ] && [ "$NEED_FFMPEG" -eq 0 ]; then
echo "Python 3.12, Xvfb и ffmpeg уже установлены — продолжаем установку." echo "Python 3.12, Xvfb и ffmpeg уже установлены — продолжаем установку."
else else
@ -42,7 +69,7 @@ else
[ "$NEED_FFMPEG" -eq 1 ] && echo " - ffmpeg" [ "$NEED_FFMPEG" -eq 1 ] && echo " - ffmpeg"
echo "" echo ""
echo "Установите их любым доступным способом (apt, локальное зеркало, deb-пакеты и т.п.)," echo "Установите их любым доступным способом (apt, локальное зеркало, deb-пакеты и т.п.),"
echo "затем перезапустите ./install. Сам скрипт install больше не вызывает apt-get." echo "затем перезапустите ./install. Сам скрипт install не вызывает apt-get."
exit 1 exit 1
fi fi

5
vendor/README.md vendored
View File

@ -6,8 +6,9 @@
|------------|------------| |------------|------------|
| **vendor/firefox-esr/** | Каталог Firefox ESR (бинарь `firefox` и библиотеки). При деплое копируется в `/opt/firefox-esr`, симлинк — в `/usr/local/bin/firefox-esr`. | | **vendor/firefox-esr/** | Каталог Firefox ESR (бинарь `firefox` и библиотеки). При деплое копируется в `/opt/firefox-esr`, симлинк — в `/usr/local/bin/firefox-esr`. |
| **vendor/geckodriver/geckodriver** | Бинарь GeckoDriver для Linux. При деплое копируется в `/usr/local/bin/geckodriver`. | | **vendor/geckodriver/geckodriver** | Бинарь GeckoDriver для Linux. При деплое копируется в `/usr/local/bin/geckodriver`. |
| **xvfb, ffmpeg** | Не в репо — вы должны установить их на целевом сервере сами (apt, локальное зеркало и т.п.); `install` только проверяет наличие. | | **vendor/debs/xvfb\_*.deb** | Debian-пакет `xvfb` для установки Xvfb на целевой машине (`dpkg -i` вызывается из `install`, если Xvfb не найден). |
| **Python 3.12** | Не в репо — вы должны установить его на целевом сервере сами; `install` лишь проверяет наличие `python3.12`. | | **vendor/debs/ffmpeg\_*.deb** | Debian-пакет `ffmpeg` для установки ffmpeg на целевой машине (`dpkg -i` вызывается из `install`, если ffmpeg не найден). |
| **Python 3.12** | Не в репо — вы должны установить его на целевой машине сами; `install` лишь проверяет наличие `python3.12`. |
## Обновление vendor/ (новая машина сборки) ## Обновление vendor/ (новая машина сборки)

Binary file not shown.

Binary file not shown.