DistroBox - запуск любого дистрибутива Linux в терминале Linux

Distrobox - это отличный инструмент, который позволяет создавать и управлять контейнерами на вашем любимом дистрибутиве Linux с помощью Docker или Podman. Запущенный контейнер полностью интегрируется с основной системой, что позволяет совместно использовать каталог HOME пользователя, а также внешние накопители, USB-устройства и графические приложения.

Distrobox основан на образе OCI и реализует концепции, аналогичные ToolBox, который строится на основе podman и стандартных контейнерных технологий OCI.

Самое замечательное в этом то, что вы можете создать среду разработки, не требующую прав root.

Вам не придется менять дистрибутив хоста только из-за проблем с совместимостью программ. Вы можете продолжать использовать то, что вам удобно, и использовать Distrobox для восполнения пробела в совместимости с обратным/прямым программным обеспечением, используя любой другой дистрибутив Linux.

Давайте рассмотрим основные ключевые моменты Distrobox:

  • Возможность создания тестовой среды для внесения изменений, не затрагивающих ваш основной дистрибутив.
  • Среда разработки, не требующая привилегий sudo, может быть гибкой для вашей работы. Например, если у вас есть рабочий ноутбук, установка без sudo может помочь вам.
  • Простой способ управления несколькими средами.
  • Поддержка различных дистрибутивов.

Для установки Distrobox необходимо выполнить предварительное условие, у вас должен быть установлен либо podman, либо docker. Если у вас относительно современный дистрибутив Linux, я рекомендую установить podman из репозиториев программного обеспечения. В противном случае установите docker и следуйте шагам, указанным ниже.

На момент написания этой статьи Distrobox доступен в следующих репозиториях:

  • Arch Linux (AUR)
  • EPEL 8 и более поздние версии
  • Fedora 34 и более поздние версии
  • Ubuntu 22.10 и более поздние версии

Я не ошибся, последняя версия Ubuntu, доступная широкой публике на момент написания статьи, это Ubuntu 22.04. Не многие дистрибутивы имеют Distrobox в комплекте…

Если вы не нашли Distrobox в репозиториях, вы можете выполнить следующую команду для установки Distrobox:

$ curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/install | sudo sh

Приведенная выше команда загрузит сценарий оболочки и запустит его с привилегиями суперпользователя. Если вы не можете самостоятельно проверить источник, ниже приведена команда, которую можно использовать, не беспокоясь о предоставлении привилегий суперпользователя неизвестному сценарию.

$ curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/install | sh -s -- --prefix ~/.local

Теперь, когда у вас установлен Distrobox, давайте перейдем к нескольким примерам его использования.

Итак, давайте рассмотрим несколько основных команд для использования Distrobox, их назначение и прочее.

Под «контейнером» в данном контексте понимается не контейнерное программное обеспечение, такое как nextcloud, syncthing и т.д., а скорее сама операционная система.

Синтаксис для создания нового контейнера следующий:

$ distrobox-create --name ИМЯ_КОНТЕЙНЕРА --image ИМЯ_ОС:ВЕРСИЯ

Здесь вы можете указать, под каким именем вы хотите использовать контейнер (ИМЯ_КОНТЕЙНЕРА), название ОС, которую вы хотите использовать (ИМЯ_ОС) и ее версию (ВЕРСИЯ).

Давайте рассмотрим, как создать новый контейнер для Fedora 36 с именем 'fedoratest'. Cделаем это с помощью следующей команды:

$ distrobox-create --name fedoratest --image fedora:36

Вы также можете заменить '36' на 'latest', если вам нужна последняя версия какой-либо операционной системы.

Выполнение данной команды займет всего мгновение, и образ контейнера будет загружен для Fedora 36.

После завершения процесса вы получите сообщение о том, что контейнер был создан.

Контейнер ОС бесполезен, если мы не запустим его и не получим доступ к его командной строке.

Для этого используйте команду 'distrobox-enter'. Синтаксис команды следующий:

$ distrobox-enter ИМЯ_КОНТЕЙНЕРА

При первом запуске контейнера, Distrobox выполнит автоматическую начальную настройку: установит ряд контейнеров, настроит соединения, темы, иконки, шрифты, группы, пользователей и многое другое.

В зависимости от вычислительной мощности вашего компьютера, это может занять разное время. Пожалуйста, будьте терпеливы при первом включении, процесс может протекать в течение ~15 минут.

Когда все будет завершено, вы автоматически попадете в оболочку контейнера.

Если вы внимательно посмотрите, то до выполнения команды 'distrobox-enter', имя хоста, отображаемое в подсказке, было 'andrey-pc'. После того, как начальная установка была выполнена, имя хоста стало другим, а именно 'fedoratest'.

Давайте также проверим VERSION из файла '/etc/os-release'.

Если вы дошли до этой стадии, это эквивалентно тому, что вы только что установили Fedora на свой компьютер и ОС только что загрузилась.

Как и в случае с виртуальной машиной, ОС на нашей хост-машине не имеет значения. Мы должны использовать менеджер пакетов, предоставляемый гостевой ОС. Поэтому я буду использовать менеджер пакетов DNF на Fedora 36.

Моя хост-операционная система, EndeavourOS, пока не имеет PokerTH в основных репозиториях. Но Fedora 36 имеет PokerTH в основных репозиториях. Таким образом, я могу легко установить PokerTH как родное программное обеспечение без использования тяжелой виртуализации.

Итак, давайте установим PokerTH, поскольку он доступен в репозиториях Fedora, но не в репозиториях EndeavourOS.

Я выполню следующую команду (внутри оболочки контейнера) для установки PokerTH:

$ sudo dnf install pokerth

После того как dnf завершит установку PokerTH, выполним следующую команду (внутри оболочки контейнера):

$ distrobox-export --app pokerth

Когда вы выполняете команду 'distrobox-export' из контейнера, это делает указанное программное обеспечение доступным и для основной операционной системы. Это означает, что даже если PokerTH установлен внутри контейнера Fedora, я смогу увидеть его в меню приложений EndeavourOS.

Как вы видетe, у меня PokerTH виден в меню приложений EndeavourOS, несмотря на то, что он был установлен в контейнере Fedora 36.

Distobox предоставляет несколько команд, которые можно использовать для управления образами Distrobox.

Первая команда - 'distrobox list'. Как видно из названия, она выводит список всех установленных контейнеров.

Вторая команда - 'distrobox stop'. Эта команда используется для остановки запущенного контейнера.

Ниже приведен синтаксис:

$ distrobox stop ИМЯ_КОНТЕЙНЕРА

Наконец, чтобы удалить любой контейнер Distrobox, используйте команду 'distrobox rm'. Синтаксис приведен ниже:

$ distrobox rm ИМЯ_КОНТЕЙНЕРА

Чтобы узнать больше технических деталей, посетите страницу Distrobox на GitHub.

Заключение

Distrobox - это замечательный инструмент, который позволяет устанавливать операционные системы как простой контейнер podman/docker и использовать их как полноценную операционную систему.

С помощью Distrobox вы можете установить практически любое программное обеспечение, даже если оно недоступно в репозиториях вашего дистрибутива или даже если оно не упаковано для вашего дистрибутива Linux.