DISTROBOX-ASSEMBLE(1) User Manual DISTROBOX-ASSEMBLE(1)

distrobox-assemble - ایجاد یا نابودسازی دسته‌ای کانتینرها بر اساس یک فایل مانیفست

دستور distrobox-assemble وظیفه ایجاد یا نابودسازی دسته‌ای کانتینرها را بر اساس یک فایل مانیفست بر عهده دارد. فایل مانیفست به‌طور پیش‌فرض ./distrobox.ini است، اما می‌توان آن را با استفاده از گزینه --file مشخص کرد.

distrobox assemble

--file:         مسیر یا نشانی اینترنتی (URL) به فایل مانیفست/ini توزیع‌باکس
--name/-n:      اجرا فقط برای یک ورودی خاص در فایل مانیفست/ini
--replace/-R:   جایگزینی distroboxهای از قبل موجود با نام‌های همسان
--dry-run/-d:   صرفاً چاپ دستور تولیدشده برای مدیر کانتینر بدون اجرای آن
--verbose/-v:   نمایش جزئیات بیشتر
--version/-V:   نمایش نسخه

این یک نمونه فایل مانیفست برای ایجاد دو کانتینر است:

[ubuntu]
additional_packages="git vim tmux nodejs"
image=ubuntu:latest
init=false
nvidia=false
pull=true
root=false
replace=true
start_now=false
# You can add comments using this #
[arch] # also inline comments are supported
additional_packages="git vim tmux nodejs"
home=/tmp/home
image=archlinux:latest
init=false
start_now=true
init_hooks="touch /init-normal"
nvidia=true
pre_init_hooks="touch /pre-init"
pull=true
root=false
replace=false
volume="/tmp/test:/run/a /tmp/test:/run/b"

ایجاد (Create)

می‌توانیم آن‌ها را به سادگی با دستور زیر بالا بیاوریم:

distrobox assemble create

اگر نام فایل distrobox.ini باشد و در همان دایرکتوری که دستور را اجرا می‌کنید قرار داشته باشد، به هیچ آرگومان دیگری نیاز نیست. می‌توانید با استفاده از دستور زیر یک مسیر سفارشی برای فایل مشخص کنید:

distrobox assemble create --file /my/custom/path.ini

یا حتی با استفاده از یک نشانی اینترنتی (URL)، یک فایل راه دور را مشخص کنید:

distrobox-assemble create --file https://raw.githubusercontent.com/89luca89/dotfiles/master/distrobox.ini

جایگزینی (Replace)

به‌طور پیش‌فرض، distrobox assemble یک کانتینر را تنها در صورتی جایگزین می‌کند که replace=true در فایل مانیفست مشخص شده باشد.

در مثال مانیفست بالا، کانتینر ubuntu هنگام اجرای distrobox assemble create همواره جایگزین خواهد شد، در حالی که کانتینر arch جایگزین نمی‌شود.

برای اجبار در جایگزینی تمام کانتینرهای موجود در یک مانیفست، از گزینه --replace استفاده کنید:

distrobox assemble create --replace [--file my/custom/path.ini]

حذف (Remove)

می‌توانیم تمام کانتینرهای تعریف‌شده در یک فایل مانیفست را با اجرای ساده دستور زیر متوقف و حذف کنیم:

distrobox assemble rm

یا با استفاده از یک مسیر سفارشی برای فایل ini:

distrobox assemble rm --file my/custom/path.ini

آزمایش (Test)

همواره می‌توانید با استفاده از گزینه --dry-run بررسی کنید که distrobox چه کاری انجام خواهد داد. این دستور تنها دستوراتی را که distrobox اجرا خواهد کرد نمایش می‌دهد، بدون اینکه واقعاً آن‌ها را اجرا کند.

شبیه‌سازی (Clone)

سلب مسئولیت: برای اطمینان از مقداردهی اولیه کامل و ساخته شدن کانتینر پیش از کلون کردن، باید یک بار آن را راه‌اندازی کنید. همچنین کانتینری که کپی می‌شود باید پیش از ادامه فرایند کلون کردن، متوقف شده باشد.

گزینه‌های موجود (Available options)

فهرست گزینه‌های موجود همراه با نوع متناظر آن‌ها به شرح زیر است:

راهنمای انواع داده:

•
bool: مقدار بولی، true یا false
•
string: یک رشته متنی منفرد؛ به عنوان مثال: home="/home/luca-linux/dbox"
•
string_list: چندین رشته متنی؛ به عنوان مثال: additional_packages="htop vim git". توجه داشته باشید که string_list را می‌توان چندین بار تعریف کرد تا مقادیر با یکدیگر ترکیب شوند:
[ubuntu]
image=ubuntu:latest
additional_packages="git vim tmux nodejs"
additional_packages="htop iftop iotop"
additional_packages="zsh fish"
نام گزینه نوع توضیحات
additional_flags string_list گزینه‌ها و فلگ‌های اضافی برای ارسال به مدیر کانتینر
additional_packages string_list بسته‌های اضافی برای نصب درون کانتینر
home string تعیین دایرکتوری خانگی (home) مورد استفاده کانتینر
hostname string تنظیم نام میزبان (hostname) برای کانتینر
image string تعیین ایمیج مورد استفاده کانتینر؛ برای مشاهده فهرست، به مستندات ایمیج‌ها مراجعه کنید
clone string نام کانتینر Distrobox که به‌عنوان پایه برای کانتینر جدید استفاده می‌شود (کانتینر باید متوقف باشد).
include string نام ورودی در مانیفست که باید در تعریف جاری گنجانده شود.
init_hooks string_list دستوراتی که پس از راه‌اندازی بسته‌ها، درون کانتینر اجرا می‌شوند
pre_init_hooks string_list دستوراتی که پیش از راه‌اندازی بسته‌ها، درون کانتینر اجرا می‌شوند
volume string_list فضاهای ذخیره‌سازی (volume) اضافی برای متصل کردن (mount) درون کانتینرها
exported_apps string_list نام برنامه‌ها یا مسیر فایل‌های desktop برای برون‌بری (export)
exported_bins string_list فایل‌های باینری برای برون‌بری (export)
exported_bins_path string مسیر اختیاری برای برون‌بری باینری‌ها (پیش‌فرض: $HOME/.local/bin)
entry bool ایجاد یک مدخل برای کانتینر در فهرست برنامه‌ها (پیش‌فرض: false)
start_now bool راه‌اندازی فوری کانتینر (پیش‌فرض: false)
init bool مشخص می‌کند که آیا این کانتینر دارای سیستم init است یا خیر (پیش‌فرض: false)
nvidia bool مشخص می‌کند که آیا مایل به فعال‌سازی یکپارچه‌سازی با درایورهای NVidia هستید (پیش‌فرض: false)
pull bool مشخص می‌کند که آیا می‌خواهید ایمیج در هر بار اجرا دریافت (pull) شود (پیش‌فرض: false)
root bool مشخص می‌کند که آیا کانتینر با دسترسی ریشه (rootful) باشد یا خیر (پیش‌فرض: false)
unshare_groups bool مشخص می‌کند که آیا گروه‌های کاربری اضافی برای کانتینر تفکیک (unshare) شوند (پیش‌فرض: false)
unshare_ipc bool مشخص می‌کند که آیا فضای نام ipc برای کانتینر تفکیک (unshare) شود (پیش‌فرض: false)
unshare_netns bool مشخص می‌کند که آیا فضای نام شبکه (network namespace) برای کانتینر تفکیک (unshare) شود (پیش‌فرض: false)
unshare_process bool مشخص می‌کند که آیا فضای نام فرایندها (pid namespace) برای کانتینر تفکیک (unshare) شود (پیش‌فرض: false)
unshare_devsys bool مشخص می‌کند که آیا دایرکتوری /dev برای کانتینر تفکیک (unshare) شود (پیش‌فرض: false)
unshare_all bool مشخص می‌کند که آیا تمام گزینه‌های تفکیک (unshare) پیشین برای کانتینر فعال شوند (پیش‌فرض: false)

گزینه include ویژگی‌های یک تعریف را در تعریفی دیگر کپی می‌کند. استفاده از گنجاندن‌های بازگشتی (Recursive) مجاز است. این گزینه روی فایل مانیفست عمل می‌کند و کانتینرهای distrobox حاصل از آن هیچ‌گونه ارتباطی با یکدیگر نخواهند داشت. لطفاً توجه داشته باشید که ویژگی‌های موجود در تعریف گنجاننده‌، ویژگی‌های تعریف گنجانده‌شده را بازنویسی یا پنهان نمی‌کنند، بلکه صرفاً تکرار می‌شوند.

برای توضیحات بیشتر درباره هر یک از گزینه‌های دیگر در این فهرست، به راهنمای دستور distrobox create نگاهی بیندازید؛ هر گزینه با یکی از گزینه‌های دستور create مطابقت دارد.

مثال پیشرفته (Advanced example)

[tumbleweed_distrobox]
image=registry.opensuse.org/opensuse/distrobox
pull=true
additional_packages="acpi bash-completion findutils iproute iputils sensors inotify-tools unzip"
additional_packages="net-tools nmap openssl procps psmisc rsync man tig tmux tree vim htop xclip yt-dlp"
additional_packages="git git-credential-libsecret"
additional_packages="patterns-devel-base-devel_basis"
additional_packages="ShellCheck ansible-lint clang clang-tools codespell ctags desktop-file-utils gcc golang jq python3"
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"
additional_packages="kubernetes-client helm"
init_hooks=GOPATH="${HOME}/.local/share/system-go" GOBIN=/usr/local/bin go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest;
init_hooks=GOPATH="${HOME}/.local/share/system-go" GOBIN=/usr/local/bin go install github.com/onsi/ginkgo/v2/ginkgo@latest;
init_hooks=GOPATH="${HOME}/.local/share/system-go" GOBIN=/usr/local/bin go install golang.org/x/tools/cmd/goimports@latest;
init_hooks=GOPATH="${HOME}/.local/share/system-go" GOBIN=/usr/local/bin go install golang.org/x/tools/gopls@latest;
init_hooks=GOPATH="${HOME}/.local/share/system-go" GOBIN=/usr/local/bin go install sigs.k8s.io/kind@latest;
init_hooks=ln -sf /usr/bin/distrobox-host-exec /usr/local/bin/conmon;
init_hooks=ln -sf /usr/bin/distrobox-host-exec /usr/local/bin/crun;
init_hooks=ln -sf /usr/bin/distrobox-host-exec /usr/local/bin/docker;
init_hooks=ln -sf /usr/bin/distrobox-host-exec /usr/local/bin/docker-compose;
init_hooks=ln -sf /usr/bin/distrobox-host-exec /usr/local/bin/flatpak;
init_hooks=ln -sf /usr/bin/distrobox-host-exec /usr/local/bin/podman;
init_hooks=ln -sf /usr/bin/distrobox-host-exec /usr/local/bin/xdg-open;
exported_apps="htop"
exported_bins="/usr/bin/htop /usr/bin/git"
exported_bins_path="~/.local/bin"

مثال شبیه‌سازی (Clone example)

[ubuntu]
additional_packages="git vim tmux"
image=ubuntu:latest
init=false
nvidia=false
pull=true
root=false
replace=true
start_now=true
[deno_ubuntu]
clone=ubuntu
init=false
nvidia=false
pull=true
root=false
replace=true
start_now=true
pre_init_hooks=curl -fsSL https://deno.land/install.sh | sh;
[bun_ubuntu]
clone=ubuntu
init=false
nvidia=false
pull=true
root=false
replace=true
start_now=true
pre_init_hooks=curl -fsSL https://bun.sh/install | bash;

مثال پوسته ورود سفارشی (Custom login shell example)

[ubuntu]
image=ubuntu:latest
pre_init_hooks="export SHELL=/bin/bash;"

مثال گنجاندن (ارث‌بری فیلدها از یک distrobox دیگر)

[ubuntu]
image=ubuntu:latest
additional_packages="git vim tmux nodejs"
additional_packages="htop iftop iotop"
additional_packages="zsh fish"
[ubuntu-nvidia]
include=ubuntu
nvidia=true
Mar 2026 Distrobox