| DISTROBOX-UPGRADE(1) | User Manual | DISTROBOX-UPGRADE(1) |
نام (NAME)
distrobox-assemble - ایجاد یا حذف دستهای کانتینرها بر اساس فایل مانیفست
توضیحات (DESCRIPTION)
دستور distrobox-assemble وظیفه ایجاد یا نابودی دستهای کانتینرها را بر اساس یک فایل مانیفست بر عهده دارد. فایل مانیفست به صورت پیشفرض ./distrobox.ini است، اما میتوان آن را با استفاده از پرچم --file مشخص کرد.
خلاصه دستور (SYNOPSIS)
distrobox assemble
-
--file: مسیر یا نشانی (URL) فایل مانیفست/ini برای distrobox --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 # میتوانید با استفاده از # یادداشت اضافه کنید [arch] # یادداشتهای درونخطی نیز پشتیبانی میشوند 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)
سلب مسئولیت: پیش از شبیهسازی کانتینر، لازم است آن را یک بار راهاندازی کنید تا مطمئن شوید پیش از شبیهسازی، به طور کامل ایجاد و مقداردهی اولیه شده است. همچنین کانتینری که کپی میشود باید پیش از ادامه فرایند شبیهسازی متوقف شده باشد.
گزینههای موجود
این فهرستی از گزینههای موجود به همراه نوع داده متناظر آنها است:
راهنمای انواع داده:
- •
- 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) اضافی برای سوار کردن درون کانتینرها |
| exported_apps | string_list | نام برنامهها یا مسیرهای desktopfile برای برونبری |
| exported_bins | string_list | فایلهای اجرایی (باینری) برای برونبری |
| exported_bins_path | string | مسیر اختیاری برای برونبری فایلهای اجرایی (پیشفرض: $HOME/.local/bin) |
| entry | bool | تولید یک مدخل برای کانتینر در فهرست برنامهها (پیشفرض: false) |
| start_now | bool | راهاندازی فوری کانتینر (پیشفرض: false) |
| init | bool | مشخص کردن اینکه آیا کانتینر از نوع initful است (پیشفرض: 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 | مشخص کردن اینکه کانتینر فضاینام شبکه را جداسازی (unshare) کند (پیشفرض: false) |
| unshare_process | bool | مشخص کردن اینکه کانتینر فضاینام فرایند (pid) را جداسازی (unshare) کند (پیشفرض: false) |
| unshare_devsys | bool | مشخص کردن اینکه کانتینر دایرکتوری /dev را جداسازی (unshare) کند (پیشفرض: false) |
| unshare_all | bool | مشخص کردن اینکه کانتینر تمام گزینههای جداسازی قبلی را اعمال کند (پیشفرض: false) .TE گزینهٔ include مشخصههای یک تعریف را درون تعریفی دیگر کپی میکند. گنجاندنهای بازگشتی مجاز هستند. این گزینه روی فایل مانیفست اعمال میشود و کانتینرهای distrobox حاصل هیچگونه ارتباطی با یکدیگر نخواهند داشت. لطفاً توجه داشته باشید که مشخصهها در تعریف شاملکننده، مشخصههای تعریف گنجاندهشده را بازنویسی یا پنهان (shadow) نمیکنند، بلکه صرفاً تکرار میشوند. برای توضیحات بیشتر دربارهٔ هر یک از سایر گزینههای موجود در فهرست، راهنمای کاربرد distrobox create را بررسی کنید؛ هر گزینه متناظر با یکی از پرچمهای دستور create است. مثال پیشرفته [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) [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; مثال پوستهٔ ورود سفارشی [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 ' این پروژه به ایمیج اختصاصی نیازی ندارد. این ابزار میتواند از هر ایمیج OCI موجود در docker-hub، quay.io، یا هر رجیستری دلخواه دیگری استفاده کند. بسیاری از ایمیجهای ابری به منظور کاهش حجم عمداً کوچکسازی شدهاند و ممکن است شامل دستورهایی مانند which، mount، less یا vi نباشند. بستههای اضافی را میتوان پس از ورود به کانتینر نصب کرد. اگر نیاز دارید مکرراً کانتینرهای جدید ایجاد کنید، توصیه میکنیم از ابزار خودکارسازی مورد نظر خود در داخل کانتینر استفاده کنید. نگهداری ایمیج سفارشی خودتان نیز یک گزینه است. ملاحظه اصلی، وجود ابزارهای پایهای لینوکس (mount)، ابزارهای پایهای مدیریت کاربر (usermod, passwd) و پیکربندی صحیح sudo است. "مدیران کانتینر پشتیبانیشده (SUPPORTED CONTAINER MANAGERS)" دستور distrobox میتواند روی هر یک از podman، docker یا https://github.com/89luca89/lilipod lilipod اجرا شود. این برنامه به podman پیکربندیشده در حالت rootless یا docker پیکربندیشده بدون sudo وابسته است (از https://docs.docker.com/engine/install/linux-postinstall این دستورالعملها پیروی کنید) • 2 حداقل نسخه podman: 2.1.0 • 2 حداقل نسخه کلاینت docker: 19.03.15 • 2 حداقل نسخه lilipod: v0.0.1 راهنمای رسمی نصب را در اینجا دنبال کنید: • 2 https://podman.io/getting-started/installation • 2 https://docs.docker.com/engine/install • 2 https://docs.docker.com/engine/install/linux-postinstall "توزیعهای کانتینر (CONTAINERS DISTROS)" مهمانهای Distrobox با موفقیت با ایمیجهای کانتینر زیر آزمایش شدهاند: tab(@); lw(23.3n) lw(23.3n) lw(23.3n). T{ توزیع |
| نسخه | ||
| T} | ایمیجها | |
| AlmaLinux (Toolbox) | 8 9 | quay.io/toolbx-images/almalinux-toolbox:8 quay.io/toolbx-images/almalinux-toolbox:9 quay.io/toolbx-images/almalinux-toolbox:latest |
| Alpine (Toolbox) | 3.20 3.21 3.22 edge | quay.io/toolbx-images/alpine-toolbox:3.20 quay.io/toolbx-images/alpine-toolbox:3.21 quay.io/toolbx-images/alpine-toolbox:3.22 quay.io/toolbx-images/alpine-toolbox:edge quay.io/toolbx-images/alpine-toolbox:latest |
| AmazonLinux (Toolbox) | 2 2022 | quay.io/toolbx-images/amazonlinux-toolbox:2 quay.io/toolbx-images/amazonlinux-toolbox:2023 quay.io/toolbx-images/amazonlinux-toolbox:latest |
| Archlinux (Toolbox) | quay.io/toolbx/arch-toolbox:latest | |
| ALT Linux | p10 p11 sisyphus | docker.io/library/alt:p10 docker.io/library/alt:p11 docker.io/library/alt:sisyphus |
| Bazzite Arch | ghcr.io/ublue-os/bazzite-arch:latest ghcr.io/ublue-os/bazzite-arch-gnome:latest | |
| Centos (Toolbox) | stream9 stream10 | quay.io/toolbx-images/centos-toolbox:stream9 quay.io/toolbx-images/centos-toolbox:stream10 quay.io/toolbx-images/centos-toolbox:latest |
| Debian (Toolbox) | 11 12 13 testing unstable | quay.io/toolbx-images/debian-toolbox:11 quay.io/toolbx-images/debian-toolbox:12 quay.io/toolbx-images/debian-toolbox:13 quay.io/toolbx-images/debian-toolbox:testing quay.io/toolbx-images/debian-toolbox:unstable quay.io/toolbx-images/debian-toolbox:latest |
| Fedora (Toolbox) | 38 39 40 41 42 43 Rawhide | registry.fedoraproject.org/fedora-toolbox:38 registry.fedoraproject.org/fedora-toolbox:39 registry.fedoraproject.org/fedora-toolbox:40 quay.io/fedora/fedora-toolbox:41 quay.io/fedora/fedora-toolbox:42 quay.io/fedora/fedora-toolbox:43 quay.io/fedora/fedora-toolbox:rawhide |
| openSUSE (Toolbox) | registry.opensuse.org/opensuse/distrobox:latest | |
| RedHat (Toolbox) | 8 9 | registry.access.redhat.com/ubi8/toolbox registry.access.redhat.com/ubi9/toolbox |
| Rocky Linux (Toolbox) | 8 9 | quay.io/toolbx-images/rockylinux-toolbox:8 quay.io/toolbx-images/rockylinux-toolbox:9 quay.io/toolbx-images/rockylinux-toolbox:latest |
| Ubuntu (Toolbox) | 16.04 18.04 20.04 22.04 24.04 | quay.io/toolbx/ubuntu-toolbox:16.04 quay.io/toolbx/ubuntu-toolbox:18.04 quay.io/toolbx/ubuntu-toolbox:20.04 quay.io/toolbx/ubuntu-toolbox:22.04 quay.io/toolbx/ubuntu-toolbox:24.04 quay.io/toolbx/ubuntu-toolbox:latest |
| Chainguard Wolfi (Toolbox) | quay.io/toolbx-images/wolfi-toolbox:latest | |
| Ublue | ubuntu-toolbox fedora-toolbox wolfi-toolbox archlinux-distrobox | ghcr.io/ublue-os/ubuntu-toolbox ghcr.io/ublue-os/fedora-toolbox ghcr.io/ublue-os/wolfi-toolbox ghcr.io/ublue-os/arch-toolbox |
| AlmaLinux | 8 8-minimal 9 9-minimal | docker.io/library/almalinux:8 docker.io/library/almalinux:9 |
| Alpine Linux | 3.20 3.21 3.22 edge | docker.io/library/alpine:3.20 docker.io/library/alpine:3.21 docker.io/library/alpine:3.22 docker.io/library/alpine:edge docker.io/library/alpine:latest |
| AmazonLinux | 1 2 2023 | public.ecr.aws/amazonlinux/amazonlinux:1 public.ecr.aws/amazonlinux/amazonlinux:2 public.ecr.aws/amazonlinux/amazonlinux:2023 |
| Archlinux | docker.io/library/archlinux:latest | |
| Blackarch | docker.io/blackarchlinux/blackarch:latest | |
| CentOS Stream | 8 9 10 | quay.io/centos/centos:stream8 quay.io/centos/centos:stream9 quay.io/centos/centos:stream10 |
| Chainguard Wolfi | cgr.dev/chainguard/wolfi-base:latest | |
| Chimera Linux | docker.io/chimeralinux/chimera:latest | |
| Crystal Linux | registry.gitlab.com/crystal-linux/misc/docker:latest | |
| Debian | 7 8 9 10 11 12 13 | docker.io/debian/eol:wheezy docker.io/debian/eol:buster docker.io/debian/eol:bullseye docker.io/library/debian:bookworm-backports docker.io/library/debian:stable-backports |
| Debian | Testing | docker.io/library/debian:testing docker.io/library/debian:testing-backports |
| Debian | Unstable | docker.io/library/debian:unstable |
| deepin | 20 (apricot) 23 (beige) | docker.io/linuxdeepin/apricot docker.io/linuxdeepin/deepin:beige |
| Fedora | 38 39 40 41 42 43 Rawhide | quay.io/fedora/fedora:38 quay.io/fedora/fedora:39 quay.io/fedora/fedora:40 quay.io/fedora/fedora:41 quay.io/fedora/fedora:42 quay.io/fedora/fedora:43 quay.io/fedora/fedora:rawhide |
| Gentoo Linux | rolling | docker.io/gentoo/stage3:latest |
| KDE neon | Latest | invent-registry.kde.org/neon/docker-images/plasma:latest |
| Kali Linux | rolling | docker.io/kalilinux/kali-rolling:latest |
| Mint | 22.3 | docker.io/linuxmintd/mint22.3-amd64 |
| Neurodebian | nd120 | docker.io/library/neurodebian:nd120 |
| openSUSE | Leap | registry.opensuse.org/opensuse/leap:latest |
| openSUSE | Tumbleweed | registry.opensuse.org/opensuse/distrobox:latest registry.opensuse.org/opensuse/tumbleweed:latest registry.opensuse.org/opensuse/toolbox:latest registry.opensuse.org/opensuse/distrobox-bpftrace:latest |
| Oracle Linux | 8 8-slim 9 9-slim 10 10-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 container-registry.oracle.com/os/oraclelinux:10 container-registry.oracle.com/os/oraclelinux:10-slim |
| RedHat (UBI) | 7 8 9 | registry.access.redhat.com/ubi7/ubi 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 |
| Rocky Linux | 8 8-minimal 9 | quay.io/rockylinux/rockylinux:8 quay.io/rockylinux/rockylinux:8-minimal quay.io/rockylinux/rockylinux:9 quay.io/rockylinux/rockylinux:latest |
| Slackware | docker.io/vbatts/slackware:current | |
| SteamOS | ghcr.io/linuxserver/steamos:latest | |
| Ubuntu | 14.04 16.04 18.04 20.04 22.04 24.04 | 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:22.04 docker.io/library/ubuntu:24.04 |
| Vanilla OS | VSO | ghcr.io/vanilla-os/vso:main |
| Void Linux | glibc musl | ghcr.io/void-linux/void-glibc-full:latest ghcr.io/void-linux/void-musl-full:latest |
| تصویرهای علامتگذاریشده با Toolbox تصویرهای سفارشی حاصل تلاشهای جامعه در | ||
| https://github.com/toolbx-images/images | ||
| toolbx-images/images | ||
| هستند، بنابراین برای استفاده در میزکار مناسبتر بوده و راهاندازی نخست آنها زمان کمتری میبرد. | ||
| با این وجود توجه داشته باشید اگر از یک تصویر ازپیشپیکربندینشده برای toolbox استفاده کنید، نخستین اجرای distrobox-enter ممکن است مدتی طول بکشد، زیرا وابستگیهای ناموجود را بارگیری و نصب خواهد کرد. | ||
| هزینهٔ زمانی اندکی که برای توانایی استفاده از هر نوع تصویری پرداخت میشود. | ||
| این مورد پس از مرتبهٔ اول رخ نخواهد داد؛ ورودهای بعدی بسیار سریعتر خواهند بود. | ||
| توزیع NixOS به عنوان یک کانتینر پشتیبانی نمیشود و در حال حاضر هیچ برنامهای برای افزودن پشتیبانی از آن وجود ندارد. | ||
| اگر به دنبال محیطهای بدون امتیاز (unprivileged) برای NixOS هستید، پیشنهاد میکنیم به | ||
| https://nixos.org/manual/nix/unstable/command-ref/nix-shell.html | ||
| nix-shell | ||
| یا | ||
| https://github.com/DavHau/nix-portable | ||
| nix portable | ||
| نگاهی بیندازید. | ||
| پشتیبانی از توزیعهای جدید (NEW DISTRO SUPPORT) | ||
| اگر توزیع انتخابی شما در فهرست نیست، یک issue برای درخواست پشتیبانی از آن باز کنید؛ ما میتوانیم با همکاری یکدیگر بررسی کنیم که آیا افزودن پشتیبانی برای آن امکانپذیر است یا خیر. | ||
| یا بهسادگی آن را به هر حال امتحان کنید؛ اگر کار کرد، یک issue باز کنید تا به فهرست اضافه شود! | ||
| توزیعهای قدیمیتر (OLDER DISTRIBUTIONS) | ||
| برای توزیعهای قدیمیتر مانند CentOS 5، CentOS 6، Debian 6 و Ubuntu 12.04، سازگاری تضمین نمیشود. | ||
| نسخهٔ libc آنها با نسخههای هستهٔ >=4.11 به بعد ناسازگار است. | ||
| یک راهکار برای این مسئله، استفاده از پرچم vsyscall=emulate در بوتلودر میزبان است. | ||
| همچنین به یاد داشته باشید که ممکن است آینهها برای چنین نسخههای قدیمی از دسترس خارج شده باشند، بنابراین لازم است یک تصویر سفارشی distrobox بسازید تا مطمئن شوید نیازمندیهای اولیه برآورده شدهاند. | ||
| پشتیبانی از شتابدهنده گرافیکی (GPU ACCELERATION SUPPORT) | ||
| برای پردازندههای گرافیکی Intel و AMD، پشتیبانی توکار است، زیرا کانتینرها آخرین راهاندازهای mesa/dri موجود را نصب خواهند کرد. | ||
| برای NVidia، میتوانید در زمان ساخت از پرچم --nvidia استفاده کنید؛ مستندات distrobox-create را بررسی کنید تا از نحوهٔ استفاده از آن مطلع شوید. | ||
| همچنین، میتوانید از ابزار nvidia-container-toolkit برای راهاندازی این یکپارچهسازی، مستقل از پرچم اختصاصی distrobox استفاده کنید. | ||
| "نام (NAME)" | ||
| distrobox create | ||
| distrobox-create | ||
| "توضیحات (DESCRIPTION)" | ||
| دستور distrobox-create وظیفهٔ ساخت کانتینر با نام و تصویر ورودی را بر عهده دارد. | ||
| کانتینر ایجادشده به طور یکپارچه با سیستم میزبان ادغام خواهد شد و امکان اشتراکگذاری دایرکتوری HOME کاربر، حافظه ذخیرهسازی خارجی، دستگاههای usb خارجی، برنامههای گرافیکی (X11/Wayland) و صدا را فراهم میسازد. | ||
| "خلاصه دستور (SYNOPSIS)" | ||
| distrobox create | ||
| --image/-i: تصویر مورد استفاده برای کانتینر پیشفرض: ${container_image_default} | ||
| --name/-n: نام برای distrobox پیشفرض: ${container_name_default} | ||
| --hostname: نام میزبان برای distrobox پیشفرض: <container-name>.$(uname -n) | ||
| --pull/-p: دریافت تصویر حتی در صورت وجود محلی (به همراه --yes) | ||
| --yes/-Y: غیرتعاملی، دریافت تصویرها بدون پرسش | ||
| --root/-r: اجرای podman/docker/lilipod با دسترسیهای ریشه. توجه کنید که در صورت نیاز به دسترسی ریشه، این روش | ||
| نسبت به "sudo distrobox" ارجح است (نکته: در صورت لزومِ استفاده از برنامهای غیر از 'sudo' برای دسترسی ریشه، | ||
| آن را از طریق متغیر محیطی DBX_SUDO_PROGRAM یا متغیر پیکربندی 'distrobox_sudo_program' مشخص کنید) | ||
| --clone/-c: نام کانتینر distrobox برای استفاده به عنوان پایه برای یک کانتینر جدید | ||
| این گزینه برای تغییر نام یک distrobox موجود یا داشتن چند نسخه | ||
| از همان محیط کاربردی خواهد بود. | ||
| --home/-H: انتخاب یک دایرکتوری HOME سفارشی برای کانتینر. مفید برای جلوگیری از پر شدن خانهٔ میزبان با فایلهای موقت. | ||
| --volume: حجمهای اضافی برای افزودن به کانتینر | ||
| --additional-flags/-a: پرچمهای اضافی برای ارسال به دستور مدیر کانتینر | ||
| --additional-packages/-ap: بستههای اضافی برای نصب در زمان راهاندازی اولیهٔ کانتینر | ||
| --init-hooks: دستورهای اضافی برای اجرا در پایان مقداردهی اولیهٔ کانتینر | ||
| --pre-init-hooks: دستورهای اضافی برای اجرا در ابتدای مقداردهی اولیهٔ کانتینر | ||
| --init/-I: استفاده از سیستم init (مانند systemd) درون کانتینر. | ||
| این کار باعث میشود فرآیندهای میزبان از داخل کانتینر قابل مشاهده نباشند. (به همراه --unshare-process) | ||
| بسته به تصویر کانتینر ممکن است به بستههای اضافی نیاز داشته باشد: https://github.com/89luca89/distrobox/blob/main/docs/useful_tips.md#using-init-system-inside-a-distrobox | ||
| --nvidia: تلاش برای یکپارچهسازی راهاندازهای nVidia میزبان در مهمان | ||
| --platform: مشخص کردن پلتفرم مورد استفاده، مثلاً: linux/arm64 | ||
| --unshare-devsys: عدم اشتراکگذاری دستگاههای میزبان و دایرکتوریهای sysfs از میزبان | ||
| --unshare-groups: عدم انتقال گروههای اضافی کاربر به درون کانتینر | ||
| --unshare-ipc: عدم اشتراکگذاری فضای نام ipc با میزبان | ||
| --unshare-netns: عدم اشتراکگذاری فضای نام net با میزبان | ||
| --unshare-process: عدم اشتراکگذاری فضای نام process با میزبان | ||
| --unshare-all: فعالسازی همهٔ پرچمهای unshare زیر | ||
| --compatibility/-C: نمایش فهرست تصویرهای سازگار | ||
| --help/-h: نمایش این پیام | ||
| --no-entry: عدم ایجاد ورودی کانتینر در فهرست برنامهها | ||
| --dry-run/-d: صرفاً چاپ دستور تولیدشدهٔ مدیر کانتینر | ||
| --verbose/-v: نمایش جزئیات بیشتر | ||
| --version/-V: نمایش نسخه | ||
| --absolutely-disable-root-password-i-am-really-positively-sure: ⚠️ ⚠️ هنگام راهاندازی distrobox با دسترسی ریشه، این گزینه از تنظیم گذرواژه کاربر صرفنظر کرده و آن را خالی میگذارد. ⚠️ ⚠️ | ||
| "سازگاری (COMPATIBILITY)" | ||
| برای مشاهده فهرستی از ایمیجها و مدیرهای کانتینر سازگار، لطفاً به صفحات راهنما مراجعه کنید: | ||
| man distrobox | ||
| man distrobox-compatibility | ||
| یا به صفحه مستندات در پیوند زیر مراجعه نمایید: https://github.com/89luca89/distrobox/blob/main/docs/compatibility.md#containers-distros | ||
| "مثالها (EXAMPLES)" | ||
| ایجاد یک distrobox با ایمیج alpine به نام کانتینر my-alpine | ||
| distrobox create --image alpine my-alpine-container | ||
| ایجاد یک distrobox از ایمیج fedora-toolbox:35 | ||
| distrobox create --image registry.fedoraproject.org/fedora-toolbox:35 --name fedora-toolbox-35 | ||
| شبیهسازی (کلون) یک کانتینر distrobox موجود | ||
| distrobox create --clone fedora-35 --name fedora-35-copy | ||
| دریافت همیشگی (pull) ایمیج جدید هنگام ایجاد یک distrobox | ||
| distrobox create --pull --image centos:stream9 --home ~/distrobox/centos9 | ||
| افزودن متغیرهای محیطی اضافی به کانتینر | ||
| distrobox create --image fedora:35 --name test --additional-flags "--env MY_VAR=value" | ||
| افزودن volumeهای اضافی به کانتینر | ||
| distrobox create --image fedora:35 --name test --volume /opt/my-dir:/usr/local/my-dir:rw --additional-flags "--pids-limit -1" | ||
| افزودن بستههای اضافی به کانتینر | ||
| distrobox create --image alpine:latest --name test2 --additional-packages "git tmux vim" | ||
| استفاده از init-hooks برای انجام یک عملیات هنگام راهاندازی کانتینر | ||
| distrobox create --image alpine:latest --name test --init-hooks "touch /var/tmp/test1 && touch /var/tmp/test2" | ||
| استفاده از pre-init-hooks برای انجام یک عملیات در ابتدای راهاندازی کانتینر (پیش از آغاز به کار هرگونه مدیر بسته) | ||
| distrobox create -i docker.io/almalinux/8-init --init --name test --pre-init-hooks "dnf config-manager --enable powertools && dnf -y install epel-release" | ||
| استفاده از init برای ایجاد یک کانتینر Systemd (مشابه عملکرد یک LXC): | ||
| distrobox create -i ubuntu:latest --name test --additional-packages "systemd libpam-systemd pipewire-audio-client-libraries" --init | ||
| استفاده از init برای ایجاد یک کانتینر OpenRC (مشابه عملکرد یک LXC): | ||
| distrobox create -i alpine:latest --name test --additional-packages "openrc" --init | ||
| استفاده از قابلیت یکپارچهسازی درایورهای NVidia میزبان | ||
| distrobox create --image ubuntu:22.04 --name ubuntu-nvidia --nvidia | ||
| عدم استفاده از IP میزبان درون کانتینر: | ||
| distrobox create --image ubuntu:latest --name test --unshare-netns | ||
| ایجاد یک کانتینر ایزولهتر که در آن تنها $HOME، سوکتهای اولیه و فایلسیستم میزبان (در /run/host) به اشتراک گذاشته میشوند: | ||
| distrobox create --name unshared-test --unshare-all | ||
| ایجاد یک کانتینر ایزولهتر به همراه سامانه init اختصاصی آن؛ این حالت عملکردی بسیار شبیه به یک کانتینر کامل LXC خواهد داشت: | ||
| distrobox create --name unshared-init-test --unshare-all --init --image fedora:latest | ||
| استفاده از متغیرهای محیطی برای تعیین نام کانتینر، ایمیج و مدیر کانتینر: | ||
| DBX_CONTAINER_MANAGER="docker" DBX_NON_INTERACTIVE=1 DBX_CONTAINER_NAME=test-alpine DBX_CONTAINER_IMAGE=alpine distrobox-create | ||
| DBX_CONTAINER_ALWAYS_PULL | ||
| DBX_CONTAINER_CUSTOM_HOME | ||
| DBX_CONTAINER_HOME_PREFIX | ||
| DBX_CONTAINER_IMAGE | ||
| DBX_CONTAINER_MANAGER | ||
| DBX_CONTAINER_NAME | ||
| DBX_CONTAINER_HOSTNAME | ||
| DBX_NON_INTERACTIVE | ||
| DBX_SUDO_PROGRAM | ||
| متغیر DBX_CONTAINER_HOME_PREFIX مشخص میکند که دایرکتوریهای خانگی کانتینرها در کجا قرار خواهند گرفت. | ||
| اگر آن را بهصورت ~/dbx تعریف کنید، دایرکتوری خانگی همهٔ کانتینرهای بعدی ~/dbx/$container_name خواهد بود. | ||
| "موارد تکمیلی (EXTRA)" | ||
| گزینهٔ --additional-flags یا -a برای تغییر مقادیر پیشفرض هنگام ساخت کانتینر مفید است. | ||
| برای مثال: | ||
| distrobox create -i docker.io/library/archlinux -n dev-arch | ||
| podman container inspect dev-arch | jq '.[0].HostConfig.PidsLimit' | ||
| 2048 | ||
| distrobox rm -f dev-arch | ||
| distrobox create -i docker.io/library/archlinux -n dev-arch --volume $CBL_TC:/tc --additional-flags "--pids-limit -1" | ||
| podman container inspect dev-arch | jq '.[0].HostConfig,.PidsLimit' | ||
| 0 | ||
| فضاهای ذخیرهسازی اضافی (volumes) را میتوان با پرچم --volume مشخص کرد. | ||
| این پرچم برای تعیین نقطهٔ اتصال (mount point) از همان استاندارد docker و podman پیروی میکند، بنابراین قالب آن بهصورت --volume SOURCE_PATH:DEST_PATH:MODE است. | ||
| distrobox create --image docker.io/library/archlinux --name dev-arch --volume /usr/share/:/var/test:ro | ||
| هنگام ساخت کانتینر، میتوان (با استفاده از additional-flags) برخی متغیرهای محیطی را تعیین کرد که درون کانتینر ماندگار بوده و از محیط شما مستقل باشند: | ||
| distrobox create --image fedora:35 --name test --additional-flags "--env MY_VAR=value" | ||
| گزینهٔ --init-hooks برای افزودن دستورات به نقطهٔ ورود (init) کانتینر کاربرد دارد. | ||
| این قابلیت برای ساخت کانتینرهایی با مجموعهای از برنامههای از پیش نصبشده یا افزودن کاربران و گروهها مفید است. | ||
| distrobox create --image fedora:35 --name test --init-hooks "dnf groupinstall -y \"C Development Tools and Libraries\"" | ||
| گزینهٔ --init برای ساخت کانتینری مفید است که از سیستم init مجزای داخلی خود استفاده میکند. | ||
| برای نمونه با استفاده از: | ||
| distrobox create -i docker.io/almalinux/8-init --init --name test | ||
| distrobox create -i docker.io/library/debian --additional-packages "systemd" --init --name test-debian | ||
| در داخل کانتینر قادر خواهیم بود از واحدهای عادی systemd استفاده کنیم: | ||
| ~$ distrobox enter test | ||
| user@test:~$ sudo systemctl enable --now sshd | ||
| user@test:~$ sudo systemctl status sshd | ||
| ● sshd.service - OpenSSH server daemon | ||
| Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled) | ||
| Active: active (running) since Fri 2022-01-28 22:54:50 CET; 17s ago | ||
| Docs: man:sshd(8) | ||
| man:sshd_config(5) | ||
| Main PID: 291 (sshd) | ||
| توجه داشته باشید که فعالسازی --init یکپارچهسازی فرآیندهای میزبان را غیرفعال خواهد کرد. | ||
| از درون کانتینر قادر به دیدن و مدیریت فرآیندهای میزبان نخواهید بود. | ||
| این امر به این دلیل ضروری است که /sbin/init باید pid شماره ۱ باشد. | ||
| اگر میخواهید از ایمیجی استفاده کنید که از قبل آماده نشده است، لازم است بستههای اضافی را مشخص کنید: | ||
| distrobox create -i alpine:latest --init --additional-packages "openrc" -n test | ||
| distrobox create -i debian:stable --init --additional-packages "systemd libpam-systemd pipewire-audio-client-libraries" -n test | ||
| distrobox create -i ubuntu:22.04 --init --additional-packages "systemd libpam-systemd pipewire-audio-client-libraries" -n test | ||
| distrobox create -i archlinux:latest --init --additional-packages "systemd" -n test | ||
| distrobox create -i registry.opensuse.org/opensuse/tumbleweed:latest --init --additional-packages "systemd" -n test | ||
| distrobox create -i registry.fedoraproject.org/fedora:39 --init --additional-packages "systemd" -n test | ||
| پرچم --init برای ایجاد کانتینرهای سیستمی مناسب است؛ جایی که کانتینر بیشتر شبیه به یک ماشین مجازی (VM) کامل عمل میکند تا یک کانتینر برنامهای. | ||
| در داخل آن سیستم init مجزا، نشست کاربری (user-session)، دیمنها و غیره را در اختیار خواهید داشت. | ||
| پرچم --home به شما امکان میدهد یک دایرکتوری خانگی (HOME) سفارشی برای کانتینر مشخص کنید. | ||
| توجه داشته باشید که این کار مانع از اتصال (mount) دایرکتوری خانگی میزبان نخواهد شد، اما تضمین میکند که پیکربندیها و dotfileها آن را شلوغ نکنند. | ||
| پرچم --root به شما اجازه میدهد کانتینری با دسترسیهای واقعی ریشه (root) بسازید. | ||
| در اولین اجرای enter از کاربر خواسته میشود تا یک گذرواژه تعیین کند. | ||
| این کار به این منظور انجام میشود که در یک کانتینر با دسترسی ریشه (rootful)، امکان اجرای sudo/su بدون گذرواژه فراهم نشود؛ چرا که در این حالت، کاربر ریشه درون کانتینر، همان کاربر ریشه در بیرون کانتینر است! | ||
| گزینهٔ --absolutely-disable-root-password-i-am-really-positively-sure از تنظیم گذرواژهٔ کاربر صرفنظر کرده و آن را خالی میگذارد. | ||
| این کار واقعاً خطرناک است و شما قطعاً و مؤکداً نباید آن را فعال کنید. | ||
| از نسخهٔ 1.4.0 ابزار distrobox، هنگامی که کانتینر جدیدی میسازید، یک مدخل در فهرست برنامههای کاربردی نیز ایجاد میشود..SS یکپارچهسازی NVidia | ||
| اگر میزبان شما دارای یک پردازنده گرافیکی NVidia با درایورهای اختصاصی نصبشده باشد، | ||
| میتوانید با استفاده از پرچم --nvidia آنها را با مهمانها یکپارچهسازی کنید: | ||
| distrobox create --nvidia --image ubuntu:latest --name ubuntu-nvidia | ||
| توجه داشته باشید که این قابلیت با سیستمهای غیر glibc سازگار نیست | ||
| و برای کارکرد صحیح به توزیعهای تا حدی جدیدتر نیاز دارد. | ||
| کارکرد این ویژگی روی موارد زیر آزمایش شده است: | ||
| • 2 | ||
| Almalinux | ||
| • 2 | ||
| Archlinux | ||
| • 2 | ||
| Centos 7 و جدیدتر | ||
| • 2 | ||
| Clearlinux | ||
| • 2 | ||
| Debian 10 و جدیدتر | ||
| • 2 | ||
| OpenSUSE Leap | ||
| • 2 | ||
| OpenSUSE Tumbleweed | ||
| • 2 | ||
| Rockylinux | ||
| • 2 | ||
| Ubuntu 18.04 و جدیدتر | ||
| • 2 | ||
| Void Linux (glibc) | ||
| "نام (NAME)" | ||
| distrobox-enter - ورود به کانتینر distrobox | ||
| "توضیحات (DESCRIPTION)" | ||
| دستور distrobox-enter وظیفهٔ ورود به کانتینر با نام مشخصشده را بر عهده دارد. | ||
| دستور پیشفرضی که اجرا میشود SHELL شماست، اما میتوانید شلهای دیگر یا دستورهای کاملی را برای اجرا مشخص کنید. | ||
| اگر از آن داخل یک اسکریپت، یک برنامه یا یک سرویس استفاده میکنید، میتوانید حالت –headless را برای غیرفعال کردن tty و تعاملی بودن مشخص کنید. | ||
| "خلاصه دستور (SYNOPSIS)" | ||
| distrobox enter | ||
| --name/-n: نام برای distrobox پیشفرض: my-distrobox | ||
| --/-e: پایان آرگومانها؛ اجرای باقیمانده به عنوان دستور هنگام ورود پیشفرض: شل پیشفرض ${USER} | ||
| --no-tty/-T: عدم ایجاد tty | ||
| --no-workdir/-nw: شروع همیشگی کانتینر از دایرکتوری خانگی کانتینر | ||
| --additional-flags/-a: پرچمهای اضافی برای ارسال به دستور مدیر کانتینر | ||
| --help/-h: نمایش این پیام | ||
| --root/-r: راهاندازی podman/docker/lilipod با امتیازات root. توجه داشته باشید در صورت نیاز به root این روش | ||
| نسبت به "sudo distrobox" ارجح است (نکته: در صورت نیاز به برنامهای جز 'sudo' برای امتیازات root، | ||
| آن را از طریق متغیر محیطی DBX_SUDO_PROGRAM یا متغیر پیکربندی 'distrobox_sudo_program' مشخص کنید) | ||
| --dry-run/-d: فقط چاپ دستور تولیدشده مدیر کانتینر | ||
| --verbose/-v: نمایش جزئیات بیشتر | ||
| --version/-V: نمایش نسخه | ||
| "مثالها (EXAMPLES)" | ||
| ورود به یک distrobox با نام “example” | ||
| distrobox-enter example | ||
| ورود به یک distrobox با مشخص کردن یک دستور | ||
| distrobox-enter --name fedora-toolbox-35 -- bash -l | ||
| distrobox-enter my-alpine-container -- sh -l | ||
| استفاده از پرچمهای اضافی podman/docker/lilipod هنگام ورود به یک distrobox | ||
| distrobox-enter --additional-flags "--preserve-fds" --name test -- bash -l | ||
| تعیین متغیرهای محیطی اضافی هنگام ورود به یک distrobox | ||
| distrobox-enter --additional-flags "--env MY_VAR=value" --name test -- bash -l | ||
| MY_VAR=value distrobox-enter --additional-flags "--preserve-fds" --name test -- bash -l | ||
| همچنین میتوانید از متغیرهای محیطی برای تعیین مدیر کانتینر و نام کانتینر استفاده کنید: | ||
| DBX_CONTAINER_MANAGER="docker" DBX_CONTAINER_NAME=test-alpine distrobox-enter | ||
| DBX_CONTAINER_NAME | ||
| DBX_CONTAINER_MANAGER | ||
| DBX_SKIP_WORKDIR | ||
| DBX_SUDO_PROGRAM | ||
| "اطلاعات بیشتر (EXTRA)" | ||
| این دستور برای ورود به خود distrobox استفاده میشود. | ||
| شخصاً، من فقط چندین نمایه (profile) در | ||
| gnome-terminal خود ایجاد میکنم تا توزیعهای متعددی در دسترس داشته باشم. | ||
| گزینهٔ --additional-flags یا -a برای تغییر | ||
| دستور پیشفرض هنگام اجرا در کانتینر مفید است. | ||
| برای مثال: | ||
| distrobox enter -n dev-arch --additional-flags "--env my_var=test" -- printenv &| grep my_var | ||
| my_var=test | ||
| این کار همچنین با استفاده از متغیرهای محیطی معمولی امکانپذیر است: | ||
| my_var=test distrobox enter -n dev-arch --additional-flags -- printenv &| grep my_var | ||
| my_var=test | ||
| اگر میخواهید وارد یک کانتینر با دسترسی ریشه (rootful) شوید بهطوریکه distrobox | ||
| از برنامهای غیر از “sudo” برای اجرای podman/docker/lilipod با دسترسی ریشه استفاده کند، مانند | ||
| “pkexec” یا “doas”، میتوانید آن را با متغیر محیطی | ||
| DBX_SUDO_PROGRAM مشخص کنید. | ||
| برای مثال، جهت استفاده از “doas” برای ورود به یک کانتینر با دسترسی ریشه: | ||
| DBX_SUDO_PROGRAM="doas" distrobox enter -n container --root | ||
| علاوه بر این، در یکی از مسیرهای فایل پیکربندی که distrobox پشتیبانی میکند، | ||
| مانند ~/.distroboxrc، میتوانید خط | ||
| distrobox_sudo_program="doas" را نیز (برای مثال) اضافه کنید تا همیشه | ||
| دستورهای distrobox مربوط به کانتینرهای با دسترسی ریشه را با استفاده از “doas” اجرا کند. | ||
| "نام (NAME)" | ||
| distrobox-ephemeral - ایجاد یک distrobox موقت با حذف خودکار | ||
| distrobox ephemeral | ||
| distrobox-ephemeral | ||
| "توضیحات (DESCRIPTION)" | ||
| دستور distrobox-ephemeral یک distrobox موقت ایجاد میکند که با | ||
| خاتمه یافتن دستور، به طور خودکار نابود میشود. | ||
| "خلاصه دستور (SYNOPSIS)" | ||
| distrobox ephemeral | ||
| --root/-r: اجرای podman/docker/lilipod با دسترسی ریشه. توجه داشته باشید اگر به ریشه نیاز دارید، این روش | ||
| بر "sudo distrobox" ترجیح داده میشود (نکته: در صورت نیاز به استفاده از برنامهای غیر از 'sudo' برای دسترسی ریشه، | ||
| آن را از طریق متغیر محیطی DBX_SUDO_PROGRAM یا متغیر پیکربندی 'distrobox_sudo_program' مشخص کنید) | ||
| --verbose/-v: نمایش جزئیات بیشتر | ||
| --help/-h: نمایش این پیام | ||
| --/-e: پایان دادن به آرگومانها، اجرای مابقی به عنوان دستوری برای اجرا هنگام ورود پیشفرض: پوستهٔ پیشفرض ${USER} | ||
| --version/-V: نمایش نسخه | ||
| "مثالها (EXAMPLES)" | ||
| distrobox-ephemeral --image alpine:latest -- cat /etc/os-release | ||
| distrobox-ephemeral --root --verbose --image alpine:latest --volume /opt:/opt | ||
| همچنین میتوانید از گزینههای distrobox-create برای سفارشیسازی | ||
| کانتینر موقت جهت اجرا استفاده کنید. | ||
| "همچنین ببینید (SEE ALSO)" | ||
| distrobox-create --help | ||
| man distrobox-create | ||
| دستور distrobox-ephemeral از distrobox-create استفاده میکند؛ برای مشاهدهٔ فهرستی از | ||
| متغیرهای محیطی پشتیبانیشده جهت استفاده، بخش «همچنین ببینید» در distrobox-create(1) را بررسی کنید. | ||
| "نام (NAME)" | ||
| distrobox-export - برونبری برنامهها و فایلهای باینری از کانتینر به میزبان | ||
| "توضیحات (DESCRIPTION)" | ||
| برونبری برنامه و فایل باینری | ||
| دستور distrobox-export وظیفهٔ برونبری یک برنامه یا یک فایل باینری را از | ||
| کانتینر به سیستم میزبان بر عهده دارد. | ||
| برنامهٔ برونبریشده بهسادگی در راهانداز معمول برنامههای شما در دسترس خواهد بود و | ||
| بهطور خودکار از کانتینری که از آن برونبری شده اجرا خواهد شد. | ||
| "خلاصه دستور (SYNOPSIS)" | ||
| distrobox-export | ||
| --app/-a: نام برنامه برای برونبری یا مسیر مطلق به desktopfile برای برونبری | ||
| --bin/-b: مسیر مطلق فایل باینری برای برونبری | ||
| --list-apps: فهرست کردن برنامههای برونبریشده از این کانتینر | ||
| --list-binaries فهرست کردن باینریهای برونبریشده از این کانتینر، از -ep برای تعیین مسیرهای سفارشی جستجو استفاده کنید | ||
| --delete/-d: حذف برنامه یا باینری برونبریشده | ||
| --export-label/-el: برچسب برای افزودن به نام برنامهٔ برونبریشده. | ||
| برای غیرفعال کردن از "none" استفاده کنید. | ||
| پیشفرض: (on \$container_name) | ||
| --export-path/-ep: مسیر برونبری فایل باینری | ||
| --extra-flags/-ef: پرچمهای اضافی برای افزودن به دستور | ||
| --enter-flags/-nf: پرچمهای اضافی برای افزودن به distrobox-enter | ||
| --sudo/-S: مشخص کردن اینکه آیا مورد برونبریشده با sudo اجرا شود یا خیر | ||
| --help/-h: نمایش این پیام راهنما | ||
| --verbose/-v: نمایش خروجی با جزئیات بیشتر | ||
| --version/-V: نمایش نسخه | ||
| ممکن است بخواهید برنامههای گرافیکی یا ابزارهای خط فرمان (CLI) را در | ||
| distrobox خود نصب کنید. | ||
| استفاده از distrobox-export از داخل کانتینر به | ||
| شما امکان میدهد تا مستقیماً از خود سیستم میزبان از آنها استفاده کنید. | ||
| "مثالها (EXAMPLES)" | ||
| distrobox-export --app mpv [--extra-flags "flags"] [--delete] [--sudo] | ||
| distrobox-export --bin /path/to/bin [--export-path ~/.local/bin] [--extra-flags "flags"] [--delete] [--sudo] | ||
| مثال برونبری برنامه | ||
| distrobox-export --app abiword | ||
| این ابزار بهسادگی فایلهای .desktop اصلی را به همراه آیکونهای | ||
| مورد نیاز کپی کرده، پیشوند | ||
| /usr/local/bin/distrobox-enter -n distrobox_name -e ... را به | ||
| دستورات اجرایی اضافه میکند و آنها را در پوشهٔ خانگی (home) شما ذخیره مینماید | ||
| تا مستقیماً از میزبان مانند یک برنامهٔ معمولی استفاده شوند. | ||
| distrobox-export --app /opt/application/my-app.desktop | ||
| این کار از جستجو برای desktopfile در مسیرهای استاندارد صرفنظر کرده و تنها | ||
| از مسیر فایل ارائهشده استفاده میکند. | ||
| مثال برونبری باینری | ||
| distrobox-export --bin /usr/bin/code --extra-flags "--foreground" --export-path $HOME/.local/bin | ||
| در صورت برونبری باینریها، باید مشخص کنید که آن را در کجا | ||
| برونبری کند (--export-path) و ابزار یک اسکریپت پوششی (wrapper script) | ||
| کوچک ایجاد خواهد کرد که باینری مورد نظر را با distrobox-enter -e | ||
| از سیستم میزبان اجرا میکند. | ||
| این ویژگی همراه با استفاده از direnv برای داشتن نسخههای مختلف | ||
| از یک باینری یکسان بر اساس env یا پروژهٔ شما بسیار کاربردی است. | ||
| باینریهای برونبریشده در “–export-path” انتخابی به صورت یک | ||
| اسکریپت پوششی ایجاد میشوند که چه در سیستم میزبان و چه در کانتینر عملکردی | ||
| کاملاً طبیعی دارد. | ||
| پرچمهای اضافی | ||
| میتوانید پرچمهای اضافی را برای افزوده شدن به دستور مشخص کنید؛ برای مثال | ||
| اگر میخواهید یک برنامهٔ electron را برونبری کنید، میتوانید پرچم | ||
| “–foreground” را به دستور اضافه نمایید: | ||
| distrobox-export --app atom --extra-flags "--foreground" | ||
| distrobox-export --bin /usr/bin/vim --export-path ~/.local/bin --extra-flags "-p" | ||
| این قابلیت هم برای باینریها و هم برای برنامهها کار میکند. | ||
| پرچمهای اضافی تنها زمانی به کار میروند که برنامه یا باینری برونبریشده | ||
| از سیستم میزبان اجرا شود؛ اجرای آنها در داخل کانتینر شامل این پرچمها نخواهد بود. | ||
| لغو برونبری | ||
| گزینهٔ “–delete” وضعیت برونبری یک برنامه یا باینری را لغو (un-export) میکند: | ||
| distrobox-export --app atom --delete | ||
| distrobox-export --bin /usr/bin/vim --export-path ~/.local/bin --delete | ||
| اجرا به عنوان کاربر ریشه در کانتینر | ||
| گزینهٔ “–sudo” مورد برونبریشده را به عنوان کاربر ریشه (root) | ||
| در داخل distrobox اجرا میکند. | ||
| نکات | ||
| توجه داشته باشید که میتوانید از –app یا –bin استفاده کنید، اما نه هر دو با هم. | ||
| [تصویر: | ||
| https://user-images.githubusercontent.com/598882/144294795-c7785620-bf68-4d1b-b251-1e1f0a32a08d.png | ||
| app-export | ||
| ] | ||
| app-export | ||
| نکته: برخی برنامههای electron مانند vscode و atom برای کارکرد از داخل | ||
| کانتینر به پرچمهای اضافی نیاز دارند؛ از گزینهٔ --extra-flags | ||
| برای ارائهٔ مجموعهای از پرچمها استفاده کنید، برای نمونه: | ||
| distrobox-export --app atom --extra-flags "--foreground" | ||
| distrobox generate-entry - ایجاد نماد میزکار برای یکی از distroboxهای موجود | ||
| "توضیحات (DESCRIPTION)" | ||
| دستور distrobox-generate-entry یک نماد میزکار برای یکی از distroboxهای موجود | ||
| ایجاد خواهد کرد. | ||
| این نماد در زمان حذف distrobox متناظر، پاک خواهد شد. | ||
| "خلاصه دستور (SYNOPSIS)" | ||
| distrobox generate-entry | ||
| --help/-h: نمایش این پیام | ||
| --all/-a: اجرا برای تمام distroboxها | ||
| --delete/-d: حذف مدخل | ||
| --icon/-i: مشخص کردن یک نماد سفارشی [/path/to/icon] (پیشفرض auto) | ||
| --root/-r: اجرا روی distroboxهای دارای دسترسی ریشه (rootful) | ||
| --verbose/-v: نمایش جزئیات بیشتر | ||
| --version/-V: نمایش نسخه | ||
| "مثالها (EXAMPLES)" | ||
| ایجاد یک مدخل برای یک کانتینر | ||
| distrobox generate-entry my-container-name | ||
| مشخص کردن یک نماد سفارشی برای مدخل | ||
| distrobox generate-entry my-container-name --icon /path/to/icon.png | ||
| ایجاد یک مدخل برای تمام distroboxها | ||
| distrobox generate-entry --all | ||
| حذف یک مدخل | ||
| distrobox generate-entry container-name --delete | ||
| "نام (NAME)" | ||
| distrobox-host-exec - اجرای دستورات روی سیستم میزبان از داخل کانتینر | ||
| "توضیحات (DESCRIPTION)" | ||
| دستور distrobox-host-exec امکان اجرای دستور را روی میزبان، در حین حضور در داخل | ||
| یک کانتینر فراهم میکند. | ||
| در پشت صحنه، distrobox-host-exec از host-spawn استفاده میکند؛ | ||
| پروژهای که امکان اجرای دوباره دستورات روی میزبان را فراهم میسازد. | ||
| اگر این ابزار پیدا نشود، از کاربر خواسته میشود تا آن را نصب کند. | ||
| "خلاصه دستور (SYNOPSIS)" | ||
| تنها کافی است هر دستور و تمام آرگومانهای آن (در صورت وجود) را به “distrobox-host-exec” | ||
| ارسال کنید. | ||
| --help/-h: نمایش این پیام | ||
| --verbose/-v: نمایش جزئیات بیشتر | ||
| --version/-V: نمایش نسخه | ||
| --yes/-Y: پاسخ خودکار بله به اعلانها: | ||
| در صورت عدم شناسایی host-spawn، این ابزار | ||
| روی سیستم مهمان نصب خواهد شد. | ||
| این رفتار هنگام اجرا در یک پوسته غیرتعاملی پیشفرض است. | ||
| اگر هیچ دستوری ارائه نشود، “$SHELL” را اجرا خواهد کرد. | ||
| به عنوان روشی دیگر، میتوانید نام یک دستور را به | ||
| distrobox-host-exec پیوند نمادین (symlink) دهید و سپس همان دستور را با نامش | ||
| از داخل یک کانتینر، روی میزبان فراخوانی کنید. | ||
| "مثالها (EXAMPLES)".SS اجرای دستورهای تکی | ||
| distrobox-host-exec ls | ||
| distrobox-host-exec bash -l | ||
| distrobox-host-exec flatpak run org.mozilla.firefox | ||
| distrobox-host-exec podman ps -a | ||
| ورود به پوسته میزبان | ||
| ~$: distrobox-host-exec # بدون دستور، "$SHELL" را روی میزبان اجرا میکند | ||
| ~$: distrobox-host-exec # این دستور اکنون روی میزبان اجرا میشود | ||
| You must run distrobox-host-exec inside a container! | ||
| ایجاد پیوند نمادین به دستورهای میزبان | ||
| برای ایجاد یک پیوند نمادین (symlink) به | ||
| distrobox-host-exec، از نام دستور میزبان استفاده کنید. | ||
| سپس میتوانید دستور میزبان را از داخل کانتینر فراخوانی کنید. | ||
| ~$: git # ما git را در کانتینر نداریم | ||
| bash: git: command not found | ||
| ~$: sudo ln -s /usr/bin/distrobox-host-exec /usr/local/bin/git | ||
| ~$: git version | ||
| git version 2.51.1 | ||
| میتوانید podman روی میزبان را از داخل کانتینر به صورت زیر کنترل کنید: | ||
| ~$: ln -s /usr/bin/distrobox-host-exec /usr/local/bin/podman | ||
| ~$: ls -l /usr/local/bin/podman | ||
| lrwxrwxrwx. 1 root root 51 Jul 11 19:26 /usr/local/bin/podman -> /usr/bin/distrobox-host-exec | ||
| ~$: podman version | ||
| ...این روی میزبان اجرا میشود... | ||
| "نام (NAME)" | ||
| distrobox-init - مقداردهی اولیه distrobox (نباید به صورت دستی اجرا شود) | ||
| "توضیحات (DESCRIPTION)" | ||
| مقداردهی اولیه distrobox (نباید به صورت دستی اجرا شود) | ||
| دستور distrobox-init نقطه ورود (entrypoint) یک distrobox ایجادشده است. | ||
| توجه داشته باشید که این دستور حتماً باید از داخل یک distrobox اجرا شود و | ||
| در صورت اجرا از روی سیستم میزبان، کار نخواهد کرد. | ||
| این برنامه برای استفاده دستی طراحی نشده است، بلکه توسط | ||
| distrobox-create برای تنظیم نقطه ورود کانتینر به کار میرود. | ||
| دستور distrobox-init نصب وابستگیهای ناموجود (مانند sudo)، راهاندازی | ||
| کاربر و گروهها، و سوار کردن (mount) دایرکتوریها از میزبان را جهت | ||
| اطمینان از یکپارچگی کامل بر عهده خواهد داشت. | ||
| "خلاصه دستور (SYNOPSIS)" | ||
| distrobox-init | ||
| --name/-n: نام کاربر | ||
| --user/-u: شناسه کاربر (UID) | ||
| --group/-g: شناسه گروه (GID) | ||
| --home/-d: مسیر دایرکتوری خانگی کاربر | ||
| --help/-h: نمایش این پیام | ||
| --additional-packages: بستههای تکمیلی برای نصب | ||
| --init/-I: استفاده یا عدم استفاده از init | ||
| --pre-init-hooks: دستورهایی برای اجرا پیش از init | ||
| --nvidia: تلاش برای یکپارچهسازی درایورهای nVidia میزبان در مهمان | ||
| --upgrade/-U: اجرای init در حالت ارتقا | ||
| --verbose/-v: نمایش خروجی با جزئیات بیشتر | ||
| --version/-V: نمایش نسخه | ||
| --: پایان آرگومانها؛ اجرای باقیمانده به عنوان دستور در حین init | ||
| "مثالها (EXAMPLES)" | ||
| distrobox-init --name test-user --user 1000 --group 1000 --home /home/test-user | ||
| distrobox-init --upgrade | ||
| distrobox list | ||
| distrobox-list | ||
| "توضیحات (DESCRIPTION)" | ||
| دستور distrobox-list کانتینرهای distrobox موجود را فهرست میکند. | ||
| این دستور آنها را شناسایی کرده و بهطور جداگانه از سایر کانتینرهای | ||
| عادی فهرست میکند. | ||
| "خلاصه دستور (SYNOPSIS)" | ||
| distrobox list | ||
| --help/-h: نمایش این پیام | ||
| --no-color: غیرفعال کردن قالببندی رنگی | ||
| --root/-r: اجرای podman/docker/lilipod با دسترسیهای ریشه. توجه داشته باشید در صورت نیاز به ریشه، این روش | ||
| نسبت به "sudo distrobox" ارجح است (نکته: در صورتی که استفاده از برنامهای غیر از 'sudo' برای دسترسیهای ریشه ضروری است، | ||
| آن را از طریق متغیر محیطی DBX_SUDO_PROGRAM یا متغیر پیکربندی 'distrobox_sudo_program' مشخص کنید) | ||
| --verbose/-v: نمایش جزئیات بیشتر | ||
| --version/-V: نمایش نسخه | ||
| "مثالها (EXAMPLES)" | ||
| distrobox-list | ||
| همچنین میتوانید از متغیرهای محیطی برای مشخص کردن مدیر کانتینر استفاده کنید: | ||
| DBX_CONTAINER_MANAGER="docker" distrobox-list | ||
| "محیط (ENVIRONMENT)" | ||
| DBX_CONTAINER_MANAGER | ||
| DBX_SUDO_PROGRAM | ||
| [IMAGE: | ||
| https://user-images.githubusercontent.com/598882/147831082-24b5bc2e-b47e-49ac-9b1a-a209478c9705.png | ||
| image | ||
| ] | ||
| image | ||
| "نام (NAME)" | ||
| distrobox rm | ||
| distrobox-rm | ||
| "توضیحات (DESCRIPTION)" | ||
| دستور distrobox-rm یکی از کانتینرهای distrobox موجود را حذف میکند. | ||
| "خلاصه دستور (SYNOPSIS)" | ||
| distrobox rm | ||
| --all/-a: حذف تمام distroboxها | ||
| --force/-f: اجبار در حذف | ||
| --rm-home: حذف پوشه خانگی متصلشده در صورتی که با پوشه کاربر میزبان متفاوت باشد | ||
| --root/-r: اجرای podman/docker/lilipod با دسترسیهای ریشه. توجه داشته باشید در صورت نیاز به ریشه، این روش | ||
| نسبت به "sudo distrobox" ارجح است (نکته: در صورتی که استفاده از برنامهای غیر از 'sudo' برای دسترسیهای ریشه ضروری است، | ||
| آن را از طریق متغیر محیطی DBX_SUDO_PROGRAM یا متغیر پیکربندی 'distrobox_sudo_program' مشخص کنید) | ||
| --help/-h: نمایش این پیام | ||
| --verbose/-v: نمایش جزئیات بیشتر | ||
| --version/-V: نمایش نسخه | ||
| "مثالها (EXAMPLES)" | ||
| distrobox-rm container-name [--force] [--all] | ||
| همچنین میتوانید از متغیرهای محیطی برای مشخص کردن مدیر کانتینر و نام آن استفاده کنید: | ||
| DBX_CONTAINER_MANAGER="docker" DBX_CONTAINER_NAME=test-alpine distrobox-rm | ||
| DBX_CONTAINER_MANAGER | ||
| DBX_CONTAINER_NAME | ||
| DBX_NON_INTERACTIVE | ||
| DBX_SUDO_PROGRAM | ||
| "نام (NAME)" | ||
| distrobox stop | ||
| distrobox-stop | ||
| "توضیحات (DESCRIPTION)" | ||
| دستور distrobox-stop یک distrobox در حال اجرا را متوقف میکند. | ||
| distroboxها حتی پس از خروج از آنها در حال اجرا باقی میمانند تا | ||
| ورودهای بعدی بسیار سریع انجام شوند. | ||
| از این طریق میتوان آنها را متوقف کرد. | ||
| "خلاصه دستور (SYNOPSIS)" | ||
| distrobox stop | ||
| --all/-a: متوقف کردن همه distroboxها | ||
| --yes/-Y: غیرتعاملی، توقف بدون پرسش | ||
| --help/-h: نمایش این پیام | ||
| --root/-r: اجرای podman/docker/lilipod با امتیازات root. توجه داشته باشید که در صورت نیاز به root، | ||
| این روش بر "sudo distrobox" ارجحیت دارد (نکته: در صورت لزوم استفاده از برنامهای غیر از | ||
| 'sudo' برای امتیازات root، آن را از طریق متغیر محیطی DBX_SUDO_PROGRAM یا متغیر | ||
| پیکربندی 'distrobox_sudo_program' مشخص کنید) | ||
| --verbose/-v: نمایش جزئیات بیشتر | ||
| --version/-V: نمایش نسخه | ||
| "مثالها (EXAMPLES)" | ||
| distrobox-stop container-name1 container-name2 | ||
| distrobox-stop container-name | ||
| distrobox-stop --all | ||
| همچنین میتوانید از متغیرهای محیطی برای تعیین مدیر کانتینر و نام آن | ||
| استفاده کنید: | ||
| DBX_CONTAINER_MANAGER="docker" DBX_CONTAINER_NAME=test-alpine distrobox-stop | ||
| "متغیرهای محیطی (ENVIRONMENT VARIABLES)" | ||
| DBX_CONTAINER_MANAGER | ||
| DBX_CONTAINER_NAME | ||
| DBX_NON_INTERACTIVE | ||
| DBX_SUDO_PROGRAM | ||
| "نام (NAME)" | ||
| distrobox-upgrade | ||
| "توضیحات (DESCRIPTION)" | ||
| دستور distrobox-upgrade وارد فهرست کانتینرهای مشخصشده میشود و با | ||
| استفاده از مدیر بستهٔ کانتینر، ارتقا را انجام میدهد. | ||
| "خلاصه دستور (SYNOPSIS)" | ||
| distrobox upgrade | ||
| --help/-h: نمایش این پیام | ||
| --all/-a: انجام برای همه distroboxها | ||
| --running: انجام فقط برای distroboxهای در حال اجرا | ||
| --root/-r: اجرای podman/docker/lilipod با امتیازات root. توجه داشته باشید که در صورت نیاز به root، | ||
| این روش بر "sudo distrobox" ارجحیت دارد (نکته: در صورت لزوم استفاده از برنامهای غیر از | ||
| 'sudo' برای امتیازات root، آن را از طریق متغیر محیطی DBX_SUDO_PROGRAM یا متغیر | ||
| پیکربندی 'distrobox_sudo_program' مشخص کنید) | ||
| --verbose/-v: نمایش جزئیات بیشتر | ||
| --version/-V: نمایش نسخه | ||
| ارتقای تمام distroboxها | ||
| distrobox-upgrade --all | ||
| ارتقای تمام distroboxهای در حال اجرا | ||
| distrobox-upgrade --all --running | ||
| ارتقای یک distrobox مشخص | ||
| distrobox-upgrade alpine-linux | ||
| ارتقای فهرستی از distroboxها | ||
| distrobox-upgrade alpine-linux ubuntu22 my-distrobox123 | ||
| بهروزرسانی خودکار تمام distroها | ||
| میتوانید یک سرویس systemd بسازید تا distrobox-upgrade بهصورت خودکار اجرا شود؛ این مثال نحوهٔ اجرای روزانهٔ آن را نشان میدهد: | ||
| ~/.config/systemd/user/distrobox-upgrade.service | ||
| [Unit] | ||
| Description=distrobox-upgrade Automatic Update | ||
| [Service] | ||
| Type=simple | ||
| ExecStart=distrobox-upgrade --all | ||
| StandardOutput=null | ||
| ~/.config/systemd/user/distrobox-upgrade.timer | ||
| [Unit] | ||
| Description=distrobox-upgrade Automatic Update Trigger | ||
| [Timer] | ||
| OnBootSec=1h | ||
| OnUnitInactiveSec=1d | ||
| [Install] | ||
| WantedBy=timers.target | ||
| سپس کافی است دستور زیر را اجرا کنید: | ||
| systemctl --user daemon-reload && systemctl --user enable --now distrobox-upgrade.timer |
| Mar 2026 | Distrobox |