Astra Linux SE Орёл | Обучение системе через боль

Как запустить свежий Playwright на старом Astra Linux Special Edition, не сломав систему

Дисклеймер: всё описанное — реальный опыт автора, решившего освоить отечественную доступную широкому кругу пользователей ОС в условиях, приближенных к боевым; статья сгенерирована нейросетью на основе проведённой совместной с автором работы, ссылка на подробную инструкцию.

Исходные данные

Astra Linux SE (Орёл), база Debian 9, glibc 2.17 Система стара как мир, но трогать её нельзя — обновление glibc гарантированно превратит рабочую станцию в кирпич. При этом душа просит современного инструментария: Python 3.14, Playwright, визуальное тестирование браузеров.

Первая кровь: Node.js и зависимости

Попытка playwright install обрушилась с ошибками о неудовлетворённых версиях GLIBC 2.25, 2.27, 2.28 и CXXABI. Встроенный в пакет бинарник Node был собран под более свежую libc. Решили подменить Node на версию, собранную со старым glibc. Через nvm и неофициальные сборки нашли Node 18 под glibc 2.17 — Playwright перестал ругаться на Node, но браузеры всё равно не запустились. Оказалось, современный Chromium (даже в Playwright 1.45) требует getrandom@GLIBC_2.25.

Боль усиливается: библиотеки

Система честно сообщала: отсутствуют libgtk-4.so.1, libgraphene-1.0.so.0, icu 74 и ещё десяток библиотек. Родной apt ничем помочь не мог — пакеты не найдены. Идея подложить недостающие .so из Ubuntu 24.04 через LD_LIBRARY_PATH разбилась о грабли транзитивных зависимостей и всё той же glibc. Откат на старый Playwright с Node 16 не помог: браузеры всё равно хотят glibc ≥ 2.25.

Принятие

Стало очевидно: современный браузерный движок напрямую на glibc 2.24 не завести. Но сдаваться не в наших правилах. Решение — контейнеризация. Docker (или Podman) позволяет запустить Ubuntu 24.04 внутри старой Astra, не прикасаясь к системным библиотекам. Так мы получаем и нужную glibc, и все зависимости.

Рецепт победы

- Установили Docker из штатного репозитория Astra. - Написали Dockerfile на базе ubuntu:24.04, установили туда Python, Node, uv, xvfb и все необходимые пакеты (включая хитрый libasound2t64 вместо libasound2). - Собрали образ: docker build -t playwright-astra . - Для визуального режима пробросили сокет X11: docker run ... -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY - На хосте выполнили xhost +local:, чтобы разрешить контейнеру доступ к дисплею. - Внутри контейнера тесты запускаются через uv run python test_browser.py (headless по умолчанию) или с headless=False для отображения на родном рабочем столе Astra.

Неожиданные грабли

- При сборке образа вылезла ошибка externally-managed-environment — поправили установкой uv через официальный скрипт, а не через pip. - Не хватало места в /var/lib/docker — перенесли хранилище на другой раздел через data-root в daemon.json. - Docker кешировал старые слои. Вылечили флагом --no-cache.

Итог

Мы получили полностью рабочее окружение: свежий Playwright, Chromium, Firefox, WebKit — и всё это на отечественной ОС, которую не пришлось калечить. Визуальная отладка работает как часы. Контейнер изолирует риски и делает проект переносимым. На фото — запущенный из контейнера Chromium с простым открытием страницы.

Да, путь был тернист. Но именно через такую боль приходит настоящее понимание системы. Astra показала характер, мы — упорство. Рекомендую каждому патриоту пройти этот квест: после него любая другая система покажется детской песочницей. А полученные навыки контейнеризации и обхода ограничений останутся с вами навсегда.

Astra — сурова, но справедлива. Орёл не сдаётся!

Официальный репозиторий Астра

Astra Linux SE Орёл | Обучение системе через боль | Сетка — социальная сеть от hh.ru