diff --git a/.cspell/apps&companies.dict b/.cspell/apps&companies.dict index 76c8433..2ea9153 100644 --- a/.cspell/apps&companies.dict +++ b/.cspell/apps&companies.dict @@ -1,5 +1,6 @@ крипто arianna +distrobox dxvk flameshot flatpak diff --git a/.yaspeller/apps&companies.json b/.yaspeller/apps&companies.json index d745379..ef7337b 100644 --- a/.yaspeller/apps&companies.json +++ b/.yaspeller/apps&companies.json @@ -11,5 +11,6 @@ "Arianna", "BaseALT|basealt", "AudioTube", - "SafeEyes|safeeyes" + "SafeEyes|safeeyes", + "distrobox" ] diff --git a/docs/apps/distrobox/index.md b/docs/apps/distrobox/index.md index 4968273..b7b447f 100644 --- a/docs/apps/distrobox/index.md +++ b/docs/apps/distrobox/index.md @@ -1,9 +1,9 @@ --- -title: DistroBox +title: Distrobox aggregation: sisyphus: distrobox appstream: - name: DistroBox + name: Distrobox icon: ./img/distrobox-logo.png summary: Программа для запуска различных дистрибутивов Linux внутри вашего. developer: @@ -18,175 +18,188 @@ appstream: help: https://github.com/89luca89/distrobox --- -# DistroBox +# Distrobox -Distrobox - это инструмент, который позволяет запускать различные дистрибутивы Linux внутри вашего основного (хост) дистрибутива. -Рассматриваемый софт основан на технологии контейнеризации, но, несмотря на это, дистрибутивы тесно интегрируются в вашу систему. -Поэтому программы, установленные внутри них, имеют доступ к вашей файловой системе, USB-устройствам, аудио и видео (X11/Wayland) системам. +Distrobox - это инструмент, который позволяет запускать различные дистрибутивы Linux внутри вашего основного (хост) дистрибутива. Рассматриваемый софт основан на технологии контейнеризации, но, несмотря на это, дистрибутивы тесно интегрируются в вашу систему. Поэтому программы, установленные внутри них, имеют доступ к вашей файловой системе, USB-устройствам, аудио и видео (X11/Wayland) системам. -![Скриншот программы DistroBox](./img/distrobox-screen.png 'Скриншот программы Distrobox') +![Скриншот программы Distrobox](./img/distrobox-screen.png 'Скриншот программы Distrobox') ## Установка из репозитория -:::tabs -==apt-get -```shell +::: code-group + +```shell[apt-get] su - apt-get update apt-get install distrobox docker-engine -exit ``` -==epm -```shell + +```shell[epm] epm -i distrobox docker-engine ``` + ::: -:::info Объяснение -Вместо Docker можно использовать Podman. -Однако из-за его особенностей и принципов работы может возникнуть значительно больше проблем, чем при использовании Docker. -Поэтому в данной статье будет рассмотрен вариант использования программы исключительно с Docker. +::: info Объяснение +Вместо Docker можно использовать Podman. Однако из-за его особенностей и принципов работы может возникнуть значительно больше проблем, чем при использовании Docker. Поэтому в данной статье будет рассмотрен вариант использования программы исключительно с Docker. ::: ## Предварительная настройка -Перед использованием DistroBox проделайте следующее: +Перед использованием Distrobox проделайте следующее: + ```shell su - -c "usermod $USER -aG docker" ``` + После этого выполните повторный вход в систему, а затем эту команду: + ```shell su - -c "systemctl enable --now docker" ``` -:::info Объяснение +::: info Объяснение Таким образом, мы добавили пользователя в группу `docker`, а также запустили сервисы Docker, необходимые для его работы. + Чтобы убедиться в том, что пользователь действительно добавлен в указанную группу, выполните команду `groups $USER`. ::: -:::tip +::: tip Если по какой-то причине `$USER` не подставил активного пользователя при выполнении команды уберите это и впишите нужного пользователя вручную. ::: ## Управление программой -Теперь, завершив предварительные настройки, можно приступать к использованию DistroBox. -Для начала следует определиться с тем, какой дистрибутив будем устанавливать. +Теперь, завершив предварительные настройки, можно приступать к использованию Distrobox. Для начала следует определиться с тем, какой дистрибутив будем устанавливать. + Посмотреть полный список поддерживаемых систем можно по этой [ссылке](https://distrobox.it/compatibility/#containers-distros). + В статье же будет рассмотрена работа программы на примере [Fedora Linux](https://fedoraproject.org/ru/workstation/). -:::warning Важно -Учтите, что все дистрибутивы, установленные при помощи DistroBox, не будут иметь графического окружения! +::: warning Важно +Учтите, что все дистрибутивы, установленные при помощи Distrobox, не будут иметь графического окружения! + Пользователю будет доступна полноценная ОС, но только в консольном виде и с некоторыми особенностями от рассматриваемой программы! ::: ### Установка дистрибутива Для того чтобы создать контейнер с выбранным дистрибутивом (в данном случае Fedora Linux), выполните команду ниже: -:::tabs -==1 способ -```shell + +::: code-group + +```shell[1 способ] distrobox create --image fedora:latest --name fedora ``` -== 2 способ -```shell + +```shell[2 способ] distrobox-create --image fedora:latest --name fedora ``` + ::: Скорее всего, во время выполнения команды вы столкнетесь с ошибкой ниже: -:::details Нажмите для отображения ошибки + +::: details Нажмите для отображения ошибки + ```shell permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.46/images/create?fromImage=fedora&tag=latest": dial unix /var/run/docker.sock: connect: permission denied ``` + ::: -Исправить ее можно, выполнив данную команду: +Исправить её можно, выполнив данную команду: + ```shell su - -c "chmod 777 /var/run/docker.sock" ``` -:::danger -Несмотря на то что данное решение полностью рабочее, оно является потенциально небезопасным! -Выдавать чему-либо в системе максимальные права (777) крайне не рекомендуется, но на данный момент я не нашел решения лучше. -Если вы знаете более совершенный способ, не стесняйтесь добавить его в данную статью! +::: danger +Несмотря на то что данное решение полностью рабочее, оно является потенциально небезопасным! Выдавать чему-либо в системе максимальные права (777) крайне не рекомендуется, но на данный момент я не нашел решения лучше. Если вы знаете более совершенный способ, не стесняйтесь добавить его в данную статью! ::: -:::info Объяснение +::: info Объяснение `--image` или `-i` нужны для выбора устанавливаемой системы. -Параметр `fedora:latest` для вышеуказанной опции состоит из двух частей, разделенных символом двоеточия. -Первая часть отвечает за выбранный к установке дистрибутив. -Вторая часть указывает на его версию. -Это обозначает, что можно выбрать как конкретную версию (например, для Fedora Linux - это 38, 39...) или последнюю из доступных в DistroBox (latest). +Параметр `fedora:latest` для вышеуказанной опции состоит из двух частей, разделенных символом двоеточия. Первая часть отвечает за выбранный к установке дистрибутив. Вторая часть указывает на его версию. Это обозначает, что можно выбрать как конкретную версию (например, для Fedora Linux - это 38, 39...) или последнюю из доступных в Distrobox (latest). -`--name` или `-n` используются для указания названия контейнера. -При отсутствии данной опции будет применено название "по умолчанию". +`--name` или `-n` используются для указания названия контейнера. При отсутствии данной опции будет применено название "по умолчанию". **Помимо вышеописанных "флагов" существуют и некоторые другие. Например:** `--nvidia` интегрирует поддержку проприетарных драйверов для видеокарт Nvidia, если они были заранее установлены в хост системе. -Имейте в виду, что для работы параметра требуются современные дистрибутивы с **glibc (GNU libc)** в качестве **хост** системы! -Проверить это можно, выполнив `ldd --version`. + +Имейте в виду, что для работы параметра требуются современные дистрибутивы с `glibc` (GNU LibC) в качестве **хост** системы! Проверить это можно, выполнив `ldd --version`. + Если что, ALT Linux подходит под выставленные требования, даже несмотря на то, что его нет в официальном списке протестированных систем. `--yes` или `-Y` используется для автоматического извлечения систем без ручного подтверждения. ::: На данный момент в вашем распоряжении будет только контейнер без самой системы. -Ее установка произойдет при первом входе в него. + +Её установка произойдет при первом входе в него. + Подробнее об этом поговорим в блоке ниже. ### Вход в дистрибутив Теперь в терминале появится одна из команд ниже для входа в систему: -:::tabs -==1 способ -```shell +::: code-group + +```shell[1 способ] distrobox enter fedora ``` -== 2 способ -```shell -ditrobox-enter fedora -# Данный способ работает не совсем корректно. -# Чтобы войти в контейнер, нужно выполнить команду 2 раза, так как в первый раз всплывет непонятная ошибка. -# Рекомендую просто использовать первый способ, который стоит по умолчанию. +```shell[2 способ] +ditrobox-enter fedora ``` + +::: note +Данный способ работает не совсем корректно. + +Чтобы войти в контейнер, нужно выполнить команду 2 раза, так как в первый раз всплывет непонятная ошибка. + +Рекомендую просто использовать первый способ, который стоит по умолчанию. ::: -:::tip +::: tip Замените `fedora` на название нужного контейнера. -Чтобы выйти из дистрибутива, используйте команду `exit` или сочетание клавиш `Ctrl+d`. +Чтобы выйти из дистрибутива, используйте команду `exit` или сочетание клавиш [[Ctrl]] + [[d]]. ::: -:::warning -Установка ОС не закончится автоматически! -В конце процесса потребуется ввести пароль для созданного внутри контейнера пользователя. -Данный пароль потребуется, например, при использовании **sudo**. +::: warning +Установка ОС не закончится автоматически! В конце процесса потребуется ввести пароль для созданного внутри контейнера пользователя. + +Данный пароль потребуется, например, при использовании `sudo`. ::: ### Запуск команд из хоста Находясь в контейнерном дистрибутиве, вы не будете иметь доступа к программам, установленным в вашей основной системе. + Однако если вам нужно запустить какую-либо команду оттуда, не выходя из контейнера, следует использовать следующую команду: + ```shell distrobox-host-exec flatpak run org.mozilla.firefox ``` -:::tip +::: tip Замените `flatpak run org.mozilla.firefox` на нужную команду, выполняемую на основной системе. ::: ### Отображение установленных дистрибутивов -:::tabs +::: tabs + ==1 способ -:::code-group + +::: code-group + ```shell[стандарт] distrobox list ``` @@ -196,12 +209,14 @@ distrobox ls ``` == 2 способ + ```shell ditrobox-list ``` + ::: -:::tip +::: tip Если строка окрашена в зеленый цвет, то это значит, что контейнер работает. Если строка окрашена в оранжевый цвет, то это значит, что контейнер выключен. @@ -209,42 +224,45 @@ ditrobox-list ### Управление ярлыками контейнеров -После установки системы на вашем хосте автоматически появится ярлык для его быстрого запуска. -Однако этим можно управлять вручную. +После установки системы на вашем хосте автоматически появится ярлык для его быстрого запуска. Однако этим можно управлять вручную. **Удалить ярлык из системы:** + ```shell distrobox generate-entry fedora --delete ``` **Установить/Вернуть ярлык в систему:** + ```shell distrobox generate-entry fedora ``` -:::tip +::: tip Во всех командах не забудьте заменить `fedora` на название нужного контейнера. ::: -:::info Объяснение +::: info Объяснение `--delete` или `-d` отвечают за удаление ярлыка `--all` или `-a` позволяют выполнять команду для всех дистрибутивов `--icon` или `-i` устанавливают собственную иконку для ярлыка. -Не забудьте указать **абсолютный** путь до нее! + +Не забудьте указать **абсолютный** путь до неё! ::: ### Обновление дистрибутивов Конечно, вы можете использовать пакетный менеджер дистрибутива для обновления системы. + Однако данный способ позволяет обновить несколько ОС одновременно, не подстраиваясь под их синтаксис! ```shell su - -c "distrobox-upgrade fedora" ``` -:::tip +::: tip Замените `fedora` на название нужного контейнера или укажите список из них для обновления. Также вместо списка можно использовать опцию `--all` или `-a` для обновления всех установленных систем. @@ -256,21 +274,23 @@ su - -c "distrobox-upgrade fedora" ### Остановка работающих дистрибутивов -Контейнеры в DistroBox остаются включенными даже после выхода из них, за счет чего последующие входы происходят очень быстро. +Контейнеры в Distrobox остаются включенными даже после выхода из них, за счет чего последующие входы происходят очень быстро. + Поэтому, если вам требуется остановить работу какого-либо контейнера, используйте одну из этих команд: -:::tabs -== 1 способ -```shell +::: code-group + +```shell[1 способ] distrobox stop fedora ``` -== 2 способ -```shell + +```shell[2 способ] distrobox-stop fedora ``` + ::: -:::tip +::: tip Замените `fedora` на название нужного контейнера или на список нужных. Для остановки без подтверждения применяются параметры `--yes` или `-Y`. @@ -282,50 +302,54 @@ distrobox-stop fedora Если какой-то из дистрибутивов вам больше не нужен, остановите его, как в инструкции выше, и удалите следующим образом: -:::tabs -== 1 способ -```shell +::: code-group + +```shell[1 способ] distrobox rm fedora ``` -== 2 способ -```shell + +```shell[2 способ] distrobox-rm fedora ``` + ::: -:::tip +::: tip Замените `fedora` на название нужного контейнера. -А если вы его забыли, воспользуйтесь встроенной в DistroBox [командой](#отображение-установленных-дистрибутивов), которую мы рассматривали выше. + +А если вы его забыли, воспользуйтесь встроенной в Distrobox [командой](#отображение-установленных-дистрибутивов), которую мы рассматривали выше. Для удаления всех контейнерных дистрибутивов используйте флаг `--all` или `-a`. -Для принудительного удаления существуют параметры `--force` или `-f`. +Для принудительного удаления существуют параметры `--force` или `-f`. ::: ### Вынос программ из дистрибутивов в хост систему Наконец мы добрались до самой интересной части этой статьи: использование программ из контейнеров так, будто бы они установлены в основной системе! + Для этого необходимо всего лишь установить нужный пакет и выполнить указанную команду, находясь **внутри** контейнерной ОС: + ```shell distrobox-export --app telegram-desktop ``` -:::tip +::: tip Замените `telegram-desktop` на нужную программу. ::: -:::warning +::: warning Учтите, что в стандартных репозиториях Fedora Linux приложение `telegram-desktop` отсутствует. -Чтобы получить возможность его установить, добавьте репозитории [**RPM Fusion**](https://docs.fedoraproject.org/en-US/quick-docs/rpmfusion-setup/) в данный дистрибутив. + +Чтобы получить возможность его установить, добавьте репозиторий [**RPM Fusion**](https://docs.fedoraproject.org/en-US/quick-docs/rpmfusion-setup/) в данный дистрибутив. + После этого вы получите доступ ко многим другим отсутствующим пакетам. ::: -:::info Объяснение -`--app` или `-a` передают название программы или абсолютный путь до ее .desktop файла, чтобы добавить ярлык для запуска в меню приложений на основной системе. -Учтите, что это сработает только при наличии `.desktop` файла у программы! +::: info Объяснение +`--app` или `-a` передают название программы или абсолютный путь до её `.desktop` файла, чтобы добавить ярлык для запуска в меню приложений на основной системе. Учтите, что это сработает только при наличии `.desktop` файла у программы! -`--bin` или `-b` используются для экспорта бинарных (двоичных) файлов. -В команду следует передавать абсолютный путь до него. +`--bin` или `-b` используются для экспорта бинарных (двоичных) файлов. В команду следует передавать абсолютный путь до него. `--export-path` или `-ep` принимают путь, куда следует экспортировать двоичный файл. @@ -333,7 +357,7 @@ distrobox-export --app telegram-desktop `--delete` или `-d` применяются для удаления экспортированного приложения или двоичного файла из хост системы. -`--sudo` или `-S` указывают, что экспортированная программа должна запускаться через **sudo**. +`--sudo` или `-S` указывают, что экспортированная программа должна запускаться через `sudo`. Чтобы увидеть все экспортированные приложения и "бинарники", воспользуйтесь `--list-apps` и `--list-binaries` (при помощи `-ep` можно указать свои пути поиска) соответственно. :::