1DISTROBOX-ASSEMBLE(1) User Manual DISTROBOX-ASSEMBLE(1)
2
3
4
6 distrobox assemble
7 distrobox-assemble
8
10 distrobox-assemble takes care of creating or destroying containers in
11 batches, based on a manifest file. The manifest file by default is
12 ./distrobox.ini, but can be specified using the --file flag.
13
15 distrobox assemble
16
17 --file: path to the distrobox manifest/ini file
18 --name/-n: run against a single entry in the manifest/ini file
19 --replace/-R: replace already existing distroboxes with matching names
20 --dry-run/-d: only print the container manager command generated
21 --verbose/-v: show more verbosity
22 --version/-V: show version
23
25 This is an example manifest file to create two containers:
26
27 [ubuntu]
28 additional_packages="git vim tmux nodejs"
29 image=ubuntu:latest
30 init=false
31 nvidia=false
32 pull=true
33 root=false
34 replace=true
35 start_now=false
36
37 # You can add comments using this #
38 [arch] # also inline comments are supported
39 additional_packages="git vim tmux nodejs"
40 home=/tmp/home
41 image=archlinux:latest
42 init=false
43 start_now=true
44 init_hooks="touch /init-normal"
45 nvidia=true
46 pre_init_hooks="touch /pre-init"
47 pull=true
48 root=false
49 replace=false
50 volume="/tmp/test:/run/a /tmp/test:/run/b"
51
52 Create
53
54 We can bring them up simply using
55
56 distrobox assemble create
57
58 If the file is called distrobox.ini and is in the same directory you’re
59 launching the command, no further arguments are needed. You can speci‐
60 fy a custom path for the file using
61
62 distrobox assemble create --file /my/custom/path.ini
63
64 Replace
65
66 By default, distrobox assemble will replace a container only if re‐
67 place=true is specified in the manifest file.
68
69 In the example of the manifest above, the ubuntu container will always
70 be replaced when running distrobox assemble create, while the arch con‐
71 tainer will not.
72
73 To force a replace for all containers in a manifest use the --replace
74 flag
75
76 distrobox assemble create --replace [--file my/custom/path.ini]
77
78 Remove
79
80 We can bring down all the containers in a manifest file by simply doing
81
82 distrobox assemble rm
83
84 Or using a custom path for the ini file
85
86 distrobox assemble rm --file my/custom/path.ini
87
88 Test
89
90 You can always test what distrobox would do by using the --dry-run
91 flag. This command will only print what commands distrobox would do
92 without actually running them.
93
94 Available options
95
96 This is a list of available options with the corresponding type:
97
98 Flag Name Type
99 ─────────────────────────────
100 additional_flags string
101 additional_packages string
102 home string
103 image string
104 init_hooks string
105 pre_init_hooks string
106 volume string
107 exported_apps string
108 exported_bins string
109 exported_bins_path string
110 entry bool
111 start_now bool
112 init bool
113 nvidia bool
114 pull bool
115 root bool
116 unshare_ipc bool
117 unshare_netns bool
118 unshare_process bool
119 unshare_devsys bool
120 unshare_all bool
121
122 boolean options default to false if not specified. string options can
123 be broken in multiple declarations additively in order to improve read‐
124 ability of the file:
125
126 [ubuntu]
127 image=ubuntu:latest
128 additional_packages="git vim tmux nodejs"
129 additional_packages="htop iftop iotop"
130 additional_packages="zsh fish"
131
132 Be aware that if you’re doing lines with spaces, you need to quote
133 them. If you’re doing multiple hooks (init or pre_init) in multiple
134 lines, end the line with a semicolon (;) in order to execute them one
135 after the other.
136
137 For an explanation of each of the option in the list, take a look at
138 the distrobox create usage, each option corresponds to one of the cre‐
139 ate flags.
140
141 Advanced example
142
143 [tumbleweed_distrobox]
144 image=registry.opensuse.org/opensuse/distrobox
145 pull=true
146 additional_packages="acpi bash-completion findutils iproute iputils sensors inotify-tools unzip"
147 additional_packages="net-tools nmap openssl procps psmisc rsync man tig tmux tree vim htop xclip yt-dlp"
148 additional_packages="git git-credential-libsecret"
149 additional_packages="patterns-devel-base-devel_basis"
150 additional_packages="ShellCheck ansible-lint clang clang-tools codespell ctags desktop-file-utils gcc golang jq python3"
151 additional_packages="python3-bashate python3-flake8 python3-mypy python3-pipx python3-pycodestyle python3-pyflakes python3-pylint python3-python-lsp-server python3-rstcheck python3-yapf python3-yamllint rustup shfmt"
152 additional_packages="kubernetes-client helm"
153 init_hooks=GOPATH="${HOME}/.local/share/system-go" GOBIN=/usr/local/bin go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest;
154 init_hooks=GOPATH="${HOME}/.local/share/system-go" GOBIN=/usr/local/bin go install github.com/onsi/ginkgo/v2/ginkgo@latest;
155 init_hooks=GOPATH="${HOME}/.local/share/system-go" GOBIN=/usr/local/bin go install golang.org/x/tools/cmd/goimports@latest;
156 init_hooks=GOPATH="${HOME}/.local/share/system-go" GOBIN=/usr/local/bin go install golang.org/x/tools/gopls@latest;
157 init_hooks=GOPATH="${HOME}/.local/share/system-go" GOBIN=/usr/local/bin go install sigs.k8s.io/kind@latest;
158 init_hooks=ln -sf /usr/bin/distrobox-host-exec /usr/local/bin/conmon;
159 init_hooks=ln -sf /usr/bin/distrobox-host-exec /usr/local/bin/crun;
160 init_hooks=ln -sf /usr/bin/distrobox-host-exec /usr/local/bin/docker;
161 init_hooks=ln -sf /usr/bin/distrobox-host-exec /usr/local/bin/docker-compose;
162 init_hooks=ln -sf /usr/bin/distrobox-host-exec /usr/local/bin/flatpak;
163 init_hooks=ln -sf /usr/bin/distrobox-host-exec /usr/local/bin/podman;
164 init_hooks=ln -sf /usr/bin/distrobox-host-exec /usr/local/bin/xdg-open;
165 exported_apps="htop"
166 exported_bins="/usr/bin/htop /usr/bin/git"
167 exported_bins_path="~/.local/bin"
168
169
170
171Distrobox Nov 2023 DISTROBOX-ASSEMBLE(1)