انجمنهای فارسی اوبونتو
جامعه کاربران => معرفی نرمافزار => نویسنده: seyal در 25 تیر 1405، 05:37 بظ
-
خوب داشتم در مورد دسترسی به پکیجهای خاصی که شاید تو توزیع خودمون وجود نداشته باشه یا نسخه متفاوتی داشته باشه جستجو میکردم
که تو یکی از پیشنهادات با DistroBox مواجه شدم
عجیب بود برام که چرا قبلا اسم این پروژه به این خوبی به گوشم نخورده بود.
جالبی قضیه اینجاست که بعضیا اون رو حتی با Flatpak به عنوان راهحلی جایگزین برای نصب نرمافزار هم مقایسه میکنند(البته کلا هدف این دوتا متفاوته و هر یک کاربرد خودشون رو دارند)
اما چه قابلیتی به ما میده؟
شما میتونید با استفاده از Distro Box روی توزیع اصلی خودتون(مثلا دبیان پایدار) به پکیجهای توزیعهای دیگه مثل آرچ و فدورا و ... دسترسی داشته باشید و نرمافزارهاشون رو نصب و اجرا کنید بدون اینکه مثل ویرچوال باکس بار پردازشی زیادی به سیستم وارد بشه.
حتی استفاده از نرمافزارهای GUI این توزیعها هم به سادگی با distrobox امکانپذیره.
میتونید میزکارهای مختلف مثل KDE و XFCE و .. رو هم بدون آسیب به پکیجها و سازگاری توزیع خودتون نصب و امتحان کنید.
اساس کار نرمافزار تکنولوژی جدیدی نیست و از قبل وجود داشته اما این پروژه اومده و اون فرایند رو به شدت بهینه و ساده کرده.
به این صورت عمل میکنه که از کانتینتر و ایمیج اون دیسترو استفاده میکنه
مثل docker و podman
برای نصب و آشنایی با اون دیدن این ویدیو یوتیوب رو توصیه میکنم(اگه کسی از پلتفرم آزاد ویدیو پیدا کرد بفرسته):
https://www.youtube.com/watch?v=eiDt4O6UPRw
-
خوب امروز با شرایط غیرمنتظرهای مواجه شدم استفاده از همین روش خیلی به دردم خورد:
فرض کنید میخواید پکیج خاصی رو نصب کنید. تو سیستم خودتون ارور conflict ميده و نمیخواید هم که سیستمتون و پکیجهاش رو خراب کنید که برای این پکیجی که میخوام در ادامه بگم پیش اومد:
Solving dependencies... Error!
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
Unsatisfied dependencies:
whitedns-desktop : Depends: libwebkit2gtk-4.0-37 but it is not installable
Error: Unable to satisfy dependencies. Reached two conflicting assignments:
1. whitedns-desktop:amd64=1.0.0-beta5 is selected for install
2. whitedns-desktop:amd64 Depends libwebkit2gtk-4.0-37
but none of the choices are installable:
[no choices]
همونطور که میبینید تفاوت نسخه در وابستگیها وجود داره و نصب اجباری اون باعث آسیب به بستهها و بروزرسانی سیستم میشه که توصیه نمیشه.
به ترتیب به این روش عمل میکنیم:
۱- نصب DistroBox:
sudo dnf install distrobox
۲- گرفتن یک ایمیج سازگار و نصب و نامگذاری اون:
distrobox create -n whitedns-box -i ubuntu:22.04
۳- وارد شدن به این ایمیج(این مرحله چون setup اولیه هست کمی طول میکشه):
distrobox enter whitedns-box
۴- و حالا نصب مجدد پکیج موردنظر:
sudo apt update
sudo apt install /home/USER/Downloads/WhiteDNS-1.0.0-beta5-linux-amd64.deb
به سادگی نصب انجام شد و پیغام موفقآمیز بودن هم نمایش داده شد:
Processing triggers for dbus (1.12.20-2ubuntu4.1) ...
Setting up at-spi2-core (2.44.0-3) ...
Setting up glib-networking:amd64 (2.72.0-1) ...
Setting up xdg-desktop-portal-gtk (1.14.0-1build1) ...
Setting up libsoup2.4-1:amd64 (2.74.2-3ubuntu0.7) ...
Setting up gstreamer1.0-plugins-good:amd64 (1.20.3-0ubuntu1.6) ...
Setting up libwebkit2gtk-4.0-37:amd64 (2.50.4-0ubuntu0.22.04.1) ...
Setting up whitedns-desktop (1.0.0-beta5) ...
Processing triggers for dictionaries-common (1.28.14) ...
یک نکته:
از اونجایی که Distrobox به طور پیشفرض دایرکتوری خانه شما (/home/seal) رو با میزبان به اشتراک میزاره، کانتینر میتونه پوشه دانلودهای شما را به طور خودکار ببینه.
روش بهتر هم اینه که ابتدا برای نصب اون رو تو خود کانتینتر کپی کنید و بعد نصب کنید که آخرش اخطار نده هرچند روش قبلی هم بدون مشکل نصب و اجرا میشه:
cp /home/USER/Downloads/WhiteDNS-1.0.0-beta5-linux-amd64.deb /tmp/
sudo apt install /tmp/WhiteDNS-1.0.0-beta5-linux-amd64.deb
۵- و در نهایت ایجاد شورتکات و افزودن به application menu سیستم اصلی:
distrobox-export --app whitedns-desktop
این هم پیام افزوده شدن:
📦[USER@whitedns-box Downloads]$ distrobox-export --app whitedns-desktop
Application whitedns-desktop successfully exported.
OK!
whitedns-desktop will appear in your applications list in a few seconds.تمام.
به همین سادگی بدون به هم ریختن سیستم و درگیری با فرایند کامپایل تونستیم یک پکیج ناسازگار رو نصب کنیم.
یک نکته مهم در مورد این روش و نرمافزارهای V2Ray:
اینکه چطور کانتینر میتواند برای سیستم اصلی پروکسی تنظیم کند، به دو دلیل فنی زیر است:
۱. اشتراکگذاری کامل شبکه (Network Sharing)
به طور پیشفرض، Distrobox کانتینر را در حالت host network اجرا میکند. این یعنی:
* کانتینر کارت شبکه مجزا ندارد و از همان کارت شبکه سیستم اصلی شما استفاده میکند.
* پورتها کاملاً مشترک هستند اگر برنامه V2Ray را داخل کانتینر روی پورت `10808` اجرا کنید، این پورت روی سیستم اصلی شما (Host) نیز دقیقاً روی `localhost:10808` یا `127.0.0.1:10808` در دسترس خواهد بود.
* بنابراین، مرورگر سیستم اصلی شما به راحتی میتواند ترافیک خود را به این پورت بفرستد.
۲. دسترسی به تنظیمات سیستم اصلی (از طریق کانالهای ارتباطی)
برنامههایی مانند WhiteDNS یا ابزارهای مشابه، برای اعمال پروکسی سراسری روی سیستم اصلی (Host)، از ابزارهایی مثل `gsettings` (در میزکار GNOME) یا تغییر متغیرهای محیطی سیستم (Environment Variables) استفاده میکنند.
Distrobox به طور پیشفرض سوکتهای ارتباطی میزکار (بخش D-Bus و X11/Wayland) را بین کانتینر و سیستم اصلی به اشتراک میگذارد. به همین دلیل:
* برنامه داخل کانتینر میتواند دستور تغییر تنظیمات پروکسی را به میزکار سیستم اصلی ارسال کند.
* سیستم اصلی این دستور را دریافت کرده و پروکسی را روی شبکه اعمال میکند (که مسیر آن به همان پورت مشترک داخل کانتینر ختم میشود).
در حالی که حالتهای استاندارد پروکسی SOCKS5 و HTTP بدون هیچ مشکلی کار میکنند، ممکن است هنگام استفاده از حالت TUN (حالت VPN که تمام ترافیک سیستم را از طریق V2Ray هدایت میکند) با مشکل مواجه شوید. این حالت به دسترسی روت (روتاسکیپ) و ایجاد یک کارت شبکه مجازی (tun0) نیاز دارد. از آنجایی که کانتینرهای Distrobox به طور پیشفرض بدون دسترسیهای حساس امنیتی (Unprivileged) ساخته میشوند، این قابلیت در حالت عادی کار نخواهد کرد.
اگر به حالت TUN/VPN نیاز دارید، باید کانتینر Distrobox خود را با دسترسی روت ایجاد کنید:
distrobox create --root -n v2ray-admin -i archlinux:latest
-
ویکی آرچلینوکس هم مراجعه کنید تو این لینک:
https://wiki.archlinux.org/title/Distrobox
اطلاعات خوبی در مورد تنظیم و نکات اسفاده از دیستروباکس داده.
مثلا من مشکل دسترسی به dbus داشتم که با انجام اقدامات آخر این مقاله درست شد.