⚙️ Про Distrobox и вклад https://packages.altlinux.org/ru/sisyphus/maintainers/liannnix/ (liannnix@) для поддержки ALT Linux
❓ Что такое Distrobox?
Distrobox — это инструмент, запускающий произвольный дистрибутив Linux в контейнере (на базе Podman, Docker) с бесшовной интеграцией в хост-систему. Домашний каталог пользователя, X11/Wayland, аудио, USB-устройства, GPU — всё пробрасывается внутрь автоматически. По сути, получается «второй дистрибутив» поверх основного, не прибегая к виртуализации.
Это особенно полезно, если:
• Используется атомарная система (Fedora Silverblue, SteamOS, ALT Atomic);
• Есть необходимость протестировать софт из ALT Linux/Arch/Debian/Alpine, не засоряя хост;
• Нужен пакет, которого нет в вашем дистрибутиве.
⭐️ Теперь перейдём к главному. Вклад Андрея Лимачко https://github.com/89luca89/distrobox/pull/1989
Андрей отправил в https://github.com/89luca89/distrobox патч, решающий давнюю проблему совместимости.
Проблема была в следующем: ALT Linux использует альтернативную PAM реализацию su, несовместимую с флагами su из util-linux. Distrobox запускал инициализацию контейнера с несовместимыми флагами, в результате чего они попросту не работали.
💬 Как развивался PR
Первая версия патча предлагала добавить отдельный флаг --container-runuser при создании контейнера. Мейнтейнер https://github.com/89luca89 (автор distrobox) этот подход отверг, и это показательный момент OpenSource-культуры:
Distrobox's su usage is posix compliant and distrobox is a targets a posix compliant userland, if that doesn't work it's just an incompatibility on ALT Linux side, more than Distrobox itself.
То есть: Distrobox придерживается идеологии POSIX, и добавлять отдельный флаг ради одного конкретного дистрибутива, нарушающего стандарт — неправильно.
В итоговом варианте патча Андрей пришёл к довольно элегантному решению:
В util-linux рядом с su лежит родственная утилита runuser, с таким же набором флагов, что su из util-linux, но предназначенный для скриптов и сервисов и не нуждается в полноценном стеке аутентификации. Логика выбора именно такого подхода описана в обсуждении PR:
The existing wrapper only removes --pty for old util-linux versions. ALT Linux su has broader incompatibilities: it rejects -m, -c flags that distrobox-enter passes. A simple --pty-stripping wrapper won't help—we need a complete replacement.
runuser provides that replacement while being readily available in ALT Linux. The solution is transparent (no flags), upgrade-safe, and distro-specific—aligning with the Alpine/Chimera precedent.
👍 В конечном счёте, патч был принят в апстрим, и все остались довольны. Спасибо Андрею за его вклад в этот большой международный проект.
🔖 Почему это важно?
Во-первых, ALT Linux — один из немногих дистрибутивов с по-настоящему независимой родословной. У него своя пакетная база, свои сборочные инструменты, своя политика безопасности, включая нестандартный su. Любая совместимость с мейнстрим-инструментами периодически требует отдельной работы которую осуществляют наши разработчики.
Во-вторых, это хороший пример того, как нужно проталкивать изменения в апстрим: первое решение было прагматичным, но неэлегантным; после фидбэка, Андрей переработал патч в правильном направлении и в итоге PR был принят обоими мейнтейнерами ( https://github.com/89luca89 и https://github.com/dottorblaster).
В-третьих, теперь все, включая пользователей других дистрибутивов, смогут использовать distrobox с контейнерами, основанными на ALT Linux.
🔗 https://github.com/89luca89/distrobox/pull/1989
💬 https://max.ru/join/JimVAmIvWCy-TYxuLs4aK-6wLBzNyA505YeOh8ggQJ4 | https://max.ru/join/NnKfs2KwC_O5qXv5dITFg4qC4-YNSwig_MBOePir1yY
💬 |
https://t.me/alt_gnome_chat
💸 http://boosty.to/alt_gnome
#События #Distrobox