[neon/backports-jammy/distrobox/Neon/unstable] /: Update standards and fix lintian warnings
Michel Alexandre Salim
null at kde.org
Fri Jul 14 11:42:04 BST 2023
Git commit 40b9033a2a8a93b1c7b6996756b34eb1d7709fee by Michel Alexandre Salim.
Committed on 01/08/2022 at 18:08.
Pushed by jriddell into branch 'Neon/unstable'.
Update standards and fix lintian warnings
Signed-off-by: Michel Alexandre Salim <michel at michel-slm.name>
M +1 -0 .gitignore
M +7 -0 debian/changelog
M +6 -5 debian/control
A +8 -0 debian/distrobox.lintian-overrides
A +1 -0 debian/patches/series
A +2385 -0 debian/patches/update-manpages.diff
https://invent.kde.org/neon/backports-jammy/distrobox/-/commit/40b9033a2a8a93b1c7b6996756b34eb1d7709fee
diff --git a/.gitignore b/.gitignore
index 6e92f57..be16b76 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
tags
+.pc
diff --git a/debian/changelog b/debian/changelog
index 0604972..3ad2ae4 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+distrobox (1.3.1-2) unstable; urgency=low
+
+ * Update standards
+ * Fix lintian warnings
+
+ -- Michel Alexandre Salim <michel at michel-slm.name> Mon, 01 Aug 2022 12:35:14 -0500
+
distrobox (1.3.1-1) unstable; urgency=low
* Update to 1.3.1
diff --git a/debian/control b/debian/control
index 445641a..9078851 100644
--- a/debian/control
+++ b/debian/control
@@ -2,8 +2,9 @@ Source: distrobox
Section: admin
Priority: optional
Maintainer: Michel Alexandre Salim <michel at michel-slm.name>
-Build-Depends: debhelper-compat (= 12)
-Standards-Version: 4.5.0
+Build-Depends:
+ debhelper-compat (= 13),
+Standards-Version: 4.6.1
Homepage: https://distrobox.privatedns.org/
Vcs-Browser: https://salsa.debian.org/michel/distrobox
Vcs-Git: https://salsa.debian.org/michel/distrobox.git
@@ -11,9 +12,9 @@ Rules-Requires-Root: no
Package: distrobox
Architecture: all
-# Multi-Arch: foreign
-Depends: ${misc:Depends}, ${shlibs:Depends}
- ,podman | docker.io
+Depends:
+ podman | docker.io,
+ ${misc:Depends},
Description: Another tool for containerized command line environments on Linux
Use any linux distribution inside your terminal. Distrobox uses podman or
docker to create containers using the linux distribution of your choice.
diff --git a/debian/distrobox.lintian-overrides b/debian/distrobox.lintian-overrides
new file mode 100644
index 0000000..5c11db2
--- /dev/null
+++ b/debian/distrobox.lintian-overrides
@@ -0,0 +1,8 @@
+# pandoc-generated manpages have lintian warnings
+
+# NAME section missing or invalid
+# https://github.com/89luca89/distrobox/issues/367
+bad-whatis-entry
+
+# seems to be because the tables are overly large; suppress
+groff-message
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644
index 0000000..9428f79
--- /dev/null
+++ b/debian/patches/series
@@ -0,0 +1 @@
+update-manpages.diff
diff --git a/debian/patches/update-manpages.diff b/debian/patches/update-manpages.diff
new file mode 100644
index 0000000..f9567b5
--- /dev/null
+++ b/debian/patches/update-manpages.diff
@@ -0,0 +1,2385 @@
+Pick up latest manpages update from https://github.com/89luca89/distrobox/commit/e8c0cfc041ca9b6551f24485d07747ed534e86cc
+
+manpages are automatically generated, and were last fixed to add NAME sections in
+https://github.com/89luca89/distrobox/commit/2a26ab654eeef674bec99f404c87cf3b2644208a
+--- a/man/man1/distrobox-compatibility.1
++++ b/man/man1/distrobox-compatibility.1
+@@ -15,9 +15,9 @@
+ . ftr VB CB
+ . ftr VBI CBI
+ .\}
+-.TH "DISTROBOX" "1" "Jun 2022" "Distrobox" "User Manual"
++.TH "DISTROBOX" "1" "Jul 2022" "Distrobox" "User Manual"
+ .hy
+-.SH Compatibility
++.SH COMPATIBILITY
+ .PP
+ This project \f[B]does not need a dedicated image\f[R].
+ It can use any OCI images from docker-hub, quay.io, or any registry of
+@@ -31,7 +31,7 @@ bootstrapping it.
+ The main concern is having basic Linux utilities (\f[V]mount\f[R]),
+ basic user management utilities (\f[V]usermod, passwd\f[R]), and
+ \f[V]sudo\f[R] correctly set.
+-.SS Supported container managers
++.SS SUPPORTED CONTAINER MANAGERS
+ .PP
+ \f[V]distrobox\f[R] can run on either \f[V]podman\f[R] or
+ \f[V]docker\f[R]
+@@ -52,7 +52,7 @@ Follow the official installation guide h
+ <https://docs.docker.com/engine/install>
+ .IP \[bu] 2
+ <https://docs.docker.com/engine/install/linux-postinstall/>
+-.SS Containers Distros
++.SS CONTAINERS DISTROS
+ .PP
+ Distrobox guests tested successfully with the following container
+ images:
+@@ -69,40 +69,36 @@ Images
+ T}
+ _
+ T{
+-AlmaLinux
+-T}@T{
+-8 8-minimal 9 9-minimal
+-T}@T{
+-docker.io/library/almalinux:8 docker.io/library/almalinux:9
+-docker.io/library/almalinux:9-minimal
+-T}
+-T{
+ AlmaLinux (UBI)
+ T}@T{
+ 8
+ T}@T{
+-docker.io/almalinux/8-base docker.io/almalinux/8-init
++quay.io/almalinux/8-base:8 quay.io/almalinux/8-init:8
+ T}
+ T{
+-Alpine Linux
++AlmaLinux
+ T}@T{
+-3.14 3.15
++8 8-minimal 9 9-minimal
+ T}@T{
+-docker.io/library/alpine:latest
++quay.io/almalinux/almalinux:8 quay.io/almalinux/almalinux:9
++quay.io/almalinux/almalinux:9-minimal
+ T}
+ T{
+-AmazonLinux
++Alpine Linux
+ T}@T{
+-2
++3.15 3.16
+ T}@T{
+-docker.io/library/amazonlinux:2.0.20211005.0
++docker.io/library/alpine:3.15 docker.io/library/alpine:3.16
++docker.io/library/alpine:latest
+ T}
+ T{
+ AmazonLinux
+ T}@T{
+-2022
++1 2 2022
+ T}@T{
+-public.ecr.aws/amazonlinux/amazonlinux:2022
++public.ecr.aws/amazonlinux/amazonlinux:1
++public.ecr.aws/amazonlinux/amazonlinux:2
++public.ecr.aws/amazonlinux/amazonlinux:2022.0.20220531.0
+ T}
+ T{
+ Archlinux
+@@ -111,10 +107,11 @@ T}@T{
+ docker.io/library/archlinux:latest
+ T}
+ T{
+-ClearLinux
++CentOS Stream
+ T}@T{
++8 9
+ T}@T{
+-docker.io/library/clearlinux:latest docker.io/library/clearlinux:base
++quay.io/centos/centos:stream8 quay.io/centos/centos:stream9
+ T}
+ T{
+ CentOS
+@@ -124,26 +121,10 @@ T}@T{
+ quay.io/centos/centos:7
+ T}
+ T{
+-CentOS Stream
+-T}@T{
+-8 9
+-T}@T{
+-quay.io/centos/centos:stream8 quay.io/centos/centos:stream9
+-T}
+-T{
+-RedHat (UBI)
++ClearLinux
+ T}@T{
+-7 8 9
+ T}@T{
+-registry.access.redhat.com/ubi7/ubi
+-registry.access.redhat.com/ubi7/ubi-init
+-registry.access.redhat.com/ubi7/ubi-minimal
+-registry.access.redhat.com/ubi8/ubi
+-registry.access.redhat.com/ubi8/ubi-init
+-registry.access.redhat.com/ubi8/ubi-minimal
+-registry.access.redhat.com/ubi9/ubi
+-registry.access.redhat.com/ubi9/ubi-init
+-registry.access.redhat.com/ubi9/ubi-minimal
++docker.io/library/clearlinux:latest docker.io/library/clearlinux:base
+ T}
+ T{
+ Debian
+@@ -171,21 +152,27 @@ T}@T{
+ docker.io/library/debian:unstable
+ T}
+ T{
+-Neurodebian
++Fedora
+ T}@T{
+-nd100
++35 36 37 Rawhide
+ T}@T{
+-docker.io/library/neurodebian:nd100
++registry.fedoraproject.org/fedora-toolbox:35 quay.io/fedora/fedora:35
++quay.io/fedora/fedora:36 registry.fedoraproject.org/fedora:37
++quay.io/fedora/fedora:rawhide
+ T}
+ T{
+-Fedora
++Gentoo Linux
++T}@T{
++rolling
++T}@T{
++You will have to Build your own to have a complete Gentoo docker image
++T}
++T{
++Kali Linux
+ T}@T{
+-34 35 36 37 Rawhide
++rolling
+ T}@T{
+-registry.fedoraproject.org/fedora-toolbox:34 docker.io/library/fedora:34
+-registry.fedoraproject.org/fedora-toolbox:35 docker.io/library/fedora:35
+-docker.io/library/fedora:36 registry.fedoraproject.org/fedora:37
+-docker.io/library/fedora:rawhide
++docker.io/kalilinux/kali-rolling:latest
+ T}
+ T{
+ Mageia
+@@ -195,6 +182,13 @@ T}@T{
+ docker.io/library/mageia
+ T}
+ T{
++Neurodebian
++T}@T{
++nd100
++T}@T{
++docker.io/library/neurodebian:nd100
++T}
++T{
+ Opensuse
+ T}@T{
+ Leap
+@@ -212,17 +206,39 @@ T}
+ T{
+ Oracle Linux
+ T}@T{
+-7 8
++6 6-slim 7 7-slim 8 8-slim 9 9-slim
+ T}@T{
++container-registry.oracle.com/os/oraclelinux:6
++container-registry.oracle.com/os/oraclelinux:6-slim
+ container-registry.oracle.com/os/oraclelinux:7
++container-registry.oracle.com/os/oraclelinux:7-slim
+ container-registry.oracle.com/os/oraclelinux:8
++container-registry.oracle.com/os/oraclelinux:8-slim
++container-registry.oracle.com/os/oraclelinux:9
++container-registry.oracle.com/os/oraclelinux:9-slim
++T}
++T{
++RedHat (UBI)
++T}@T{
++7 8 9
++T}@T{
++registry.access.redhat.com/ubi7/ubi
++registry.access.redhat.com/ubi7/ubi-init
++registry.access.redhat.com/ubi7/ubi-minimal
++registry.access.redhat.com/ubi8/ubi
++registry.access.redhat.com/ubi8/ubi-init
++registry.access.redhat.com/ubi8/ubi-minimal
++registry.access.redhat.com/ubi9/ubi
++registry.access.redhat.com/ubi9/ubi-init
++registry.access.redhat.com/ubi9/ubi-minimal
+ T}
+ T{
+ Rocky Linux
+ T}@T{
+-8
++8 8-minimal
+ T}@T{
+-docker.io/rockylinux/rockylinux:8
++quay.io/rockylinux/rockylinux:8 quay.io/rockylinux/rockylinux:8-minimal
++quay.io/rockylinux/rockylinux:latest
+ T}
+ T{
+ Scientific Linux
+@@ -241,18 +257,11 @@ T}
+ T{
+ Ubuntu
+ T}@T{
+-14.04 16.04 18.04 20.04 21.10 22.04
++14.04 16.04 18.04 20.04 22.04 22.10
+ T}@T{
+ docker.io/library/ubuntu:14.04 docker.io/library/ubuntu:16.04
+ docker.io/library/ubuntu:18.04 docker.io/library/ubuntu:20.04
+-docker.io/library/ubuntu:21.10 docker.io/library/ubuntu:22.04
+-T}
+-T{
+-Kali Linux
+-T}@T{
+-rolling
+-T}@T{
+-docker.io/kalilinux/kali-rolling:latest
++docker.io/library/ubuntu:22.04 docker.io/library/ubuntu:22.10
+ T}
+ T{
+ Void Linux
+@@ -261,13 +270,6 @@ T}@T{
+ ghcr.io/void-linux/void-linux:latest-full-x86_64
+ ghcr.io/void-linux/void-linux:latest-full-x86_64-musl
+ T}
+-T{
+-Gentoo Linux
+-T}@T{
+-rolling
+-T}@T{
+-You will have to Build your own to have a complete Gentoo docker image
+-T}
+ .TE
+ .PP
+ Note however that if you use a non-toolbox preconfigured image (e.g.
+@@ -284,7 +286,7 @@ plans to bring support to it.
+ If you are looking for unprivlaged NixOS environments, we suggest you
+ look into
+ nix-shell (https://nixos.org/manual/nix/unstable/command-ref/nix-shell.html).
+-.SS New Distro support
++.SS NEW DISTRO SUPPORT
+ .PP
+ If your distro of choice is not on the list, open an issue requesting
+ support for it, we can work together to check if it is possible to add
+@@ -292,7 +294,7 @@ support for it.
+ .PP
+ Or just try using it anyway, if it works, open an issue and it will be
+ added to the list!
+-.SS Older distributions
++.SS OLDER DISTRIBUTIONS
+ .PP
+ For older distributions like CentOS 5, CentOS 6, Debian 6, Ubuntu 12.04,
+ compatibility is not assured.
+--- a/man/man1/distrobox-create.1
++++ b/man/man1/distrobox-create.1
+@@ -14,17 +14,63 @@
+ . ftr VB CB
+ . ftr VBI CBI
+ .\}
+-.TH "DISTROBOX-CREATE" "1" "Jun 2022" "Distrobox" "User Manual"
++.TH "DISTROBOX-CREATE" "1" "Jul 2022" "Distrobox" "User Manual"
+ .hy
+-.SH Create the distrobox
++.SH NAME
++.IP
++.nf
++\f[C]
++distrobox create
++distrobox-create
++\f[R]
++.fi
++.SH DESCRIPTION
+ .PP
+ distrobox-create takes care of creating the container with input name
+ and image.
+ The created container will be tightly integrated with the host, allowing
+ sharing of the HOME directory of the user, external storage, external
+ usb devices and graphical apps (X11/Wayland), and audio.
++.SH SYNOPSIS
+ .PP
+-Usage:
++\f[B]distrobox create\f[R]
++.IP
++.nf
++\f[C]
++--image/-i: image to use for the container default: registry.fedoraproject.org/fedora-toolbox:36
++--name/-n: name for the distrobox default: my-distrobox
++--pull/-p: pull latest image unconditionally without asking
++--yes/-Y: non-interactive, pull images without asking
++--root/-r: launch podman/docker with root privileges. Note that if you need root this is the preferred
++ way over \[dq]sudo distrobox\[dq] (note: if using a program other than \[aq]sudo\[aq] for root privileges is necessary,
++ specify it through the DBX_SUDO_PROGRAM env variable, or \[aq]distrobox_sudo_program\[aq] config variable)
++--clone/-c: name of the distrobox container to use as base for a new container
++ this will be useful to either rename an existing distrobox or have multiple copies
++ of the same environment.
++--home/-H select a custom HOME directory for the container. Useful to avoid host\[aq]s home littering with temp files.
++--volume additional volumes to add to the container
++--additional-flags/-a: additional flags to pass to the container manager command
++--init-hooks additional commands to execute during container initialization
++--pre-init-hooks additional commands to execute prior to container initialization
++--init/-I use init system (like systemd) inside the container.
++ this will make host\[aq]s processes not visible from within the container.
++--help/-h: show this message
++--dry-run/-d: only print the container manager command generated
++--verbose/-v: show more verbosity
++--version/-V: show version
++\f[R]
++.fi
++.SH COMPATIBILITY
++.IP
++.nf
++\f[C]
++for a list of compatible images and container managers, please consult the man page:
++ man distrobox
++ man distrobox-compatibility
++or consult the documentation page on: https://github.com/89luca89/distrobox/blob/main/docs/compatibility.md#containers-distros
++\f[R]
++.fi
++.SH EXAMPLES
+ .IP
+ .nf
+ \f[C]
+@@ -58,44 +104,7 @@ DBX_CONTAINER_IMAGE
+ DBX_CONTAINER_MANAGER
+ DBX_CONTAINER_NAME
+ DBX_NON_INTERACTIVE
+-\f[R]
+-.fi
+-.PP
+-Options:
+-.IP
+-.nf
+-\f[C]
+---image/-i: image to use for the container default: registry.fedoraproject.org/fedora-toolbox:36
+---name/-n: name for the distrobox default: my-distrobox
+---pull/-p: pull latest image unconditionally without asking
+---yes/-Y: non-interactive, pull images without asking
+---root/-r: launch podman/docker with root privileges. Note that if you need root this is the preferred
+- way over \[dq]sudo distrobox\[dq]
+---clone/-c: name of the distrobox container to use as base for a new container
+- this will be useful to either rename an existing distrobox or have multiple copies
+- of the same environment.
+---home/-H select a custom HOME directory for the container. Useful to avoid host\[aq]s home littering with temp files.
+---volume additional volumes to add to the container
+---additional-flags/-a: additional flags to pass to the container manager command
+---init-hooks additional commands to execute during container initialization
+---pre-init-hooks additional commands to execute prior to container initialization
+---init/-I use init system (like systemd) inside the container.
+- this will make host\[aq]s processes not visible from within the container.
+---help/-h: show this message
+---dry-run/-d: only print the container manager command generated
+---verbose/-v: show more verbosity
+---version/-V: show version
+-\f[R]
+-.fi
+-.PP
+-Compatibility:
+-.IP
+-.nf
+-\f[C]
+-for a list of compatible images and container managers, please consult the man page:
+- man distrobox
+- man distrobox-compatibility
+-or consult the documentation page on: https://github.com/89luca89/distrobox/blob/main/docs/compatibility.md#containers-distros
++DBX_SUDO_PROGRAM
+ \f[R]
+ .fi
+ .PP
+--- a/man/man1/distrobox-enter.1
++++ b/man/man1/distrobox-enter.1
+@@ -14,9 +14,17 @@
+ . ftr VB CB
+ . ftr VBI CBI
+ .\}
+-.TH "DISTROBOX-ENTER" "1" "Jun 2022" "Distrobox" "User Manual"
++.TH "DISTROBOX-ENTER" "1" "Jul 2022" "Distrobox" "User Manual"
+ .hy
+-.SH Enter the distrobox
++.SH NAME
++.IP
++.nf
++\f[C]
++distrobox enter
++distrobox-enter
++\f[R]
++.fi
++.SH DESCRIPTION
+ .PP
+ distrobox-enter takes care of entering the container with the name
+ specified.
+@@ -24,8 +32,27 @@ Default command executed is your SHELL,
+ shells or entire commands to execute.
+ If using it inside a script, an application, or a service, you can
+ specify the \[en]headless mode to disable tty and interactivity.
++.SH SYNOPSIS
+ .PP
+-Usage:
++\f[B]distrobox enter\f[R]
++.IP
++.nf
++\f[C]
++--name/-n: name for the distrobox default: my-distrobox
++--/-e: end arguments execute the rest as command to execute at login default: bash -l
++--no-tty/-T: do not instantiate a tty
++--no-workdir/-nw: always start the container from container\[aq]s home directory
++--additional-flags/-a: additional flags to pass to the container manager command
++--help/-h: show this message
++--root/-r: launch podman/docker with root privileges. Note that if you need root this is the preferred
++ way over \[dq]sudo distrobox\[dq] (note: if using a program other than \[aq]sudo\[aq] for root privileges is necessary,
++ specify it through the DBX_SUDO_PROGRAM env variable, or \[aq]distrobox_sudo_program\[aq] config variable)
++--dry-run/-d: only print the container manager command generated
++--verbose/-v: show more verbosity
++--version/-V: show version
++\f[R]
++.fi
++.SH EXAMPLES
+ .IP
+ .nf
+ \f[C]
+@@ -53,24 +80,7 @@ Supported environment variables:
+ DBX_CONTAINER_NAME
+ DBX_CONTAINER_MANAGER
+ DBX_SKIP_WORKDIR
+-\f[R]
+-.fi
+-.PP
+-Options:
+-.IP
+-.nf
+-\f[C]
+---name/-n: name for the distrobox default: my-distrobox
+---/-e: end arguments execute the rest as command to execute at login default: bash -l
+---no-tty/-T: do not instantiate a tty
+---no-workdir/-nw: always start the container from container\[aq]s home directory
+---additional-flags/-a: additional flags to pass to the container manager command
+---help/-h: show this message
+---root/-r: launch podman/docker with root privileges. Note that if you need root this is the preferred
+- way over \[dq]sudo distrobox\[dq]
+---dry-run/-d: only print the container manager command generated
+---verbose/-v: show more verbosity
+---version/-V: show version
++DBX_SUDO_PROGRAM
+ \f[R]
+ .fi
+ .PP
+@@ -97,3 +107,20 @@ my_var=test distrobox enter -n dev-arch
+ my_var=test
+ \f[R]
+ .fi
++.PP
++If you\[cq]d like to enter a rootful container having distrobox use a
++program other than `sudo' to run podman/docker as root, such as `pkexec'
++or `doas', you may specify it with the \f[V]DBX_SUDO_PROGRAM\f[R]
++environment variable.
++For example, to use `doas' to enter a rootful container:
++.IP
++.nf
++\f[C]
++DBX_SUDO_PROGRAM=\[dq]doas\[dq] distrobox enter -n container --root
++\f[R]
++.fi
++.PP
++Additionally, in one of the config file paths that distrobox supports,
++such as \f[V]\[ti]/.distroboxrc\f[R], you can also append the line
++\f[V]distrobox_sudo_program=\[dq]doas\[dq]\f[R] (for example) to always
++run distrobox commands involving rootful containers using `doas'.
+--- /dev/null
++++ b/man/man1/distrobox-ephemeral.1
+@@ -0,0 +1,81 @@
++.\
++.\"
++.\" Define V font for inline verbatim, using C font in formats
++.\" that render this, and otherwise B font.
++.ie "\f[CB]x\f[]"x" \{\
++. ftr V B
++. ftr VI BI
++. ftr VB B
++. ftr VBI BI
++.\}
++.el \{\
++. ftr V CR
++. ftr VI CI
++. ftr VB CB
++. ftr VBI CBI
++.\}
++.TH "DISTROBOX-EPHEMERAL" "1" "Jul 2022" "Distrobox" "User Manual"
++.hy
++.SH NAME
++.IP
++.nf
++\f[C]
++distrobox ephemeral
++distrobox-ephemeral
++\f[R]
++.fi
++.SH DESCRIPTION
++.PP
++distrobox-ephemeral creates a temporary distrobox that is automatically
++destroyed when the command is terminated.
++.SH SYNOPSIS
++.PP
++\f[B]distrobox ephemeral\f[R]
++.IP
++.nf
++\f[C]
++--root/-r: launch podman/docker with root privileges. Note that if you need root this is the preferred
++ way over \[dq]sudo distrobox\[dq] (note: if using a program other than \[aq]sudo\[aq] for root privileges is necessary,
++ specify it through the DBX_SUDO_PROGRAM env variable, or \[aq]distrobox_sudo_program\[aq] config variable)
++--verbose/-v: show more verbosity
++--help/-h: show this message
++--/-e: end arguments execute the rest as command to execute at login default: bash -l
++--version/-V: show version
++\f[R]
++.fi
++.SH EXAMPLES
++.IP
++.nf
++\f[C]
++distrobox-ephemeral --image alpine:latest -- cat /etc/os-release
++distrobox-ephemeral --root --verbose --image alpine:latest --volume /opt:/opt
++\f[R]
++.fi
++.PP
++You can also use flags from \f[B]distrobox-create\f[R] to customize the
++ephemeral container to run.
++.PP
++Refer to
++.IP
++.nf
++\f[C]
++man distrobox-create
++\f[R]
++.fi
++.PP
++or
++.IP
++.nf
++\f[C]
++distrobox-create --help
++\f[R]
++.fi
++.PP
++Supported environment variables:
++.IP
++.nf
++\f[C]
++distrobox-ephemeral calls distrobox-create, SEE ALSO distrobox-create(1) for
++a list of supported environment variables to use.
++\f[R]
++.fi
+--- a/man/man1/distrobox-export.1
++++ b/man/man1/distrobox-export.1
+@@ -14,15 +14,86 @@
+ . ftr VB CB
+ . ftr VBI CBI
+ .\}
+-.TH "DISTROBOX-EXPORT" "1" "Jun 2022" "Distrobox" "User Manual"
++.TH "DISTROBOX-EXPORT" "1" "Jul 2022" "Distrobox" "User Manual"
+ .hy
+-.SH Application and service exporting
++.SH NAME
++.IP
++.nf
++\f[C]
++distrobox-export
++\f[R]
++.fi
++.SH DESCRIPTION
++.PP
++\f[B]Application and service exporting\f[R]
+ .PP
+ distrobox-export takes care of exporting an app a binary or a service
+ from the container to the host.
+ .PP
+ The exported app will be easily available in your normal launcher and it
+ will automatically be launched from the container it is exported from.
++.SH SYNOPSIS
++.PP
++\f[B]distrobox-export\f[R]
++.IP
++.nf
++\f[C]
++--app/-a: name of the application to export
++--bin/-b: absolute path of the binary to export
++--service/-s: name of the service to export
++--delete/-d: delete exported application or service
++--export-label/-el: label to add to exported application name.
++ Defaults to (on \[rs]$container_name)
++--export-path/-ep: path where to export the binary
++--extra-flags/-ef: extra flags to add to the command
++--sudo/-S: specify if the exported item should be run as sudo
++--help/-h: show this message
++--verbose/-v: show more verbosity
++--version/-V: show version
++\f[R]
++.fi
++.PP
++You may want to install graphical applications or user services in your
++distrobox.
++Using \f[V]distrobox-export\f[R] from \f[B]inside\f[R] the container
++will let you use them from the host itself.
++.SH EXAMPLES
++.IP
++.nf
++\f[C]
++distrobox-export --app mpv [--extra-flags \[dq]flags\[dq]] [--delete] [--sudo]
++distrobox-export --service syncthing [--extra-flags \[dq]flags\[dq]] [--delete] [--sudo]
++distrobox-export --bin /path/to/bin --export-path \[ti]/.local/bin [--extra-flags \[dq]flags\[dq]] [--delete] [--sudo]
++\f[R]
++.fi
++.PP
++\f[B]App export example\f[R]
++.IP
++.nf
++\f[C]
++distrobox-export --app abiword
++\f[R]
++.fi
++.PP
++This tool will simply copy the original \f[V].desktop\f[R] files along
++with needed icons, add the prefix
++\f[V]/usr/local/bin/distrobox-enter -n distrobox_name -e ...\f[R] to the
++commands to run, and save them in your home to be used directly from the
++host as a normal app.
++.PP
++\f[B]Service export example\f[R]
++.IP
++.nf
++\f[C]
++distrobox-export --service syncthing --extra-flags \[dq]--allow-newer-config\[dq]
++distrobox-export --service nginx --sudo
++\f[R]
++.fi
++.PP
++For services, it will similarly export the systemd unit inside the
++container to a \f[V]systemctl --user\f[R] service, prefixing the various
++\f[V]ExecStart ExecStartPre ExecStartPost ExecReload ExecStop ExecStopPost\f[R]
++with the \f[V]distrobox-enter\f[R] command prefix.
+ .PP
+ The exported services will be available in the host\[cq]s user\[cq]s
+ systemd session, so
+@@ -35,12 +106,29 @@ systemctl --user status exported_service
+ .PP
+ will show the status of the service exported.
+ .PP
++\f[B]Binary export example\f[R]
++.IP
++.nf
++\f[C]
++distrobox-export --bin /usr/bin/code --extra-flags \[dq]--foreground\[dq] --export-path $HOME/.local/bin
++\f[R]
++.fi
++.PP
++In the case of exporting binaries, you will have to specify
++\f[B]where\f[R] to export it (\f[V]--export-path\f[R]) and the tool will
++create a little wrapper script that will \f[V]distrobox-enter -e\f[R]
++from the host, the desired binary.
++This can be handy with the use of \f[V]direnv\f[R] to have different
++versions of the same binary based on your \f[V]env\f[R] or project.
++.PP
+ The exported binaries will be exported in the \[lq]\[en]export-path\[rq]
+ of choice as a wrapper script that acts naturally both on the host and
+ in the container.
+ Note that \[lq]\[en]export-path\[rq] is NOT OPTIONAL, you have to
+ explicitly set it.
+ .PP
++\f[B]Additional flags\f[R]
++.PP
+ You can specify additional flags to add to the command, for example if
+ you want to export an electron app, you could add the
+ \[lq]\[en]foreground\[rq] flag to the command:
+@@ -58,6 +146,8 @@ Extra flags are only used then the expor
+ used from the host, using them inside the container will not include
+ them.
+ .PP
++\f[B]Unexport\f[R]
++.PP
+ The option \[lq]\[en]delete\[rq] will un-export an app, binary, or
+ service.
+ .IP
+@@ -70,94 +160,90 @@ distrobox-export --service nginx --delet
+ \f[R]
+ .fi
+ .PP
++\f[B]Run as root in the container\f[R]
++.PP
+ The option \[lq]\[en]sudo\[rq] will launch the exported item as root
+ inside the distrobox.
+ .PP
+-Note you can use \[en]app OR \[en]bin OR \[en]service but not together.
+-.IP
+-.nf
+-\f[C]
+-distrobox-export --service nginx --sudo
+-\f[R]
+-.fi
++\f[B]Exporting apps from rootful containers\f[R]
+ .PP
+-Usage:
+-.IP
+-.nf
+-\f[C]
+-distrobox-export --app mpv [--extra-flags \[dq]flags\[dq]] [--delete] [--sudo]
+-distrobox-export --service syncthing [--extra-flags \[dq]flags\[dq]] [--delete] [--sudo]
+-distrobox-export --bin /path/to/bin --export-path \[ti]/.local/bin [--extra-flags \[dq]flags\[dq]] [--delete] [--sudo]
+-\f[R]
+-.fi
++It is worth noting that, when exporting any item - which includes
++graphical apps - from rootful containers (created with
++\f[V]distrobox create --root\f[R]), root privileges will be needed every
++time the item is launched (in order to enter the rootful container),
++which, by default, is done using \f[V]sudo\f[R] (see docs for
++\f[V]distrobox-enter\f[R] on how to customize that).
++However, for graphical apps in specific, since they launch without a
++terminal, the usage of \f[V]sudo\f[R] might, at first, make it
++impossible to launch them.
+ .PP
+-Options:
+-.IP
+-.nf
+-\f[C]
+---app/-a: name of the application to export
+---bin/-b: absolute path of the binary to export
+---service/-s: name of the service to export
+---delete/-d: delete exported application or service
+---export-label/-el: label to add to exported application name.
+- Defaults to (on \[rs]$container_name)
+---export-path/-ep: path where to export the binary
+---extra-flags/-ef: extra flags to add to the command
+---sudo/-S: specify if the exported item should be ran as sudo
+---help/-h: show this message
+---verbose/-v: show more verbosity
+---version/-V: show version
+-\f[R]
+-.fi
++To fix this without needing to customize the sudo program, one can
++define a global \f[V]SUDO_ASKPASS\f[R] environment variable on their
++machine, which is a PATH to an executable that is run by \f[V]sudo\f[R]
++when no terminal is available (or when it is given the
++\f[V]--askpass\f[R] or \f[V]-A\f[R] option), and the output of that
++executable to stdout is used as the password input.
++The executable is called as many times is needed for authentication as
++root to succeed (unless a limit of amount of attempts is reached).
+ .PP
+-You may want to install graphical applications or user services in your
+-distrobox.
+-Using \f[V]distrobox-export\f[R] from \f[B]inside\f[R] the container
+-will let you use them from the host itself.
++To do this, pick a program to ask the user for graphical password input.
++In this example, we will use \f[V]zenity --password\f[R], which should
++be present for GNOME users (and can also be installed in other DEs) -
++there are other options, such as
++\f[V]kdialog --password \[dq]Message\[dq]\f[R] for KDE users.
+ .PP
+-App export example:
++Write the call to the desired program to a script file, for example to
++\f[V]/usr/bin/my-password-prompt\f[R] (sample contents below):
+ .IP
+ .nf
+ \f[C]
+-distrobox-export --app abiword
++#!/bin/sh
++zenity --password \[dq]Authentication as root is required\[dq]
+ \f[R]
+ .fi
+ .PP
+-This tool will simply copy the original \f[V].desktop\f[R] files along
+-with needed icons, add the prefix
+-\f[V]/usr/local/bin/distrobox-enter -n distrobox_name -e ...\f[R] to the
+-commands to run, and save them in your home to be used directly from the
+-host as a normal app.
++(You may save the script under, for example, \f[V]\[ti]/.local/bin\f[R]
++if you want to keep it fully local to your user.)
+ .PP
+-Service export example:
++Afterwards, make it executable (e.g.\ run
++\f[V]sudo chmod +x /usr/bin/my-password-prompt\f[R]).
++Then, make sure to set \f[V]SUDO_ASKPASS\f[R] to
++\f[V]\[dq]/usr/bin/my-password-prompt\[dq]\f[R] (replace with your
++script\[cq]s path) in a global profile file, so that it is picked up by
++sudo when running graphical apps (and, therefore, sudo will run the
++script you created to ask for a password).
++This is done with the shell line
++\f[V]export SUDO_ASKPASS=\[dq]/path/to/script/goes/here\[dq]\f[R].
++You can do this for your user only by running the command below (replace
++the script path as needed):
+ .IP
+ .nf
+ \f[C]
+-distrobox-export --service syncthing --extra-flags \[dq]--allow-newer-config\[dq]
+-distrobox-export --service nginx --sudo
++echo \[aq]export SUDO_ASKPASS=\[dq]/usr/bin/my-password-prompt\[dq]\[aq] >> \[ti]/.profile
+ \f[R]
+ .fi
+ .PP
+-For services, it will similarly export the systemd unit inside the
+-container to a \f[V]systemctl --user\f[R] service, prefixing the various
+-\f[V]ExecStart ExecStartPre ExecStartPost ExecReload ExecStop ExecStopPost\f[R]
+-with the \f[V]distrobox-enter\f[R] command prefix.
++Which appends the appropriate line to the end of your
++\f[V]\[ti]/.profile\f[R] file, thus making the change local to your
++user.
++Alternatively, to set it system-wide (for all users), you may create a
++file in \f[V]/etc/profile.d/\f[R] (or equivalent for your system) with
++that line.
+ .PP
+-Binary export example:
++Now just log out and log back in, and graphical apps exported from
++rootful containers should now be properly asking for root\[cq]s password
++before launching (instead of not opening, if that was the case before).
++.PP
++\f[B]Notes\f[R]
++.PP
++Note you can use \[en]app OR \[en]bin OR \[en]service but not together.
+ .IP
+ .nf
+ \f[C]
+-distrobox-export --bin /usr/bin/code --extra-flags \[dq]--foreground\[dq] --export-path $HOME/.local/bin
++distrobox-export --service nginx --sudo
+ \f[R]
+ .fi
+ .PP
+-In the case of exporting binaries, you will have to specify
+-\f[B]where\f[R] to export it (\f[V]--export-path\f[R]) and the tool will
+-create a little wrapper script that will \f[V]distrobox-enter -e\f[R]
+-from the host, the desired binary.
+-This can be handy with the use of \f[V]direnv\f[R] to have different
+-versions of the same binary based on your \f[V]env\f[R] or project.
+-.PP
+ [IMAGE: app-export (https://user-images.githubusercontent.com/598882/144294795-c7785620-bf68-4d1b-b251-1e1f0a32a08d.png)]
+ .PP
+ [IMAGE: service-export (https://user-images.githubusercontent.com/598882/144294314-29a8921f-4511-453d-bf8e-d0d1e336db91.png)]
+--- a/man/man1/distrobox-host-exec.1
++++ b/man/man1/distrobox-host-exec.1
+@@ -14,9 +14,16 @@
+ . ftr VB CB
+ . ftr VBI CBI
+ .\}
+-.TH "DISTROBOX-HOST-EXEC" "1" "Jun 2022" "Distrobox" "User Manual"
++.TH "DISTROBOX-HOST-EXEC" "1" "Jul 2022" "Distrobox" "User Manual"
+ .hy
+-.SH Host Command Execution
++.SH NAME
++.IP
++.nf
++\f[C]
++distrobox-host-exec
++\f[R]
++.fi
++.SH DESCRIPTION
+ .PP
+ distrobox-host-exec lets one execute command on the host, while inside
+ of a container.
+@@ -24,8 +31,8 @@ of a container.
+ If \[lq]flatpak-spawn\[rq] is installed in the container, this is what
+ is used, and it is the most powerful and recommended method.
+ If, instead, \[lq]flatpak-spawn\[rq] can\[cq]t be found, it still try to
+-get the job done with \[lq]chroot\[rq] (but beware that not all
+-commands/programs will work well in this mode).
++get the job done with \[lq]host-spawn\[rq], an alternative project.
++.SH SYNOPSIS
+ .PP
+ Just pass to \[lq]distrobox-host-exec\[rq] any command and all its
+ arguments, if any.
+@@ -33,28 +40,34 @@ arguments, if any.
+ .nf
+ \f[C]
+ distrobox-host-exec [command [arguments]]
++
++--help/-h: show this message
++--verbose/-v: show more verbosity
++--version/-V: show version
+ \f[R]
+ .fi
+ .PP
+-If no command is provided, it will execute \[lq]/bin/sh\[rq].
++If no command is provided, it will execute \[lq]$SHELL\[rq].
+ .PP
+-Example usage:
++Alternatively, use symlinks to make \f[V]distrobox-host-exec\f[R]
++execute as that command:
+ .IP
+ .nf
+ \f[C]
+-distrobox-host-exec ls
+-distrobox-host-exec bash -l
+-distrobox-host-exec flatpak run org.mozilla.firefox
+-distrobox-host-exec podman ps -a
++\[ti]$: ln -s /usr/bin/distrobox-host-exec /usr/local/bin/podman
++\[ti]$: ls -l /usr/local/bin/podman
++lrwxrwxrwx. 1 root root 51 Jul 11 19:26 /usr/local/bin/podman -> /usr/bin/distrobox-host-exec
++\[ti]$: podman version
++\&...this is executed on host...
+ \f[R]
+ .fi
+-.PP
+-Options:
++.SH EXAMPLES
+ .IP
+ .nf
+ \f[C]
+---help/-h: show this message
+---verbose/-v: show more verbosity
+---version/-V: show version
++distrobox-host-exec ls
++distrobox-host-exec bash -l
++distrobox-host-exec flatpak run org.mozilla.firefox
++distrobox-host-exec podman ps -a
+ \f[R]
+ .fi
+--- a/man/man1/distrobox-init.1
++++ b/man/man1/distrobox-init.1
+@@ -14,30 +14,32 @@
+ . ftr VB CB
+ . ftr VBI CBI
+ .\}
+-.TH "DISTROBOX-INIT" "1" "Jun 2022" "Distrobox" "User Manual"
++.TH "DISTROBOX-INIT" "1" "Jul 2022" "Distrobox" "User Manual"
+ .hy
+-.SH Init the distrobox (not to be launched manually)
++.SH NAME
++.IP
++.nf
++\f[C]
++distrobox-init
++\f[R]
++.fi
++.SH DESCRIPTION
++.PP
++\f[B]Init the distrobox (not to be launched manually)\f[R]
+ .PP
+ distrobox-init is the entrypoint of a created distrobox.
+ Note that this HAS to run from inside a distrobox, will not work if you
+ run it from your host.
+ .PP
+-This is not intended to be used manually, but instead used by
+-distrobox-enter to set up the container\[cq]s entrypoint.
++\f[B]This is not intended to be used manually, but instead used by
++distrobox-create to set up the container\[cq]s entrypoint.\f[R]
+ .PP
+ distrobox-init will take care of installing missing dependencies (eg.
+ sudo), set up the user and groups, mount directories from the host to
+ ensure the tight integration.
++.SH SYNOPSIS
+ .PP
+-Usage:
+-.IP
+-.nf
+-\f[C]
+-distrobox-init --name test-user --user 1000 --group 1000 --home /home/test-user
+-\f[R]
+-.fi
+-.PP
+-Options:
++\f[B]distrobox-init\f[R]
+ .IP
+ .nf
+ \f[C]
+@@ -53,9 +55,10 @@ Options:
+ --: end arguments execute the rest as command to execute during init
+ \f[R]
+ .fi
+-.PP
+-This is used as entrypoint for the created container, it will take care
+-of creating the users, setting up sudo, mountpoints, and exports.
+-.PP
+-\f[B]You should not have to launch this manually\f[R], this is used by
+-\f[V]distrobox create\f[R] to set up container\[cq]s entrypoint.
++.SH EXAMPLES
++.IP
++.nf
++\f[C]
++distrobox-init --name test-user --user 1000 --group 1000 --home /home/test-user
++\f[R]
++.fi
+--- a/man/man1/distrobox-list.1
++++ b/man/man1/distrobox-list.1
+@@ -14,48 +14,59 @@
+ . ftr VB CB
+ . ftr VBI CBI
+ .\}
+-.TH "DISTROBOX-LIST" "1" "Jun 2022" "Distrobox" "User Manual"
++.TH "DISTROBOX-LIST" "1" "Jul 2022" "Distrobox" "User Manual"
+ .hy
+-.SH List containers
++.SH NAME
++.IP
++.nf
++\f[C]
++distrobox list
++distrobox-list
++\f[R]
++.fi
++.SH DESCRIPTION
+ .PP
+ distrobox-list lists available distroboxes.
+ It detects them and lists them separately from the rest of normal podman
+ or docker containers.
++.SH SYNOPSIS
+ .PP
+-Usage:
++\f[B]distrobox list\f[R]
+ .IP
+ .nf
+ \f[C]
+-distrobox-list
++--help/-h: show this message
++--no-color: disable color formatting
++--root/-r: launch podman/docker with root privileges. Note that if you need root this is the preferred
++ way over \[dq]sudo distrobox\[dq] (note: if using a program other than \[aq]sudo\[aq] for root privileges is necessary,
++ specify it through the DBX_SUDO_PROGRAM env variable, or \[aq]distrobox_sudo_program\[aq] config variable)
++--size/-s: show also container size
++--verbose/-v: show more verbosity
++--version/-V: show version
+ \f[R]
+ .fi
+-.PP
+-You can also use environment variables to specify container manager
++.SH EXAMPLES
+ .IP
+ .nf
+ \f[C]
+-DBX_CONTAINER_MANAGER=\[dq]docker\[dq] distrobox-list
++distrobox-list
+ \f[R]
+ .fi
+ .PP
+-Supported environment variables:
++You can also use environment variables to specify container manager
+ .IP
+ .nf
+ \f[C]
+-DBX_CONTAINER_MANAGER
++DBX_CONTAINER_MANAGER=\[dq]docker\[dq] distrobox-list
+ \f[R]
+ .fi
+ .PP
+-Options:
++Supported environment variables:
+ .IP
+ .nf
+ \f[C]
+---help/-h: show this message
+---root/-r: launch podman/docker with root privileges. Note that if you need root this is the preferred
+- way over \[dq]sudo distrobox\[dq]
+---size/-s: show also container size
+---verbose/-v: show more verbosity
+---version/-V: show version
++DBX_CONTAINER_MANAGER
++DBX_SUDO_PROGRAM
+ \f[R]
+ .fi
+ .PP
+--- a/man/man1/distrobox-rm.1
++++ b/man/man1/distrobox-rm.1
+@@ -14,13 +14,36 @@
+ . ftr VB CB
+ . ftr VBI CBI
+ .\}
+-.TH "DISTROBOX-RM" "1" "Jun 2022" "Distrobox" "User Manual"
++.TH "DISTROBOX-RM" "1" "Jul 2022" "Distrobox" "User Manual"
+ .hy
+-.SH Remove containers
++.SH NAME
++.IP
++.nf
++\f[C]
++distrobox rm
++distrobox-rm
++\f[R]
++.fi
++.SH DESCRIPTION
+ .PP
+ distrobox-rm delete one of the available distroboxes.
++.SH SYNOPSIS
+ .PP
+-Usage:
++\f[B]distrobox rm\f[R]
++.IP
++.nf
++\f[C]
++--name/-n: name for the distrobox
++--force/-f: force deletion
++--root/-r: launch podman/docker with root privileges. Note that if you need root this is the preferred
++ way over \[dq]sudo distrobox\[dq] (note: if using a program other than \[aq]sudo\[aq] for root privileges is necessary,
++ specify it through the DBX_SUDO_PROGRAM env variable, or \[aq]distrobox_sudo_program\[aq] config variable)
++--help/-h: show this message
++--verbose/-v: show more verbosity
++--version/-V: show version
++\f[R]
++.fi
++.SH EXAMPLES
+ .IP
+ .nf
+ \f[C]
+@@ -45,19 +68,6 @@ Supported environment variables:
+ DBX_CONTAINER_MANAGER
+ DBX_CONTAINER_NAME
+ DBX_NON_INTERACTIVE
+-\f[R]
+-.fi
+-.PP
+-Options:
+-.IP
+-.nf
+-\f[C]
+---name/-n: name for the distrobox
+---force/-f: force deletion
+---root/-r: launch podman/docker with root privileges. Note that if you need root this is the preferred
+- way over \[dq]sudo distrobox\[dq]
+---help/-h: show this message
+---verbose/-v: show more verbosity
+---version/-V: show version
++DBX_SUDO_PROGRAM
+ \f[R]
+ .fi
+--- a/man/man1/distrobox-stop.1
++++ b/man/man1/distrobox-stop.1
+@@ -14,17 +14,40 @@
+ . ftr VB CB
+ . ftr VBI CBI
+ .\}
+-.TH "DISTROBOX-STOP" "1" "Jun 2022" "Distrobox" "User Manual"
++.TH "DISTROBOX-STOP" "1" "Jul 2022" "Distrobox" "User Manual"
+ .hy
+-.SH Stop containers
++.SH NAME
++.IP
++.nf
++\f[C]
++distrobox stop
++distrobox-stop
++\f[R]
++.fi
++.SH DESCRIPTION
+ .PP
+ distrobox-stop stop a running distrobox.
+ .PP
+ Distroboxes are left running, even after exiting out of them, so that
+ subsequent enters are really quick.
+ This is how they can be stopped.
++.SH SYNOPSIS
+ .PP
+-Usage:
++\f[B]distrobox stop\f[R]
++.IP
++.nf
++\f[C]
++--name/-n: name for the distrobox
++--yes/-Y: non-interactive, stop without asking
++--help/-h: show this message
++--root/-r: launch podman/docker with root privileges. Note that if you need root this is the preferred
++ way over \[dq]sudo distrobox\[dq] (note: if using a program other than \[aq]sudo\[aq] for root privileges is necessary,
++ specify it through the DBX_SUDO_PROGRAM env variable, or \[aq]distrobox_sudo_program\[aq] config variable)
++--verbose/-v: show more verbosity
++--version/-V: show version
++\f[R]
++.fi
++.SH EXAMPLES
+ .IP
+ .nf
+ \f[C]
+@@ -49,19 +72,6 @@ Supported environment variables:
+ DBX_CONTAINER_MANAGER
+ DBX_CONTAINER_NAME
+ DBX_NON_INTERACTIVE
+-\f[R]
+-.fi
+-.PP
+-Options:
+-.IP
+-.nf
+-\f[C]
+---name/-n: name for the distrobox
+---yes/-Y: non-interactive, stop without asking
+---help/-h: show this message
+---root/-r: launch podman/docker with root privileges. Note that if you need root this is the preferred
+- way over \[dq]sudo distrobox\[dq]
+---verbose/-v: show more verbosity
+---version/-V: show version
++DBX_SUDO_PROGRAM
+ \f[R]
+ .fi
+--- a/man/man1/distrobox.1
++++ b/man/man1/distrobox.1
+@@ -15,9 +15,9 @@
+ . ftr VB CB
+ . ftr VBI CBI
+ .\}
+-.TH "DISTROBOX" "1" "Jun 2022" "Distrobox" "User Manual"
++.TH "DISTROBOX" "1" "Jul 2022" "Distrobox" "User Manual"
+ .hy
+-.SH Compatibility
++.SH COMPATIBILITY
+ .PP
+ This project \f[B]does not need a dedicated image\f[R].
+ It can use any OCI images from docker-hub, quay.io, or any registry of
+@@ -31,7 +31,7 @@ bootstrapping it.
+ The main concern is having basic Linux utilities (\f[V]mount\f[R]),
+ basic user management utilities (\f[V]usermod, passwd\f[R]), and
+ \f[V]sudo\f[R] correctly set.
+-.SS Supported container managers
++.SS SUPPORTED CONTAINER MANAGERS
+ .PP
+ \f[V]distrobox\f[R] can run on either \f[V]podman\f[R] or
+ \f[V]docker\f[R]
+@@ -52,7 +52,7 @@ Follow the official installation guide h
+ <https://docs.docker.com/engine/install>
+ .IP \[bu] 2
+ <https://docs.docker.com/engine/install/linux-postinstall/>
+-.SS Containers Distros
++.SS CONTAINERS DISTROS
+ .PP
+ Distrobox guests tested successfully with the following container
+ images:
+@@ -69,40 +69,36 @@ Images
+ T}
+ _
+ T{
+-AlmaLinux
+-T}@T{
+-8 8-minimal 9 9-minimal
+-T}@T{
+-docker.io/library/almalinux:8 docker.io/library/almalinux:9
+-docker.io/library/almalinux:9-minimal
+-T}
+-T{
+ AlmaLinux (UBI)
+ T}@T{
+ 8
+ T}@T{
+-docker.io/almalinux/8-base docker.io/almalinux/8-init
++quay.io/almalinux/8-base:8 quay.io/almalinux/8-init:8
+ T}
+ T{
+-Alpine Linux
++AlmaLinux
+ T}@T{
+-3.14 3.15
++8 8-minimal 9 9-minimal
+ T}@T{
+-docker.io/library/alpine:latest
++quay.io/almalinux/almalinux:8 quay.io/almalinux/almalinux:9
++quay.io/almalinux/almalinux:9-minimal
+ T}
+ T{
+-AmazonLinux
++Alpine Linux
+ T}@T{
+-2
++3.15 3.16
+ T}@T{
+-docker.io/library/amazonlinux:2.0.20211005.0
++docker.io/library/alpine:3.15 docker.io/library/alpine:3.16
++docker.io/library/alpine:latest
+ T}
+ T{
+ AmazonLinux
+ T}@T{
+-2022
++1 2 2022
+ T}@T{
+-public.ecr.aws/amazonlinux/amazonlinux:2022
++public.ecr.aws/amazonlinux/amazonlinux:1
++public.ecr.aws/amazonlinux/amazonlinux:2
++public.ecr.aws/amazonlinux/amazonlinux:2022.0.20220531.0
+ T}
+ T{
+ Archlinux
+@@ -111,10 +107,11 @@ T}@T{
+ docker.io/library/archlinux:latest
+ T}
+ T{
+-ClearLinux
++CentOS Stream
+ T}@T{
++8 9
+ T}@T{
+-docker.io/library/clearlinux:latest docker.io/library/clearlinux:base
++quay.io/centos/centos:stream8 quay.io/centos/centos:stream9
+ T}
+ T{
+ CentOS
+@@ -124,26 +121,10 @@ T}@T{
+ quay.io/centos/centos:7
+ T}
+ T{
+-CentOS Stream
+-T}@T{
+-8 9
+-T}@T{
+-quay.io/centos/centos:stream8 quay.io/centos/centos:stream9
+-T}
+-T{
+-RedHat (UBI)
++ClearLinux
+ T}@T{
+-7 8 9
+ T}@T{
+-registry.access.redhat.com/ubi7/ubi
+-registry.access.redhat.com/ubi7/ubi-init
+-registry.access.redhat.com/ubi7/ubi-minimal
+-registry.access.redhat.com/ubi8/ubi
+-registry.access.redhat.com/ubi8/ubi-init
+-registry.access.redhat.com/ubi8/ubi-minimal
+-registry.access.redhat.com/ubi9/ubi
+-registry.access.redhat.com/ubi9/ubi-init
+-registry.access.redhat.com/ubi9/ubi-minimal
++docker.io/library/clearlinux:latest docker.io/library/clearlinux:base
+ T}
+ T{
+ Debian
+@@ -171,21 +152,27 @@ T}@T{
+ docker.io/library/debian:unstable
+ T}
+ T{
+-Neurodebian
++Fedora
+ T}@T{
+-nd100
++35 36 37 Rawhide
+ T}@T{
+-docker.io/library/neurodebian:nd100
++registry.fedoraproject.org/fedora-toolbox:35 quay.io/fedora/fedora:35
++quay.io/fedora/fedora:36 registry.fedoraproject.org/fedora:37
++quay.io/fedora/fedora:rawhide
+ T}
+ T{
+-Fedora
++Gentoo Linux
+ T}@T{
+-34 35 36 37 Rawhide
++rolling
+ T}@T{
+-registry.fedoraproject.org/fedora-toolbox:34 docker.io/library/fedora:34
+-registry.fedoraproject.org/fedora-toolbox:35 docker.io/library/fedora:35
+-docker.io/library/fedora:36 registry.fedoraproject.org/fedora:37
+-docker.io/library/fedora:rawhide
++You will have to Build your own to have a complete Gentoo docker image
++T}
++T{
++Kali Linux
++T}@T{
++rolling
++T}@T{
++docker.io/kalilinux/kali-rolling:latest
+ T}
+ T{
+ Mageia
+@@ -195,6 +182,13 @@ T}@T{
+ docker.io/library/mageia
+ T}
+ T{
++Neurodebian
++T}@T{
++nd100
++T}@T{
++docker.io/library/neurodebian:nd100
++T}
++T{
+ Opensuse
+ T}@T{
+ Leap
+@@ -212,17 +206,39 @@ T}
+ T{
+ Oracle Linux
+ T}@T{
+-7 8
++6 6-slim 7 7-slim 8 8-slim 9 9-slim
+ T}@T{
++container-registry.oracle.com/os/oraclelinux:6
++container-registry.oracle.com/os/oraclelinux:6-slim
+ container-registry.oracle.com/os/oraclelinux:7
++container-registry.oracle.com/os/oraclelinux:7-slim
+ container-registry.oracle.com/os/oraclelinux:8
++container-registry.oracle.com/os/oraclelinux:8-slim
++container-registry.oracle.com/os/oraclelinux:9
++container-registry.oracle.com/os/oraclelinux:9-slim
++T}
++T{
++RedHat (UBI)
++T}@T{
++7 8 9
++T}@T{
++registry.access.redhat.com/ubi7/ubi
++registry.access.redhat.com/ubi7/ubi-init
++registry.access.redhat.com/ubi7/ubi-minimal
++registry.access.redhat.com/ubi8/ubi
++registry.access.redhat.com/ubi8/ubi-init
++registry.access.redhat.com/ubi8/ubi-minimal
++registry.access.redhat.com/ubi9/ubi
++registry.access.redhat.com/ubi9/ubi-init
++registry.access.redhat.com/ubi9/ubi-minimal
+ T}
+ T{
+ Rocky Linux
+ T}@T{
+-8
++8 8-minimal
+ T}@T{
+-docker.io/rockylinux/rockylinux:8
++quay.io/rockylinux/rockylinux:8 quay.io/rockylinux/rockylinux:8-minimal
++quay.io/rockylinux/rockylinux:latest
+ T}
+ T{
+ Scientific Linux
+@@ -241,18 +257,11 @@ T}
+ T{
+ Ubuntu
+ T}@T{
+-14.04 16.04 18.04 20.04 21.10 22.04
++14.04 16.04 18.04 20.04 22.04 22.10
+ T}@T{
+ docker.io/library/ubuntu:14.04 docker.io/library/ubuntu:16.04
+ docker.io/library/ubuntu:18.04 docker.io/library/ubuntu:20.04
+-docker.io/library/ubuntu:21.10 docker.io/library/ubuntu:22.04
+-T}
+-T{
+-Kali Linux
+-T}@T{
+-rolling
+-T}@T{
+-docker.io/kalilinux/kali-rolling:latest
++docker.io/library/ubuntu:22.04 docker.io/library/ubuntu:22.10
+ T}
+ T{
+ Void Linux
+@@ -261,13 +270,6 @@ T}@T{
+ ghcr.io/void-linux/void-linux:latest-full-x86_64
+ ghcr.io/void-linux/void-linux:latest-full-x86_64-musl
+ T}
+-T{
+-Gentoo Linux
+-T}@T{
+-rolling
+-T}@T{
+-You will have to Build your own to have a complete Gentoo docker image
+-T}
+ .TE
+ .PP
+ Note however that if you use a non-toolbox preconfigured image (e.g.
+@@ -284,7 +286,7 @@ plans to bring support to it.
+ If you are looking for unprivlaged NixOS environments, we suggest you
+ look into
+ nix-shell (https://nixos.org/manual/nix/unstable/command-ref/nix-shell.html).
+-.SS New Distro support
++.SS NEW DISTRO SUPPORT
+ .PP
+ If your distro of choice is not on the list, open an issue requesting
+ support for it, we can work together to check if it is possible to add
+@@ -292,7 +294,7 @@ support for it.
+ .PP
+ Or just try using it anyway, if it works, open an issue and it will be
+ added to the list!
+-.SS Older distributions
++.SS OLDER DISTRIBUTIONS
+ .PP
+ For older distributions like CentOS 5, CentOS 6, Debian 6, Ubuntu 12.04,
+ compatibility is not assured.
+@@ -321,17 +323,63 @@ dependencies are met.
+ . ftr VB CB
+ . ftr VBI CBI
+ .\}
+-.TH "DISTROBOX-CREATE" "1" "Jun 2022" "Distrobox" "User Manual"
++.TH "DISTROBOX-CREATE" "1" "Jul 2022" "Distrobox" "User Manual"
+ .hy
+-.SH Create the distrobox
++.SH NAME
++.IP
++.nf
++\f[C]
++distrobox create
++distrobox-create
++\f[R]
++.fi
++.SH DESCRIPTION
+ .PP
+ distrobox-create takes care of creating the container with input name
+ and image.
+ The created container will be tightly integrated with the host, allowing
+ sharing of the HOME directory of the user, external storage, external
+ usb devices and graphical apps (X11/Wayland), and audio.
++.SH SYNOPSIS
+ .PP
+-Usage:
++\f[B]distrobox create\f[R]
++.IP
++.nf
++\f[C]
++--image/-i: image to use for the container default: registry.fedoraproject.org/fedora-toolbox:36
++--name/-n: name for the distrobox default: my-distrobox
++--pull/-p: pull latest image unconditionally without asking
++--yes/-Y: non-interactive, pull images without asking
++--root/-r: launch podman/docker with root privileges. Note that if you need root this is the preferred
++ way over \[dq]sudo distrobox\[dq] (note: if using a program other than \[aq]sudo\[aq] for root privileges is necessary,
++ specify it through the DBX_SUDO_PROGRAM env variable, or \[aq]distrobox_sudo_program\[aq] config variable)
++--clone/-c: name of the distrobox container to use as base for a new container
++ this will be useful to either rename an existing distrobox or have multiple copies
++ of the same environment.
++--home/-H select a custom HOME directory for the container. Useful to avoid host\[aq]s home littering with temp files.
++--volume additional volumes to add to the container
++--additional-flags/-a: additional flags to pass to the container manager command
++--init-hooks additional commands to execute during container initialization
++--pre-init-hooks additional commands to execute prior to container initialization
++--init/-I use init system (like systemd) inside the container.
++ this will make host\[aq]s processes not visible from within the container.
++--help/-h: show this message
++--dry-run/-d: only print the container manager command generated
++--verbose/-v: show more verbosity
++--version/-V: show version
++\f[R]
++.fi
++.SH COMPATIBILITY
++.IP
++.nf
++\f[C]
++for a list of compatible images and container managers, please consult the man page:
++ man distrobox
++ man distrobox-compatibility
++or consult the documentation page on: https://github.com/89luca89/distrobox/blob/main/docs/compatibility.md#containers-distros
++\f[R]
++.fi
++.SH EXAMPLES
+ .IP
+ .nf
+ \f[C]
+@@ -365,44 +413,7 @@ DBX_CONTAINER_IMAGE
+ DBX_CONTAINER_MANAGER
+ DBX_CONTAINER_NAME
+ DBX_NON_INTERACTIVE
+-\f[R]
+-.fi
+-.PP
+-Options:
+-.IP
+-.nf
+-\f[C]
+---image/-i: image to use for the container default: registry.fedoraproject.org/fedora-toolbox:36
+---name/-n: name for the distrobox default: my-distrobox
+---pull/-p: pull latest image unconditionally without asking
+---yes/-Y: non-interactive, pull images without asking
+---root/-r: launch podman/docker with root privileges. Note that if you need root this is the preferred
+- way over \[dq]sudo distrobox\[dq]
+---clone/-c: name of the distrobox container to use as base for a new container
+- this will be useful to either rename an existing distrobox or have multiple copies
+- of the same environment.
+---home/-H select a custom HOME directory for the container. Useful to avoid host\[aq]s home littering with temp files.
+---volume additional volumes to add to the container
+---additional-flags/-a: additional flags to pass to the container manager command
+---init-hooks additional commands to execute during container initialization
+---pre-init-hooks additional commands to execute prior to container initialization
+---init/-I use init system (like systemd) inside the container.
+- this will make host\[aq]s processes not visible from within the container.
+---help/-h: show this message
+---dry-run/-d: only print the container manager command generated
+---verbose/-v: show more verbosity
+---version/-V: show version
+-\f[R]
+-.fi
+-.PP
+-Compatibility:
+-.IP
+-.nf
+-\f[C]
+-for a list of compatible images and container managers, please consult the man page:
+- man distrobox
+- man distrobox-compatibility
+-or consult the documentation page on: https://github.com/89luca89/distrobox/blob/main/docs/compatibility.md#containers-distros
++DBX_SUDO_PROGRAM
+ \f[R]
+ .fi
+ .PP
+@@ -504,9 +515,17 @@ This is needed because \f[V]/sbin/init\f
+ . ftr VB CB
+ . ftr VBI CBI
+ .\}
+-.TH "DISTROBOX-ENTER" "1" "Jun 2022" "Distrobox" "User Manual"
++.TH "DISTROBOX-ENTER" "1" "Jul 2022" "Distrobox" "User Manual"
+ .hy
+-.SH Enter the distrobox
++.SH NAME
++.IP
++.nf
++\f[C]
++distrobox enter
++distrobox-enter
++\f[R]
++.fi
++.SH DESCRIPTION
+ .PP
+ distrobox-enter takes care of entering the container with the name
+ specified.
+@@ -514,8 +533,27 @@ Default command executed is your SHELL,
+ shells or entire commands to execute.
+ If using it inside a script, an application, or a service, you can
+ specify the \[en]headless mode to disable tty and interactivity.
++.SH SYNOPSIS
+ .PP
+-Usage:
++\f[B]distrobox enter\f[R]
++.IP
++.nf
++\f[C]
++--name/-n: name for the distrobox default: my-distrobox
++--/-e: end arguments execute the rest as command to execute at login default: bash -l
++--no-tty/-T: do not instantiate a tty
++--no-workdir/-nw: always start the container from container\[aq]s home directory
++--additional-flags/-a: additional flags to pass to the container manager command
++--help/-h: show this message
++--root/-r: launch podman/docker with root privileges. Note that if you need root this is the preferred
++ way over \[dq]sudo distrobox\[dq] (note: if using a program other than \[aq]sudo\[aq] for root privileges is necessary,
++ specify it through the DBX_SUDO_PROGRAM env variable, or \[aq]distrobox_sudo_program\[aq] config variable)
++--dry-run/-d: only print the container manager command generated
++--verbose/-v: show more verbosity
++--version/-V: show version
++\f[R]
++.fi
++.SH EXAMPLES
+ .IP
+ .nf
+ \f[C]
+@@ -543,24 +581,7 @@ Supported environment variables:
+ DBX_CONTAINER_NAME
+ DBX_CONTAINER_MANAGER
+ DBX_SKIP_WORKDIR
+-\f[R]
+-.fi
+-.PP
+-Options:
+-.IP
+-.nf
+-\f[C]
+---name/-n: name for the distrobox default: my-distrobox
+---/-e: end arguments execute the rest as command to execute at login default: bash -l
+---no-tty/-T: do not instantiate a tty
+---no-workdir/-nw: always start the container from container\[aq]s home directory
+---additional-flags/-a: additional flags to pass to the container manager command
+---help/-h: show this message
+---root/-r: launch podman/docker with root privileges. Note that if you need root this is the preferred
+- way over \[dq]sudo distrobox\[dq]
+---dry-run/-d: only print the container manager command generated
+---verbose/-v: show more verbosity
+---version/-V: show version
++DBX_SUDO_PROGRAM
+ \f[R]
+ .fi
+ .PP
+@@ -587,6 +608,23 @@ my_var=test distrobox enter -n dev-arch
+ my_var=test
+ \f[R]
+ .fi
++.PP
++If you\[cq]d like to enter a rootful container having distrobox use a
++program other than `sudo' to run podman/docker as root, such as `pkexec'
++or `doas', you may specify it with the \f[V]DBX_SUDO_PROGRAM\f[R]
++environment variable.
++For example, to use `doas' to enter a rootful container:
++.IP
++.nf
++\f[C]
++DBX_SUDO_PROGRAM=\[dq]doas\[dq] distrobox enter -n container --root
++\f[R]
++.fi
++.PP
++Additionally, in one of the config file paths that distrobox supports,
++such as \f[V]\[ti]/.distroboxrc\f[R], you can also append the line
++\f[V]distrobox_sudo_program=\[dq]doas\[dq]\f[R] (for example) to always
++run distrobox commands involving rootful containers using `doas'.
+ .\
+ .\"
+ .\" Define V font for inline verbatim, using C font in formats
+@@ -603,84 +641,108 @@ my_var=test
+ . ftr VB CB
+ . ftr VBI CBI
+ .\}
+-.TH "DISTROBOX-EXPORT" "1" "Jun 2022" "Distrobox" "User Manual"
++.TH "DISTROBOX-EPHEMERAL" "1" "Jul 2022" "Distrobox" "User Manual"
+ .hy
+-.SH Application and service exporting
+-.PP
+-distrobox-export takes care of exporting an app a binary or a service
+-from the container to the host.
+-.PP
+-The exported app will be easily available in your normal launcher and it
+-will automatically be launched from the container it is exported from.
+-.PP
+-The exported services will be available in the host\[cq]s user\[cq]s
+-systemd session, so
++.SH NAME
+ .IP
+ .nf
+ \f[C]
+-systemctl --user status exported_service_name
++distrobox ephemeral
++distrobox-ephemeral
+ \f[R]
+ .fi
++.SH DESCRIPTION
+ .PP
+-will show the status of the service exported.
+-.PP
+-The exported binaries will be exported in the \[lq]\[en]export-path\[rq]
+-of choice as a wrapper script that acts naturally both on the host and
+-in the container.
+-Note that \[lq]\[en]export-path\[rq] is NOT OPTIONAL, you have to
+-explicitly set it.
++distrobox-ephemeral creates a temporary distrobox that is automatically
++destroyed when the command is terminated.
++.SH SYNOPSIS
+ .PP
+-You can specify additional flags to add to the command, for example if
+-you want to export an electron app, you could add the
+-\[lq]\[en]foreground\[rq] flag to the command:
++\f[B]distrobox ephemeral\f[R]
+ .IP
+ .nf
+ \f[C]
+-distrobox-export --app atom --extra-flags \[dq]--foreground\[dq]
+-distrobox-export --bin /usr/bin/vim --export-path \[ti]/.local/bin --extra-flags \[dq]-p\[dq]
+-distrobox-export --service syncthing --extra-flags \[dq]-allow-newer-config\[dq]
++--root/-r: launch podman/docker with root privileges. Note that if you need root this is the preferred
++ way over \[dq]sudo distrobox\[dq] (note: if using a program other than \[aq]sudo\[aq] for root privileges is necessary,
++ specify it through the DBX_SUDO_PROGRAM env variable, or \[aq]distrobox_sudo_program\[aq] config variable)
++--verbose/-v: show more verbosity
++--help/-h: show this message
++--/-e: end arguments execute the rest as command to execute at login default: bash -l
++--version/-V: show version
++\f[R]
++.fi
++.SH EXAMPLES
++.IP
++.nf
++\f[C]
++distrobox-ephemeral --image alpine:latest -- cat /etc/os-release
++distrobox-ephemeral --root --verbose --image alpine:latest --volume /opt:/opt
+ \f[R]
+ .fi
+ .PP
+-This works for services, binaries, and apps.
+-Extra flags are only used then the exported app, binary, or service is
+-used from the host, using them inside the container will not include
+-them.
++You can also use flags from \f[B]distrobox-create\f[R] to customize the
++ephemeral container to run.
+ .PP
+-The option \[lq]\[en]delete\[rq] will un-export an app, binary, or
+-service.
++Refer to
+ .IP
+ .nf
+ \f[C]
+-distrobox-export --app atom --delete
+-distrobox-export --bin /usr/bin/vim --export-path \[ti]/.local/bin --delete
+-distrobox-export --service syncthing --delete
+-distrobox-export --service nginx --delete
++man distrobox-create
+ \f[R]
+ .fi
+ .PP
+-The option \[lq]\[en]sudo\[rq] will launch the exported item as root
+-inside the distrobox.
+-.PP
+-Note you can use \[en]app OR \[en]bin OR \[en]service but not together.
++or
+ .IP
+ .nf
+ \f[C]
+-distrobox-export --service nginx --sudo
++distrobox-create --help
+ \f[R]
+ .fi
+ .PP
+-Usage:
++Supported environment variables:
+ .IP
+ .nf
+ \f[C]
+-distrobox-export --app mpv [--extra-flags \[dq]flags\[dq]] [--delete] [--sudo]
+-distrobox-export --service syncthing [--extra-flags \[dq]flags\[dq]] [--delete] [--sudo]
+-distrobox-export --bin /path/to/bin --export-path \[ti]/.local/bin [--extra-flags \[dq]flags\[dq]] [--delete] [--sudo]
++distrobox-ephemeral calls distrobox-create, SEE ALSO distrobox-create(1) for
++a list of supported environment variables to use.
++\f[R]
++.fi
++.\
++.\"
++.\" Define V font for inline verbatim, using C font in formats
++.\" that render this, and otherwise B font.
++.ie "\f[CB]x\f[]"x" \{\
++. ftr V B
++. ftr VI BI
++. ftr VB B
++. ftr VBI BI
++.\}
++.el \{\
++. ftr V CR
++. ftr VI CI
++. ftr VB CB
++. ftr VBI CBI
++.\}
++.TH "DISTROBOX-EXPORT" "1" "Jul 2022" "Distrobox" "User Manual"
++.hy
++.SH NAME
++.IP
++.nf
++\f[C]
++distrobox-export
+ \f[R]
+ .fi
++.SH DESCRIPTION
+ .PP
+-Options:
++\f[B]Application and service exporting\f[R]
++.PP
++distrobox-export takes care of exporting an app a binary or a service
++from the container to the host.
++.PP
++The exported app will be easily available in your normal launcher and it
++will automatically be launched from the container it is exported from.
++.SH SYNOPSIS
++.PP
++\f[B]distrobox-export\f[R]
+ .IP
+ .nf
+ \f[C]
+@@ -692,7 +754,7 @@ Options:
+ Defaults to (on \[rs]$container_name)
+ --export-path/-ep: path where to export the binary
+ --extra-flags/-ef: extra flags to add to the command
+---sudo/-S: specify if the exported item should be ran as sudo
++--sudo/-S: specify if the exported item should be run as sudo
+ --help/-h: show this message
+ --verbose/-v: show more verbosity
+ --version/-V: show version
+@@ -703,8 +765,17 @@ You may want to install graphical applic
+ distrobox.
+ Using \f[V]distrobox-export\f[R] from \f[B]inside\f[R] the container
+ will let you use them from the host itself.
++.SH EXAMPLES
++.IP
++.nf
++\f[C]
++distrobox-export --app mpv [--extra-flags \[dq]flags\[dq]] [--delete] [--sudo]
++distrobox-export --service syncthing [--extra-flags \[dq]flags\[dq]] [--delete] [--sudo]
++distrobox-export --bin /path/to/bin --export-path \[ti]/.local/bin [--extra-flags \[dq]flags\[dq]] [--delete] [--sudo]
++\f[R]
++.fi
+ .PP
+-App export example:
++\f[B]App export example\f[R]
+ .IP
+ .nf
+ \f[C]
+@@ -718,7 +789,7 @@ with needed icons, add the prefix
+ commands to run, and save them in your home to be used directly from the
+ host as a normal app.
+ .PP
+-Service export example:
++\f[B]Service export example\f[R]
+ .IP
+ .nf
+ \f[C]
+@@ -732,7 +803,18 @@ container to a \f[V]systemctl --user\f[R
+ \f[V]ExecStart ExecStartPre ExecStartPost ExecReload ExecStop ExecStopPost\f[R]
+ with the \f[V]distrobox-enter\f[R] command prefix.
+ .PP
+-Binary export example:
++The exported services will be available in the host\[cq]s user\[cq]s
++systemd session, so
++.IP
++.nf
++\f[C]
++systemctl --user status exported_service_name
++\f[R]
++.fi
++.PP
++will show the status of the service exported.
++.PP
++\f[B]Binary export example\f[R]
+ .IP
+ .nf
+ \f[C]
+@@ -747,6 +829,129 @@ from the host, the desired binary.
+ This can be handy with the use of \f[V]direnv\f[R] to have different
+ versions of the same binary based on your \f[V]env\f[R] or project.
+ .PP
++The exported binaries will be exported in the \[lq]\[en]export-path\[rq]
++of choice as a wrapper script that acts naturally both on the host and
++in the container.
++Note that \[lq]\[en]export-path\[rq] is NOT OPTIONAL, you have to
++explicitly set it.
++.PP
++\f[B]Additional flags\f[R]
++.PP
++You can specify additional flags to add to the command, for example if
++you want to export an electron app, you could add the
++\[lq]\[en]foreground\[rq] flag to the command:
++.IP
++.nf
++\f[C]
++distrobox-export --app atom --extra-flags \[dq]--foreground\[dq]
++distrobox-export --bin /usr/bin/vim --export-path \[ti]/.local/bin --extra-flags \[dq]-p\[dq]
++distrobox-export --service syncthing --extra-flags \[dq]-allow-newer-config\[dq]
++\f[R]
++.fi
++.PP
++This works for services, binaries, and apps.
++Extra flags are only used then the exported app, binary, or service is
++used from the host, using them inside the container will not include
++them.
++.PP
++\f[B]Unexport\f[R]
++.PP
++The option \[lq]\[en]delete\[rq] will un-export an app, binary, or
++service.
++.IP
++.nf
++\f[C]
++distrobox-export --app atom --delete
++distrobox-export --bin /usr/bin/vim --export-path \[ti]/.local/bin --delete
++distrobox-export --service syncthing --delete
++distrobox-export --service nginx --delete
++\f[R]
++.fi
++.PP
++\f[B]Run as root in the container\f[R]
++.PP
++The option \[lq]\[en]sudo\[rq] will launch the exported item as root
++inside the distrobox.
++.PP
++\f[B]Exporting apps from rootful containers\f[R]
++.PP
++It is worth noting that, when exporting any item - which includes
++graphical apps - from rootful containers (created with
++\f[V]distrobox create --root\f[R]), root privileges will be needed every
++time the item is launched (in order to enter the rootful container),
++which, by default, is done using \f[V]sudo\f[R] (see docs for
++\f[V]distrobox-enter\f[R] on how to customize that).
++However, for graphical apps in specific, since they launch without a
++terminal, the usage of \f[V]sudo\f[R] might, at first, make it
++impossible to launch them.
++.PP
++To fix this without needing to customize the sudo program, one can
++define a global \f[V]SUDO_ASKPASS\f[R] environment variable on their
++machine, which is a PATH to an executable that is run by \f[V]sudo\f[R]
++when no terminal is available (or when it is given the
++\f[V]--askpass\f[R] or \f[V]-A\f[R] option), and the output of that
++executable to stdout is used as the password input.
++The executable is called as many times is needed for authentication as
++root to succeed (unless a limit of amount of attempts is reached).
++.PP
++To do this, pick a program to ask the user for graphical password input.
++In this example, we will use \f[V]zenity --password\f[R], which should
++be present for GNOME users (and can also be installed in other DEs) -
++there are other options, such as
++\f[V]kdialog --password \[dq]Message\[dq]\f[R] for KDE users.
++.PP
++Write the call to the desired program to a script file, for example to
++\f[V]/usr/bin/my-password-prompt\f[R] (sample contents below):
++.IP
++.nf
++\f[C]
++#!/bin/sh
++zenity --password \[dq]Authentication as root is required\[dq]
++\f[R]
++.fi
++.PP
++(You may save the script under, for example, \f[V]\[ti]/.local/bin\f[R]
++if you want to keep it fully local to your user.)
++.PP
++Afterwards, make it executable (e.g.\ run
++\f[V]sudo chmod +x /usr/bin/my-password-prompt\f[R]).
++Then, make sure to set \f[V]SUDO_ASKPASS\f[R] to
++\f[V]\[dq]/usr/bin/my-password-prompt\[dq]\f[R] (replace with your
++script\[cq]s path) in a global profile file, so that it is picked up by
++sudo when running graphical apps (and, therefore, sudo will run the
++script you created to ask for a password).
++This is done with the shell line
++\f[V]export SUDO_ASKPASS=\[dq]/path/to/script/goes/here\[dq]\f[R].
++You can do this for your user only by running the command below (replace
++the script path as needed):
++.IP
++.nf
++\f[C]
++echo \[aq]export SUDO_ASKPASS=\[dq]/usr/bin/my-password-prompt\[dq]\[aq] >> \[ti]/.profile
++\f[R]
++.fi
++.PP
++Which appends the appropriate line to the end of your
++\f[V]\[ti]/.profile\f[R] file, thus making the change local to your
++user.
++Alternatively, to set it system-wide (for all users), you may create a
++file in \f[V]/etc/profile.d/\f[R] (or equivalent for your system) with
++that line.
++.PP
++Now just log out and log back in, and graphical apps exported from
++rootful containers should now be properly asking for root\[cq]s password
++before launching (instead of not opening, if that was the case before).
++.PP
++\f[B]Notes\f[R]
++.PP
++Note you can use \[en]app OR \[en]bin OR \[en]service but not together.
++.IP
++.nf
++\f[C]
++distrobox-export --service nginx --sudo
++\f[R]
++.fi
++.PP
+ [IMAGE: app-export (https://user-images.githubusercontent.com/598882/144294795-c7785620-bf68-4d1b-b251-1e1f0a32a08d.png)]
+ .PP
+ [IMAGE: service-export (https://user-images.githubusercontent.com/598882/144294314-29a8921f-4511-453d-bf8e-d0d1e336db91.png)]
+@@ -772,9 +977,16 @@ option to provide a series of flags, for
+ . ftr VB CB
+ . ftr VBI CBI
+ .\}
+-.TH "DISTROBOX-HOST-EXEC" "1" "Jun 2022" "Distrobox" "User Manual"
++.TH "DISTROBOX-HOST-EXEC" "1" "Jul 2022" "Distrobox" "User Manual"
+ .hy
+-.SH Host Command Execution
++.SH NAME
++.IP
++.nf
++\f[C]
++distrobox-host-exec
++\f[R]
++.fi
++.SH DESCRIPTION
+ .PP
+ distrobox-host-exec lets one execute command on the host, while inside
+ of a container.
+@@ -782,8 +994,8 @@ of a container.
+ If \[lq]flatpak-spawn\[rq] is installed in the container, this is what
+ is used, and it is the most powerful and recommended method.
+ If, instead, \[lq]flatpak-spawn\[rq] can\[cq]t be found, it still try to
+-get the job done with \[lq]chroot\[rq] (but beware that not all
+-commands/programs will work well in this mode).
++get the job done with \[lq]host-spawn\[rq], an alternative project.
++.SH SYNOPSIS
+ .PP
+ Just pass to \[lq]distrobox-host-exec\[rq] any command and all its
+ arguments, if any.
+@@ -791,29 +1003,35 @@ arguments, if any.
+ .nf
+ \f[C]
+ distrobox-host-exec [command [arguments]]
++
++--help/-h: show this message
++--verbose/-v: show more verbosity
++--version/-V: show version
+ \f[R]
+ .fi
+ .PP
+-If no command is provided, it will execute \[lq]/bin/sh\[rq].
++If no command is provided, it will execute \[lq]$SHELL\[rq].
+ .PP
+-Example usage:
++Alternatively, use symlinks to make \f[V]distrobox-host-exec\f[R]
++execute as that command:
+ .IP
+ .nf
+ \f[C]
+-distrobox-host-exec ls
+-distrobox-host-exec bash -l
+-distrobox-host-exec flatpak run org.mozilla.firefox
+-distrobox-host-exec podman ps -a
++\[ti]$: ln -s /usr/bin/distrobox-host-exec /usr/local/bin/podman
++\[ti]$: ls -l /usr/local/bin/podman
++lrwxrwxrwx. 1 root root 51 Jul 11 19:26 /usr/local/bin/podman -> /usr/bin/distrobox-host-exec
++\[ti]$: podman version
++\&...this is executed on host...
+ \f[R]
+ .fi
+-.PP
+-Options:
++.SH EXAMPLES
+ .IP
+ .nf
+ \f[C]
+---help/-h: show this message
+---verbose/-v: show more verbosity
+---version/-V: show version
++distrobox-host-exec ls
++distrobox-host-exec bash -l
++distrobox-host-exec flatpak run org.mozilla.firefox
++distrobox-host-exec podman ps -a
+ \f[R]
+ .fi
+ .\
+@@ -832,30 +1050,32 @@ Options:
+ . ftr VB CB
+ . ftr VBI CBI
+ .\}
+-.TH "DISTROBOX-INIT" "1" "Jun 2022" "Distrobox" "User Manual"
++.TH "DISTROBOX-INIT" "1" "Jul 2022" "Distrobox" "User Manual"
+ .hy
+-.SH Init the distrobox (not to be launched manually)
++.SH NAME
++.IP
++.nf
++\f[C]
++distrobox-init
++\f[R]
++.fi
++.SH DESCRIPTION
++.PP
++\f[B]Init the distrobox (not to be launched manually)\f[R]
+ .PP
+ distrobox-init is the entrypoint of a created distrobox.
+ Note that this HAS to run from inside a distrobox, will not work if you
+ run it from your host.
+ .PP
+-This is not intended to be used manually, but instead used by
+-distrobox-enter to set up the container\[cq]s entrypoint.
++\f[B]This is not intended to be used manually, but instead used by
++distrobox-create to set up the container\[cq]s entrypoint.\f[R]
+ .PP
+ distrobox-init will take care of installing missing dependencies (eg.
+ sudo), set up the user and groups, mount directories from the host to
+ ensure the tight integration.
++.SH SYNOPSIS
+ .PP
+-Usage:
+-.IP
+-.nf
+-\f[C]
+-distrobox-init --name test-user --user 1000 --group 1000 --home /home/test-user
+-\f[R]
+-.fi
+-.PP
+-Options:
++\f[B]distrobox-init\f[R]
+ .IP
+ .nf
+ \f[C]
+@@ -871,12 +1091,13 @@ Options:
+ --: end arguments execute the rest as command to execute during init
+ \f[R]
+ .fi
+-.PP
+-This is used as entrypoint for the created container, it will take care
+-of creating the users, setting up sudo, mountpoints, and exports.
+-.PP
+-\f[B]You should not have to launch this manually\f[R], this is used by
+-\f[V]distrobox create\f[R] to set up container\[cq]s entrypoint.
++.SH EXAMPLES
++.IP
++.nf
++\f[C]
++distrobox-init --name test-user --user 1000 --group 1000 --home /home/test-user
++\f[R]
++.fi
+ .\
+ .\"
+ .\" Define V font for inline verbatim, using C font in formats
+@@ -893,48 +1114,59 @@ of creating the users, setting up sudo,
+ . ftr VB CB
+ . ftr VBI CBI
+ .\}
+-.TH "DISTROBOX-LIST" "1" "Jun 2022" "Distrobox" "User Manual"
++.TH "DISTROBOX-LIST" "1" "Jul 2022" "Distrobox" "User Manual"
+ .hy
+-.SH List containers
++.SH NAME
++.IP
++.nf
++\f[C]
++distrobox list
++distrobox-list
++\f[R]
++.fi
++.SH DESCRIPTION
+ .PP
+ distrobox-list lists available distroboxes.
+ It detects them and lists them separately from the rest of normal podman
+ or docker containers.
++.SH SYNOPSIS
+ .PP
+-Usage:
++\f[B]distrobox list\f[R]
+ .IP
+ .nf
+ \f[C]
+-distrobox-list
++--help/-h: show this message
++--no-color: disable color formatting
++--root/-r: launch podman/docker with root privileges. Note that if you need root this is the preferred
++ way over \[dq]sudo distrobox\[dq] (note: if using a program other than \[aq]sudo\[aq] for root privileges is necessary,
++ specify it through the DBX_SUDO_PROGRAM env variable, or \[aq]distrobox_sudo_program\[aq] config variable)
++--size/-s: show also container size
++--verbose/-v: show more verbosity
++--version/-V: show version
+ \f[R]
+ .fi
+-.PP
+-You can also use environment variables to specify container manager
++.SH EXAMPLES
+ .IP
+ .nf
+ \f[C]
+-DBX_CONTAINER_MANAGER=\[dq]docker\[dq] distrobox-list
++distrobox-list
+ \f[R]
+ .fi
+ .PP
+-Supported environment variables:
++You can also use environment variables to specify container manager
+ .IP
+ .nf
+ \f[C]
+-DBX_CONTAINER_MANAGER
++DBX_CONTAINER_MANAGER=\[dq]docker\[dq] distrobox-list
+ \f[R]
+ .fi
+ .PP
+-Options:
++Supported environment variables:
+ .IP
+ .nf
+ \f[C]
+---help/-h: show this message
+---root/-r: launch podman/docker with root privileges. Note that if you need root this is the preferred
+- way over \[dq]sudo distrobox\[dq]
+---size/-s: show also container size
+---verbose/-v: show more verbosity
+---version/-V: show version
++DBX_CONTAINER_MANAGER
++DBX_SUDO_PROGRAM
+ \f[R]
+ .fi
+ .PP
+@@ -955,13 +1187,36 @@ Options:
+ . ftr VB CB
+ . ftr VBI CBI
+ .\}
+-.TH "DISTROBOX-RM" "1" "Jun 2022" "Distrobox" "User Manual"
++.TH "DISTROBOX-RM" "1" "Jul 2022" "Distrobox" "User Manual"
+ .hy
+-.SH Remove containers
++.SH NAME
++.IP
++.nf
++\f[C]
++distrobox rm
++distrobox-rm
++\f[R]
++.fi
++.SH DESCRIPTION
+ .PP
+ distrobox-rm delete one of the available distroboxes.
++.SH SYNOPSIS
+ .PP
+-Usage:
++\f[B]distrobox rm\f[R]
++.IP
++.nf
++\f[C]
++--name/-n: name for the distrobox
++--force/-f: force deletion
++--root/-r: launch podman/docker with root privileges. Note that if you need root this is the preferred
++ way over \[dq]sudo distrobox\[dq] (note: if using a program other than \[aq]sudo\[aq] for root privileges is necessary,
++ specify it through the DBX_SUDO_PROGRAM env variable, or \[aq]distrobox_sudo_program\[aq] config variable)
++--help/-h: show this message
++--verbose/-v: show more verbosity
++--version/-V: show version
++\f[R]
++.fi
++.SH EXAMPLES
+ .IP
+ .nf
+ \f[C]
+@@ -986,20 +1241,7 @@ Supported environment variables:
+ DBX_CONTAINER_MANAGER
+ DBX_CONTAINER_NAME
+ DBX_NON_INTERACTIVE
+-\f[R]
+-.fi
+-.PP
+-Options:
+-.IP
+-.nf
+-\f[C]
+---name/-n: name for the distrobox
+---force/-f: force deletion
+---root/-r: launch podman/docker with root privileges. Note that if you need root this is the preferred
+- way over \[dq]sudo distrobox\[dq]
+---help/-h: show this message
+---verbose/-v: show more verbosity
+---version/-V: show version
++DBX_SUDO_PROGRAM
+ \f[R]
+ .fi
+ .\
+@@ -1018,17 +1260,40 @@ Options:
+ . ftr VB CB
+ . ftr VBI CBI
+ .\}
+-.TH "DISTROBOX-STOP" "1" "Jun 2022" "Distrobox" "User Manual"
++.TH "DISTROBOX-STOP" "1" "Jul 2022" "Distrobox" "User Manual"
+ .hy
+-.SH Stop containers
++.SH NAME
++.IP
++.nf
++\f[C]
++distrobox stop
++distrobox-stop
++\f[R]
++.fi
++.SH DESCRIPTION
+ .PP
+ distrobox-stop stop a running distrobox.
+ .PP
+ Distroboxes are left running, even after exiting out of them, so that
+ subsequent enters are really quick.
+ This is how they can be stopped.
++.SH SYNOPSIS
+ .PP
+-Usage:
++\f[B]distrobox stop\f[R]
++.IP
++.nf
++\f[C]
++--name/-n: name for the distrobox
++--yes/-Y: non-interactive, stop without asking
++--help/-h: show this message
++--root/-r: launch podman/docker with root privileges. Note that if you need root this is the preferred
++ way over \[dq]sudo distrobox\[dq] (note: if using a program other than \[aq]sudo\[aq] for root privileges is necessary,
++ specify it through the DBX_SUDO_PROGRAM env variable, or \[aq]distrobox_sudo_program\[aq] config variable)
++--verbose/-v: show more verbosity
++--version/-V: show version
++\f[R]
++.fi
++.SH EXAMPLES
+ .IP
+ .nf
+ \f[C]
+@@ -1053,19 +1318,6 @@ Supported environment variables:
+ DBX_CONTAINER_MANAGER
+ DBX_CONTAINER_NAME
+ DBX_NON_INTERACTIVE
+-\f[R]
+-.fi
+-.PP
+-Options:
+-.IP
+-.nf
+-\f[C]
+---name/-n: name for the distrobox
+---yes/-Y: non-interactive, stop without asking
+---help/-h: show this message
+---root/-r: launch podman/docker with root privileges. Note that if you need root this is the preferred
+- way over \[dq]sudo distrobox\[dq]
+---verbose/-v: show more verbosity
+---version/-V: show version
++DBX_SUDO_PROGRAM
+ \f[R]
+ .fi
More information about the Neon-commits
mailing list