| DISTROBOX-ASSEMBLE(1) | User Manual | DISTROBOX-ASSEMBLE(1) |
نام (NAME)
distrobox-assemble - ایجاد یا نابودسازی دستهای کانتینرها بر اساس یک فایل مانیفست
توضیحات (DESCRIPTION)
دستور distrobox-assemble وظیفه ایجاد یا نابودسازی دستهای کانتینرها را بر اساس یک فایل مانیفست بر عهده دارد. فایل مانیفست بهطور پیشفرض ./distrobox.ini است، اما میتوان آن را با استفاده از گزینه --file مشخص کرد.
خلاصه دستور (SYNOPSIS)
distrobox assemble
-
--file: مسیر یا نشانی اینترنتی (URL) به فایل مانیفست/ini توزیعباکس --name/-n: اجرا فقط برای یک ورودی خاص در فایل مانیفست/ini --replace/-R: جایگزینی distroboxهای از قبل موجود با نامهای همسان --dry-run/-d: صرفاً چاپ دستور تولیدشده برای مدیر کانتینر بدون اجرای آن --verbose/-v: نمایش جزئیات بیشتر --version/-V: نمایش نسخه
مثالها (EXAMPLES)
این یک نمونه فایل مانیفست برای ایجاد دو کانتینر است:
-
[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 |