
Как часто вы сталкиваетесь с крутым приложением, которое недоступно для вашего дистрибутива? Вероятно, вы попытаетесь установить его через Brew, Flatpak или Snap, но часто не можете.
Фрагментированный ландшафт пакетов в Linux — это проблема. Некоторые дистрибутивы используют общий, но часто несовместимый формат пакетов; другие используют совершенно иную систему пакетов. Flatpak и Snap попытались решить эту проблему, но все, что они сделали, это создали больше стандартов — соответствующий XKCD. Вместо того, чтобы создавать больше стандартов, нам следует объединить уже существующие стандарты — намек Distrobox.
Программное обеспечение Distrobox создано на основе
Закрыто
Прежде чем объяснять сам Distrobox, вам нужно понять часть программного обеспечения, на котором он основан: Docker и Podman. Docker — это программное обеспечение, которое изолирует процессы в отдельных контейнерах; такие процессы обычно не могут взаимодействовать с системой за пределами контейнера. Контейнеры построены на основе примитивов Linux, таких как пространства имен и группы управления. Но не беспокойтесь о деталях; просто помните, что контейнер изолирует процессы.
Мы называем Docker средой выполнения контейнера. Podman — это еще одна среда выполнения контейнера, которая выглядит и работает точно так же, как Docker, за исключением одного ключевого отличия: Podman (по умолчанию) не запускает контейнеры как root; это важно, как вы скоро поймете. Docker и Podman почти идентичны, поэтому можно следовать руководству для начинающих по Docker и применить почти все к Podman.
Как работает Distrobox?

Список контейнеров Distrobox.
Distrobox стирает границы между дистрибутивами и использует существующие инструменты для установки пакетов кросс-дистрибуции. Distrobox оборачивает выбранную вами среду выполнения контейнера (например, Podman, Docker или Lilypod) для запуска процессов внутри контейнера. Когда вы выполняете команду Distrobox, она делегирует полномочия базовой среде выполнения контейнера.
Но почему? В отличие от Docker, Podman и т. д., Distrobox тесно интегрирует контейнерные процессы с вашей системой; они могут читать ваш домашний каталог, видеть другие процессы и даже общаться с ними. Distrobox заботится о сложной конфигурации контейнера для вас, так что он будет запускать приложения — в контейнере Docker или Podman — без проблем с хостом.
Целью среды выполнения контейнера является изоляция процесса; целью Distrobox является тесная интеграция с минимальной настройкой.
Официальная документация Distrobox разъясняет «тесную интеграцию» с техническими подробностями:
…легко интегрируется с остальной частью операционной системы, предоставляя доступ к домашнему каталогу пользователя, сокетам Wayland и X11, сетевым подключениям, съемным устройствам (например, USB-накопителям), журналу systemd, агенту SSH, D-Bus, ulimits, /dev и базе данных udev и т. д.
Почему я рекомендую Podman, а не Docker
Вам следует использовать Podman в качестве среды выполнения контейнера, поскольку по умолчанию он запускает контейнеры как непривилегированный пользователь, тогда как Docker запускает их как root. Почему это проблема? Контейнеризированные процессы наследуют привилегии своего контейнера — это немного сложнее, но такова общая идея. Distrobox тесно интегрирует контейнеры с хостом; любой процесс, работающий внутри укорененный контейнер может иметь полный доступ к вашей системе.
Distrobox предложит вам установить пароль для контейнера, если вы запустите его как root, что обеспечивает некоторые защита, но это далеко не идеальное решение.
Как установить Podman
Podman доступен как минимум для дюжины дистрибутивов. Следующие команды охватывают наиболее распространенные из них.
Для Debian и его производных (например, Ubuntu, Mint и т. д.):
sudo apt-get установить podman
Для производных Red Hat (например, Fedora и т. д.):
sudo dnf установить podman
Для Arch Linux и его производных:
sudo pacman -S podman
Вы, вероятно, обнаружите, что Podman доступен в репозиториях вашего дистрибутива по умолчанию. Самое главное, чтобы вы настроили его для режим без прав root. К сожалению, для некоторых дистрибутивов может потребоваться ручная настройка. Обратитесь к руководству для вашего дистрибутива, поскольку процесс для каждого из них отличается.
Как установить Distrobox
Distrobox доступен для более чем 30 дистрибутивов, поэтому после установки Podman (или Docker) продолжайте установку Distrobox с помощью менеджера пакетов вашего дистрибутива. Ниже приведены команды установки для наиболее распространенных дистрибутивов.
Для Debian и его производных (например, Ubuntu, Mint и т. д.):
sudo apt-get install distrobox
Для производных Red Hat (например, Fedora и т. д.):
sudo dnf установить дистрибутив
Для Arch Linux и его производных:
sudo pacman -S дистрибутив
Если Distrobox отсутствует в репозитории вашего дистрибутива, вы можете использовать следующую команду curl:
curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/install | sudo sh
Такие действия, как завить … | ш может содержать и внедрять вредоносные команды; всегда проверяйте поставщика и просматривайте скрипт.

Теперь вы должны установить Podman как среду выполнения контейнера в файле конфигурации Distrobox. Выполните следующую команду, но будьте осторожны, так как она перезапишет любой существующий файл конфигурации:
echo ‘container_manager=»podman»’ > ~/.distroboxrc
Теперь все готово.
Создание вашего первого контейнера Distrobox
Контейнеры хранят ваши изменения и являются тонким слоем поверх неизменяемых образов. Образы обеспечивают базовую систему дистрибутива. При объединении они обеспечивают полную систему. Ваши установленные пакеты будут находиться внутри контейнера. Distrobox интегрирует домашний каталог контейнера в ваш собственный, так что файлы конфигурации вашего пакета будут находиться там.
При запуске следующей команды будет создан контейнер из образа по умолчанию:
distrobox создать -n мой-контейнер
Однако на данный момент мы будем использовать Arch Linux:
distrobox create —name my-arch —image archlinux:latest


Вы можете создать контейнер, используя любой образ, например, Debian:
distrobox create —name my-debian —image debian:latest
Или вы можете создать контейнер Fedora:
distrobox create —name my-fedora —image fedora:latest
Не прерывайте процесс создания контейнера, иначе вы можете его повредить, и вам придется создавать его заново.
Distrobox поддерживает более 30 дистрибутивов для контейнеров, каждый из которых поддерживает несколько релизов и версий. Кроме того, если вы знакомы с Toolbox, вы также можете использовать их образы. Distrobox поддерживает большой список имен образов для вашего удобства.
Как установить приложение в контейнер Distrobox
Контейнеры — это среда, которую вы активировать. Все последующие команды выполняются внутри контейнера.
distrobox введите my-arch
Вы можете поиграть с этой системой, чтобы почувствовать ее. Когда закончите, введите выход.

Однако, вместо того, чтобы входить в контейнер для установки пакета, часто лучше запустить одноразовую команду. Здесь мы установим Firefox, что мы выполним немного позже:
distrobox введите my-arch — sudo pacman -S firefox

Если вы создали контейнер для другого дистрибутива, вы, вероятно, можете использовать одну из следующих команд.
Для Debian и его производных (например, Ubuntu, Mint и т. д.):
distrobox введите имя-контейнера — sudo apt-get install firefox
Для производных Red Hat (например, Fedora и т. д.):
distrobox введите имя-контейнера — sudo dnf install firefox
Если у вас возникли трудности с командами установки, вам, вероятно, следует сначала научиться устанавливать и удалять программное обеспечение через терминал.
При использовании Podman sudo просто работает. Rootless Podman запускает контейнеры как непривилегированный пользователь по умолчанию. Все процессы внутри контейнера (включая sudo) не могут получить привилегии выше, чем у самого контейнера. Это защищает вашу хост-систему.

Как запустить приложение в контейнере Distrobox
Чтобы запустить недавно установленный Firefox, выполните:
distrobox введите my-arch — firefox

Предыдущая команда не возвращает управление терминалу, пока Firefox не завершит работу; она также длинная. Вместо этого вам, вероятно, следует использовать псевдоним. В файле конфигурации оболочки введите:
alias firefox=»distrobox введите my-arch — nohup firefox >/dev/null»
Вы можете назвать этот псевдоним как угодно.
Одной из самых полезных функций Distrobox является то, что графические пакеты работают без дополнительной настройки. Он работает как с X11, так и с Wayland. Distrobox также поддерживает ускорение GPU; если это то, что вас интересует, то вам следует обратиться к руководству Distrobox.
Как думать о контейнерах Distrobox
Как упоминалось ранее, контейнеры — это слой поверх образа. Distrobox делится образами между несколькими контейнерами. Например, когда вы создаете контейнер на основе Debian:
distrobox create —имя deb-1 —образ debian:latest
Он снимет образ Debian, использует его как базовую систему, а затем создаст контейнер поверх него. Когда вы создаете еще два контейнера:
distrobox create —имя deb-2 —образ debian:latest
distrobox create —имя deb-3 —образ debian:latest
Закрыто
Оба они будут использовать один и тот же неизменяемый образ Debian, но каждый контейнер отделен друг от друга. Установка пакета в деб-1 означает, что он не будет существовать в деб-2 or деб-3. Однако они будут использовать один и тот же файл конфигурации, который находится в домашнем каталоге вашего хоста.
Вы можете задаться вопросом, следует ли вам создать один контейнер или несколько. Как правило, создавайте по одному контейнеру для каждого используемого вами дистрибутива. Например, в AUR (поддерживаемом сообществом репозитории программного обеспечения для Arch Linux) есть пакет, который вам нужен, поэтому вы создаете контейнер Arch; в репозиториях Debian их три, поэтому вы создаете один контейнер Debian и помещаете в него все три. Однако могут быть сценарии, в которых возникают конфликты программного обеспечения, например, разные версии одного и того же пакета; это идеальный сценарий для создания отдельных контейнеров.
Другие полезные команды Distrobox, которые нужно знать
Самым полезным ресурсом для команд всегда является меню —help:
distrobox —помощь
Вы можете получить справку по конкретным командам, добавив к ним флаг —help. Например, чтобы получить справку по Создайте команда:
distrobox создать —помощь
Закрыто
Создание временных контейнеров
Чтобы быстро что-то протестировать, можно использовать временные контейнеры. Distrobox автоматически уничтожает их после завершения:
эфемерный дистрибутив
Имейте в виду, что они загружаются медленнее, поскольку их необходимо инициализировать — это похоже на создание нового контейнера.
Посмотреть distrobox эфемерный —помощь Для получения дополнительных возможностей.
Управление контейнерами
Вы должны рассматривать контейнеры Distrobox как подсистему; это включает в себя создание, запуск, остановку, удаление, обновление и общее обслуживание контейнеров. Ниже приведен список общих команд, которые помогут вам сделать это.
В какой-то момент вам захочется узнать, какие контейнеры существуют в вашей системе:
дистрибутив ls
Возможно, вы хотите удалить контейнер. Перед тем, как сделать это, вы можете сначала остановить его, а затем удалить:
distrobox остановить мой-контейнер
distrobox rm мой-контейнер

Не обязательно останавливать контейнер перед его удалением, так как Distrobox предложит вам сделать это самостоятельно. сила удалите его, если он запущен.
Вы почти наверняка хотите поддерживать свои контейнеры в актуальном состоянии. Чтобы обновить их ВСЕИспользуйте:
обновление distrobox — все
Или для обновления определенного контейнера:
обновление distrobox my-container

Команда обновления будет использовать менеджер пакетов контейнера для обновления всех его пакетов. Кроме того, каждый контейнер требует регулярных обновлений. При удалении контейнера удаляются и его обновления.
Чтобы удалить пакеты, просто используйте менеджер пакетов, специфичный для дистрибутива для этого конкретного контейнера. Например, если вы хотите удалить Firefox из контейнера Arch Linux, который мы создали ранее, используйте следующее:
distrobox войти в my-arch — sudo pacman -R firefox

Для производных от Red Hat (например, Fedora) используйте:
distrobox введите my-conainer-name — sudo dnf rm firefox
Для Debian и его производных используйте:
distrobox введите имя-контейнера — sudo apt-get удалите firefox
Как удалить Distrobox
Если вам не нравится Distrobox и вы хотите удалить его, ниже приведены команды, которые помогут это сделать.
Если вы использовали curl для установки, то вам Чёрный Для его удаления используйте следующую команду curl:
curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/uninstall | sudo sh
В противном случае для Debian и его производных (например, Ubuntu, Mint и т. д.):
sudo apt-get удалить distrobox
Для производных Red Hat (например, Fedora и т. д.):
sudo dnf rm дистрибутив
Для Arch Linux и его производных:
sudo pacman -R дистрибутив
Одной из сильных сторон Distrobox является тесная интеграция с хостом. В мире Docker это, в некоторой степени, является слабостью, поскольку Docker хочет изолировать процессы; Distrobox хочет их интегрировать — в этом ключевое различие между ними. Также важно понимать разницу между запуском контейнера как root и запуском контейнеризированного процесса как root. Я настоятельно рекомендую Podman, поскольку он работает лучше, чем Docker, как среда выполнения контейнера без root. Сопровождающие Distrobox также согласны.
Обратите внимание на эти два ключевых момента, поскольку они важны для защиты вашей системы. По сути, будьте осторожны при запуске контейнера как root; не запускайте приложения внутри этого контейнера как ограниченная учетная запись — это создает ложное чувство безопасности и может привести к повышению привилегий.