11
نصب، راهاندازی و بروزآوری / با چه روشی تو سیستم لینوکسی خودمون برنامه نصب کنیم؟
« آخرین ارسال توسط seyal 10 امرداد 1405، 11:46 قظ »اوایل همیشه این سوال فکرم رو درگیر میکرد که از بین اینهمه روش مختلف برای نصب برنامه در لینوکس، بالاخره کدوم رو باید انتخاب کنم؟ نسخه مخازن رسمی، فلتپک (Flatpak)، اسنپ (Snap)، دیستتروباکس (Distrobox) یا روشهای دیگه؟ اصلاً چرا باید اینهمه تنوع در روشهای نصب نرمافزار وجود داشته باشه؟
بعد از کلی آزمایش، دستکاری سیستم و خوندن فرومها و مقالات مختلف، بالاخره تونستم به یک دستهبندی و نتیجهگیری منطقی برسم که میخوام تو این مقاله باهاتون به اشتراک بذارم.
اصل طلایی: سیستم رو خراب نکنید! (Don't Break Debian)
قبل از بررسی روشها، باید مهمترین اصل بازی رو یاد بگیریم؛ اصلی که تو ویکی دبیان به زیبایی با عنوان «دبیان را خراب نکنید!» (Don't Break Debian) اومده. این قانون فقط مخصوص دبیان نیست و تقریبا شامل حال تمام توزیعها میشه.
وقتی از سیستمعامل به صورت روزمره استفاده میکنید، هماهنگی پکیجها و عدم تداخلشون حرف اول رو میزنه. به عبارت سادهتر: ما هرگز کمی بروزتر بودن رو فدای break شدن (از کار افتادن) سیستم نمیکنیم.
یکی از مهمترین عادتهای یک کاربر یا توسعهدهنده موفق لینوکس، احترام به پایداری سیستم اصلیه. اگر پکیج اضافهای از یک مخزن خاص میخواید یا کاربردهای ویژهای مد نظرتونه، به جای دستکاری و ناپایدار کردن سیستمعامل پایه، باید سراغ راهحلهای ایزوله مثل Distrobox (که مثل داکر اما برای زیرسیستم شخصی عمل میکنه)، Flatpak و... برید. همیشه اول باید بتونید برنامه رو روی یک نسخه پایدار بسازید و اجرا کنید، بعد در صورت نیاز اون رو به نسخههای جدیدتر آپدیت کرده و مطابقت بدید.
با در نظر گرفتن این اصل، بریم سراغ بررسی روشهای نصب:
۱. مخازن پیشفرض توزیع (Official Repositories)
مطمئنترین و بیدردسرترین روش، استفاده از پکیجمنیجر پیشفرض خود توزیعه؛ ابزارهایی مثل apt ،dnf یا pacman که هر کدوم معماری و توزیعهای مشخصی رو پوشش میدن.
کاربرد اصلی: نصب ابزارها و برنامههای پایه سیستم (Core Utilities) مثل ادیتورهای متنی، زبانهای برنامهنویسی و ابزارهای سیستمی.
چرا این روش؟ چون برای این ابزارها، پایداری و سازگاری حداکثری با سیستمعامل بسیار حیاتیتر از «آخرین نسخه بودن» است.
یک نکته مهم: اگر واقعاً برای ابزارهای پایه هم مکرراً به آخرین نسخه نیاز دارید، به جای دستکاری مخازن، بهتره کلاً توزیع خودتون رو عوض کنید و سراغ توزیعهایی برید که نسخههای بروزتر رو رسماً انتشار میدن؛ مثلاً اوبونتو یا فدورا، و اگر باز هم بروزتر میخواید، توزیعهای غلطان (Rolling Release) مثل اوپنسوزه تامبلوید (OpenSUSE Tumbleweed) یا آرچ لینوکس (Arch Linux).
پس چرا همه فقط از پکیجمنیجر توزیع خودشون استفاده نمیکنند؟
چون در کنار تمام مزایا، با چند چالش مواجه میشیم:
بروز نبودن برخی برنامهها (به دلیل سیاستهای پایداری توزیع).
محدود بودن برنامههای پشتیبانی شده
خطر بههمریختن توزیع، کثیف شدن سیستم و بروز مشکل هنگام دریافت و اعمال آپدیتها در صورت افزودن مخازن غیررسمی.
همین مشکلات باعث شد روشهای جدیدتری توسعه پیدا کنند که در ادامه بررسی میکنیم.
۲. مخازن بکپورت دبیان (Debian Backports)
اگر از دبیان پایدار (Debian Stable) استفاده میکنید، این مخازن پل امنی هستند برای اینکه نرمافزارهای انتخابی خودتون رو بروز کنید، بدون اینکه مجبور باشید پایداری کل سیستم رو با رفتن به شاخههای Testing یا Unstable به خطربندازید.
سناریوی واقعی: فرض کنید دبیان استیبل رو روی یک سرور یا سیستم سیستم روزمره نصب کردید و همه چیز عالی کار میکنه. اما یک کارت گرافیک جدید خریدید که هسته (Kernel) ۲ سال پیشِ دبیان استیبل اون رو نمیشناسه!
راهحل: به جای ارتقای کل سیستمعامل به یک نسخه ناپایدار، مخزن Backports رو فعال میکنید.
نحوه کار: توسعهدهندگان دبیان، برنامه یا کربل جدید رو از شاخههای Testing/Sid میگیرند و اون رو با کتابخانههای قدیمی و امنِ Debian Stable مجدداً کامپایل میکنند.
نتیجه: شما میتونید فقط کربل یا مثلاً LibreOffice رو به آخرین نسخه ارتقا بدید، در حالی که ۹۹٪ سیستمعامل شما کاملاً دستنخورده، دستنیافتنی و پایدار باقی میمونه.
۳. مخازن شخص ثالث و PPAها (PPA / AUR / Copr)
در اوبونتو با PPA، در آرچ با AUR و در فدورا با Fedora Copr طرف هستیم. این مخازن در نگاه اول بسیار جذاب به نظر میرسند، اما استفاده مداوم و بیدرنگ از اونها دقیقاً اصل اول یعنی «دبیان (سیستم) را خراب نکنید» رو زیر سوال میبره.
دیدگاه تجربی من درباره این روش: تا جایی که امکان داره برای نصب پکیجها سراغ Third-partyها نرید و ترکیب پیشفرض سیستمعامل رو دستکاری نکنید؛ چرا که این کار موقع آپدیت، ریکاوری و حفظ امنیت، باگها و مشکلات غیرمنتظرهای ایجاد میکنه.
چه زمانی مجاز هستیم؟ فقط زمانی که پکیجی واقعاً ارزشش رو داشته باشه، وابستگیها (Dependencies) و کتابخانههای سنگینی به سیستم اضافه نکنه که پایداری رو تهدید کنه، و مهمتر از همه بدانید چطور در صورت نیاز تمیز حتماً پاکش کنید (Clean Uninstall).
مثال شخصی: من خودم برای نصب افزونه better blur در محیط KDE یا نصب ابزار starship (برای زیباسازی ترمینال) از این روش استفاده کردم. این روش بیشتر به درد پکیجهای سبک و خاصی میخوره که در مخازن رسمی نیستند و شما به نوعی "فن" اون پکیج هستید! اگه برای پکیجهای سنگین میخواید از این روش استفاده کنید توصیه من استفاده به همراه Distrobox هست که جلوتر میگم.
(نکته: این قابلیت در همه توزیعها یکسان نیست؛ مثلاً در دبیان پایدار مفهوم PPA به شکل اوبونتو وجود نداره).
۴. شاخههای تست و ناپایدار (Debian Testing / Sid - Unstable)
تقریباً اکثر توزیعها چنین شاخههایی دارند، اما استفاده از اونها به عنوان پکیجمنیجر سیستمِ استفاده روزمره (Daily Driver) اصلاً توصیه نمیشه.
چرا دبیان Sid (Unstable) برای استفاده روزمره مناسب نیست؟
مکانیزم کار: وقتی توسعهدهندهای نسخه جدیدی از یک نرمافزار رو منتشر میکنه، اون پکیج ابتدا وارد Sid میشه.
ریسک بالا: Sid هیچ لایه امنیتی یا لایهی تستِ تاخیری نداره. اگر پکیجی با یک باگ بحرانی آپلود بشه که محیط گرافیکی یا روند بوت سیستم رو بشکنه، کاربر Sid همان لحظه اون شکست رو تجربه خواهد کرد!
مشکل دانگرید (Downgrade): اگر در دبیان استیبل مخازن Sid رو فعال و سیستم رو آپگرید کنید، سیستم از حالت اورجینال خارج میشه. فرایند Downgrade هم به طور پیشفرض پشتیبانی نمیشه. تنها راه برگشت اینه که یا سیستم رو از نو نصب کنید یا مخازن رو به Stable برگردونید و منتظر بمونید تا نسخه جدید دبیان (هر دو سال یکبار!) منتشر بشه تا پکیجهای پایدار روی پکیجهای Sid شما Overwrite بشن. البته اگه کسی Sid را وارد Stable کرده باشه، لزوماً با انتشار نسخه بعدی Debian مشکلش حل نمیشه و در بسیاری از موارد نصب مجدد سیستم یا عملیات Downgrade پیچیده لازمه.
اگرچه تو فرومها کاربرانی رو میبینیم که میگن «من چند ماهه دارم بدون مشکل از Sid استفاده میکنم»، اما حقیقت اینه که این شاخهها برای تستهای اتوماتیک، توسعهدهندگان مخازن و کسانی ساخته شده که عاشق نرمافزارهای Bleeding-edge هستند و دانش کافی برای رفع مشکلات سیستم از طریق ترمینال رو دارند.
(پایان بخش اول - در بخش بعدی سراغ روشهای مدرنتر مثل Flatpak، Snap، AppImage و Distrobox خواهیم رفت...)
بعد از کلی آزمایش، دستکاری سیستم و خوندن فرومها و مقالات مختلف، بالاخره تونستم به یک دستهبندی و نتیجهگیری منطقی برسم که میخوام تو این مقاله باهاتون به اشتراک بذارم.
اصل طلایی: سیستم رو خراب نکنید! (Don't Break Debian)
قبل از بررسی روشها، باید مهمترین اصل بازی رو یاد بگیریم؛ اصلی که تو ویکی دبیان به زیبایی با عنوان «دبیان را خراب نکنید!» (Don't Break Debian) اومده. این قانون فقط مخصوص دبیان نیست و تقریبا شامل حال تمام توزیعها میشه.
وقتی از سیستمعامل به صورت روزمره استفاده میکنید، هماهنگی پکیجها و عدم تداخلشون حرف اول رو میزنه. به عبارت سادهتر: ما هرگز کمی بروزتر بودن رو فدای break شدن (از کار افتادن) سیستم نمیکنیم.
یکی از مهمترین عادتهای یک کاربر یا توسعهدهنده موفق لینوکس، احترام به پایداری سیستم اصلیه. اگر پکیج اضافهای از یک مخزن خاص میخواید یا کاربردهای ویژهای مد نظرتونه، به جای دستکاری و ناپایدار کردن سیستمعامل پایه، باید سراغ راهحلهای ایزوله مثل Distrobox (که مثل داکر اما برای زیرسیستم شخصی عمل میکنه)، Flatpak و... برید. همیشه اول باید بتونید برنامه رو روی یک نسخه پایدار بسازید و اجرا کنید، بعد در صورت نیاز اون رو به نسخههای جدیدتر آپدیت کرده و مطابقت بدید.
با در نظر گرفتن این اصل، بریم سراغ بررسی روشهای نصب:
۱. مخازن پیشفرض توزیع (Official Repositories)
مطمئنترین و بیدردسرترین روش، استفاده از پکیجمنیجر پیشفرض خود توزیعه؛ ابزارهایی مثل apt ،dnf یا pacman که هر کدوم معماری و توزیعهای مشخصی رو پوشش میدن.
کاربرد اصلی: نصب ابزارها و برنامههای پایه سیستم (Core Utilities) مثل ادیتورهای متنی، زبانهای برنامهنویسی و ابزارهای سیستمی.
چرا این روش؟ چون برای این ابزارها، پایداری و سازگاری حداکثری با سیستمعامل بسیار حیاتیتر از «آخرین نسخه بودن» است.
یک نکته مهم: اگر واقعاً برای ابزارهای پایه هم مکرراً به آخرین نسخه نیاز دارید، به جای دستکاری مخازن، بهتره کلاً توزیع خودتون رو عوض کنید و سراغ توزیعهایی برید که نسخههای بروزتر رو رسماً انتشار میدن؛ مثلاً اوبونتو یا فدورا، و اگر باز هم بروزتر میخواید، توزیعهای غلطان (Rolling Release) مثل اوپنسوزه تامبلوید (OpenSUSE Tumbleweed) یا آرچ لینوکس (Arch Linux).
پس چرا همه فقط از پکیجمنیجر توزیع خودشون استفاده نمیکنند؟
چون در کنار تمام مزایا، با چند چالش مواجه میشیم:
بروز نبودن برخی برنامهها (به دلیل سیاستهای پایداری توزیع).
محدود بودن برنامههای پشتیبانی شده
خطر بههمریختن توزیع، کثیف شدن سیستم و بروز مشکل هنگام دریافت و اعمال آپدیتها در صورت افزودن مخازن غیررسمی.
همین مشکلات باعث شد روشهای جدیدتری توسعه پیدا کنند که در ادامه بررسی میکنیم.
۲. مخازن بکپورت دبیان (Debian Backports)
اگر از دبیان پایدار (Debian Stable) استفاده میکنید، این مخازن پل امنی هستند برای اینکه نرمافزارهای انتخابی خودتون رو بروز کنید، بدون اینکه مجبور باشید پایداری کل سیستم رو با رفتن به شاخههای Testing یا Unstable به خطربندازید.
سناریوی واقعی: فرض کنید دبیان استیبل رو روی یک سرور یا سیستم سیستم روزمره نصب کردید و همه چیز عالی کار میکنه. اما یک کارت گرافیک جدید خریدید که هسته (Kernel) ۲ سال پیشِ دبیان استیبل اون رو نمیشناسه!
راهحل: به جای ارتقای کل سیستمعامل به یک نسخه ناپایدار، مخزن Backports رو فعال میکنید.
نحوه کار: توسعهدهندگان دبیان، برنامه یا کربل جدید رو از شاخههای Testing/Sid میگیرند و اون رو با کتابخانههای قدیمی و امنِ Debian Stable مجدداً کامپایل میکنند.
نتیجه: شما میتونید فقط کربل یا مثلاً LibreOffice رو به آخرین نسخه ارتقا بدید، در حالی که ۹۹٪ سیستمعامل شما کاملاً دستنخورده، دستنیافتنی و پایدار باقی میمونه.
۳. مخازن شخص ثالث و PPAها (PPA / AUR / Copr)
در اوبونتو با PPA، در آرچ با AUR و در فدورا با Fedora Copr طرف هستیم. این مخازن در نگاه اول بسیار جذاب به نظر میرسند، اما استفاده مداوم و بیدرنگ از اونها دقیقاً اصل اول یعنی «دبیان (سیستم) را خراب نکنید» رو زیر سوال میبره.
دیدگاه تجربی من درباره این روش: تا جایی که امکان داره برای نصب پکیجها سراغ Third-partyها نرید و ترکیب پیشفرض سیستمعامل رو دستکاری نکنید؛ چرا که این کار موقع آپدیت، ریکاوری و حفظ امنیت، باگها و مشکلات غیرمنتظرهای ایجاد میکنه.
چه زمانی مجاز هستیم؟ فقط زمانی که پکیجی واقعاً ارزشش رو داشته باشه، وابستگیها (Dependencies) و کتابخانههای سنگینی به سیستم اضافه نکنه که پایداری رو تهدید کنه، و مهمتر از همه بدانید چطور در صورت نیاز تمیز حتماً پاکش کنید (Clean Uninstall).
مثال شخصی: من خودم برای نصب افزونه better blur در محیط KDE یا نصب ابزار starship (برای زیباسازی ترمینال) از این روش استفاده کردم. این روش بیشتر به درد پکیجهای سبک و خاصی میخوره که در مخازن رسمی نیستند و شما به نوعی "فن" اون پکیج هستید! اگه برای پکیجهای سنگین میخواید از این روش استفاده کنید توصیه من استفاده به همراه Distrobox هست که جلوتر میگم.
(نکته: این قابلیت در همه توزیعها یکسان نیست؛ مثلاً در دبیان پایدار مفهوم PPA به شکل اوبونتو وجود نداره).
۴. شاخههای تست و ناپایدار (Debian Testing / Sid - Unstable)
تقریباً اکثر توزیعها چنین شاخههایی دارند، اما استفاده از اونها به عنوان پکیجمنیجر سیستمِ استفاده روزمره (Daily Driver) اصلاً توصیه نمیشه.
چرا دبیان Sid (Unstable) برای استفاده روزمره مناسب نیست؟
مکانیزم کار: وقتی توسعهدهندهای نسخه جدیدی از یک نرمافزار رو منتشر میکنه، اون پکیج ابتدا وارد Sid میشه.
ریسک بالا: Sid هیچ لایه امنیتی یا لایهی تستِ تاخیری نداره. اگر پکیجی با یک باگ بحرانی آپلود بشه که محیط گرافیکی یا روند بوت سیستم رو بشکنه، کاربر Sid همان لحظه اون شکست رو تجربه خواهد کرد!
مشکل دانگرید (Downgrade): اگر در دبیان استیبل مخازن Sid رو فعال و سیستم رو آپگرید کنید، سیستم از حالت اورجینال خارج میشه. فرایند Downgrade هم به طور پیشفرض پشتیبانی نمیشه. تنها راه برگشت اینه که یا سیستم رو از نو نصب کنید یا مخازن رو به Stable برگردونید و منتظر بمونید تا نسخه جدید دبیان (هر دو سال یکبار!) منتشر بشه تا پکیجهای پایدار روی پکیجهای Sid شما Overwrite بشن. البته اگه کسی Sid را وارد Stable کرده باشه، لزوماً با انتشار نسخه بعدی Debian مشکلش حل نمیشه و در بسیاری از موارد نصب مجدد سیستم یا عملیات Downgrade پیچیده لازمه.
اگرچه تو فرومها کاربرانی رو میبینیم که میگن «من چند ماهه دارم بدون مشکل از Sid استفاده میکنم»، اما حقیقت اینه که این شاخهها برای تستهای اتوماتیک، توسعهدهندگان مخازن و کسانی ساخته شده که عاشق نرمافزارهای Bleeding-edge هستند و دانش کافی برای رفع مشکلات سیستم از طریق ترمینال رو دارند.
(پایان بخش اول - در بخش بعدی سراغ روشهای مدرنتر مثل Flatpak، Snap، AppImage و Distrobox خواهیم رفت...)
آخرین ارسالها