11
نصب، راهاندازی و بروزآوری / پاسخ : با چه روشی تو سیستم لینوکسی خودمون برنامه نصب کنیم؟
« آخرین ارسال توسط seyal 10 امرداد 1405، 04:33 بظ »همیشه این سوال تو ذهنم بود که «چرا اینقدر جبههگیری و دوگانگی در جامعه متنباز (Open-Source) در برابر اسنپ وجود داره؟ اگر واقعاً بده، چرا حذفش نمیکنند یا اصلاحش نمیکنند؟»
اینجاست که داستان خیلی جذاب میشه...
اسنپ ابزار پکیجبندی شرکت کانونیکال (Canonical) سازنده اوبونتو هست که هدفی مشابه فلتپک داره (حمل همه وابستگیها همراه برنامه).
اما اسنپ برای کاربر دسکتاپ معمولاً انتخاب محبوبی نیست.
۴ دلیل اصلی که کاربران دسکتاپ از اسنپ شاکی هستند:
سرعت بسیار پایین در اولین اجرا (Cold Boot Delay): اسنپ از ایمیجهای SquashFS و لایههای ایزولهسازی مختلف استفاده میکنه که میتونن باعث افزایش زمان اولین اجرای برنامه بشن.
شلوغ کردن خروجی ترمینال: اسنپ برای هر برنامهای که نصب میکنه یک درایو مجازی میسازه. وقتی تو ترمینال دستور استاندارد df -h رو برای دیدن وضعیت هارد میزنید، با دهها سطر شلوغ و ساختگی /dev/loop مواجه میشید که دیدن وضعیت هارد اصلی رو کلافهکننده میکنه.
یکپارچگی ضعیف با تم و ظاهر سیستم: در برخی توزیعها و تمها هنوز به خوبی Flatpak نیست.
انحصارطلبی کانونیکال (بسته بودن سمت سرور): برعکس فلتپک که هر کسی میتونه براش استور شخصی بزنه، سمت سرورِ اسنپاستور کاملاً کدبسته (Closed-source) و در انحصار کانونیکال است. این موضوع یکی از مهمترین انتقادهای بخشی از جامعهٔ لینوکس به اسنپ است.
شاید بگید پس چرا بقیه همه نمیان سراغ فلتپک با سرور شخصی خودشون؟ جدا از اینکه راهاندازی و نگهداری یک سرور فلتپک نیاز به دانش فنی، هزینه و منابع زیادی داره، باید محدودیتهای ذاتی فلتپک رو بشناسیم:
چرا فلتپک برای ابزارهای سیستمی و پایه (Core/CLI) مناسب نیست؟
فلتپک اصولا برای برنامههای گرافیکی دسکتاپ (GUI) ساخته شده است. فلتپک:
به هسته (Kernel) دسترسی نداره و نمیتونه ماژولها یا درایورها رو مدیریت کنه.
توانایی ساخت سرویسهای پسزمینه سیستمی (Systemd Daemons) رو نداره.
دسترسی به سختافزار و دایرکتوری ریشه (/) رو برای حفظ امنیت مسدود میکنه.
اینجاست که نقش واقعی اسنپ مشخص میشه!
کانونیکال اسنپ رو فراتر از یک ابزار دسکتاپ طراحی کرد. اسنپ علاوه بر حالتهای ایزوله (Strict و Devmode)، حالتی به اسم Classic Confinement داره که ایزولهسازی رو کلاً کنار میذاره و مثل بستههای سنتی، دسترسی کامل به دایرکتوری ریشه و سختافزار میده!
به همین دلیل اسنپ در موارد زیر کارایی بالایی داره:
ابزارهای خط فرمان (CLI) و برنامههای سروری: مثل ابزارهای شبکه (v2ray/Xray)، سرویس Gitea یا کامپایلرهایی مثل Go.
سرویسهای پسزمینه (Daemons): اسنپ میتونه سرویسهایی بسازه که با بالا آمدن لینوکس در پسزمینه اجرا بشن.
جدای از این انتشار برنامه در اسنپاستور برای توسعهدهندگان بسیار سادهتر از فلتپک است.
اگر چند تکهٔ دیگه از پازل روش تجاری کانونیکال رو کنار هم بذاریم، همهچیز روشنتر میشه: بخش مهمی از بازار هدف اسنپ اصلاً کاربر دسکتاپ نیست!
بخش قابلتوجهی از درآمد و تمرکز کانونیکال از لینوکسهای نصبشده روی کیوسکهای شهری، دستگاههای ATM، تجهیزات پزشکی، تجهیزات IoT و سرورهای ابری به دست میاد. برای همین هم Snap از همون اول طوری طراحی شده که نیازهای این سیستمها رو برآورده کنه؛ چون برای یک ATM اصلاً مهم نیست یه برنامه ۳ ثانیه دیرتر باز بشه یا خروجی دستور df شلوغتر باشه. مهم اینه که سیستم تحت هیچ شرایطی کرش نکنه، پکیجها ایزوله و قابلاعتماد باشن، آپدیتهای امنیتی بهموقع اعمال بشن و در صورت بروز مشکل هم بشه خیلی سریع به نسخهٔ قبلی برگشت؛ بدون اینکه لازم باشه کل سیستم دستکاری یا ارتقا داده بشه.
یادتونه گفتیم یکی از دلایل کندی و شلوغی اسنپ همین Loop Deviceها هستن؟ چیزی که شاید برای کاربر دسکتاپ آزاردهنده به نظر برسه، برای مدیران سرور و سیستمهای حساس میتونه یک مزیت مهم باشه.
اسنپ نسخههای مختلف یک پکیج رو بهصورت ایمیجهای SquashFS نگه میداره و از طریق Loop Deviceها روی سیستم mount میکنه. به همین خاطر اگه یه آپدیت به مشکل بخوره یا خراب از آب دربیاد، میتونه خیلی راحت به نسخهٔ قبلی همون پکیج برگرده (Rollback)؛ بدون اینکه لازم باشه فایلهای سیستمی دستکاری بشن یا عملیات پیچیدهای برای بازیابی انجام بشه. به همین دلیله که این قابلیت برای سرورها، تجهیزات صنعتی و سیستمهای حیاتی اهمیت زیادی داره.
چرا کانونیکال اسنپ رو روی دسکتاپ اجباری میکنه؟
علاوه بر اینکه با استور اختصاصی کاربرانی که دنبال یک نصب سریع و مشابه ویندوز هستند رو راضی میکنه، اوبونتو دسکتاپ یک بیلبورد تبلیغاتی بزرگ هست.
وقتی میلیونها کاربر و توسعهدهنده روی دسکتاپ با اسنپ کار کنند، با این اکوسیستم خو میگیرند و فردا در پروژههای بزرگ صنعتی و سروری شرکتهاشون هم از همین ابزار استفاده میکنند.
چرا سمت سرور اسنپ کدبسته است؟
کانونیکال قابلیت «مخازن خصوصی» (Private Snaps / Brand Store) رو به شرکتهای بزرگ میفروشه. یک شرکت سازنده سختافزار یا بانک، میتونه با پرداخت پول، یک نسخه اختصاصی از اسنپاستور اجاره کنه که فقط برنامههای خودش روی دستگاههاش (مثل ATMها) نصب بشه و زمان آپدیتها رو ۱۰۰٪ کنترل کنه. اگر کانونیکال کد سرور رو متنباز میکرد، شرکتهای شخص ثالث سریعا سرورهای اسنپ خودشان رو راه میانداختند و کانونیکال از این درآمد کلان محروم میشد.
جالبه بدونید در صفحه رسمی اسنپاستور، کنار توزیعهای دسکتاپی مثل Ubuntu و Fedora، پلتفرمهایی مثل Raspberry Pi، CentOS و Red Hat Enterprise Linux هم دیده میشن. همین موضوع نشون میده که بازار هدف اسنپ فراتر از دسکتاپ بوده و کانونیکال از ابتدا به سناریوهای سروری و IoT هم توجه داشته.
پس چرا بقیه شرکتها نیومدند و برای مبارزه با کانونیکال یک رقیب تو همین زمینه منتشر نکردند؟
پاسخ سادست چون موضوع به تفاوت مدلهای تجاری این شرکتها برمیگرده و نیازی به تقلید از هم ندارند.
برای مثال بیایید یک مقایسهای بین این دو شرکت مطرح داشته باشیم
اولیش کانونیکال (Ubuntu) هست که ابزار اصلیش Snapئه و جامعه هدفش رو گذاشته روی توسعهدهندگان خرد و متوسط، شرکتهای IoT و کاربران دسکتاپ. مدل درآمدی و استراتژی این شرکت هم روی اجاره استور اختصاصی (Brand Store) و یکپارچهسازی دسکتاپ با IoT و سرور میچرخه.(جدا از سایر روشهای درآمدی که داره).
دومیش ردهت (Red Hat) هست که ابزارهای اصلیش Flatpak و RPM هستن و مستقیماً ابرشرکتها (Enterprises)، دیتاسنترها و بانکها رو هدف گرفته. استراتژی درآمدزاییش هم اصلاً گیر دادن به فرمت پکیج نیست، بلکه روی فروش ابزارهای گرانقیمت مدیریت زیرساخت مثل Red Hat Satellite و OpenShift تمرکز داره.
البته بیانصاف هم نباشیم! اسنپ فقط به نفع کانونیکال نیست.
با وجود تمام نقدها، اسنپ برای کاربرانی که تازه از ویندوز به اوبونتو آمدهاند مزایایی هم داره:
پایان کابوس وابستگیها (Dependency Hell): کاربر بدون درگیری با خطای کتابخانهها، فقط روی Install کلیک میکنه و برنامه اجرا میشه.
جدیدترین نسخه بدون خطر شکستن سیستم: داشتن جدیدترین نسخه اسپاتیفای یا بلندر بدون نیاز به اضافه کردن PPAهای خطرناک.
و در نهایت حق انتخاب در لینوکس: اگر از اسنپ خوشتون نمیاد، لینوکس یعنی آزادی! میتونید با چند دستور پاکش کنید یا سراغ توزیعهایی مثل Linux Mint یا Pop!_OS برید که کلاً اسنپ رو به صورت پیشفرض حذف و فلتپک رو جایگزین کردهاند.
اینجاست که داستان خیلی جذاب میشه...
اسنپ ابزار پکیجبندی شرکت کانونیکال (Canonical) سازنده اوبونتو هست که هدفی مشابه فلتپک داره (حمل همه وابستگیها همراه برنامه).
اما اسنپ برای کاربر دسکتاپ معمولاً انتخاب محبوبی نیست.
۴ دلیل اصلی که کاربران دسکتاپ از اسنپ شاکی هستند:
سرعت بسیار پایین در اولین اجرا (Cold Boot Delay): اسنپ از ایمیجهای SquashFS و لایههای ایزولهسازی مختلف استفاده میکنه که میتونن باعث افزایش زمان اولین اجرای برنامه بشن.
شلوغ کردن خروجی ترمینال: اسنپ برای هر برنامهای که نصب میکنه یک درایو مجازی میسازه. وقتی تو ترمینال دستور استاندارد df -h رو برای دیدن وضعیت هارد میزنید، با دهها سطر شلوغ و ساختگی /dev/loop مواجه میشید که دیدن وضعیت هارد اصلی رو کلافهکننده میکنه.
یکپارچگی ضعیف با تم و ظاهر سیستم: در برخی توزیعها و تمها هنوز به خوبی Flatpak نیست.
انحصارطلبی کانونیکال (بسته بودن سمت سرور): برعکس فلتپک که هر کسی میتونه براش استور شخصی بزنه، سمت سرورِ اسنپاستور کاملاً کدبسته (Closed-source) و در انحصار کانونیکال است. این موضوع یکی از مهمترین انتقادهای بخشی از جامعهٔ لینوکس به اسنپ است.
شاید بگید پس چرا بقیه همه نمیان سراغ فلتپک با سرور شخصی خودشون؟ جدا از اینکه راهاندازی و نگهداری یک سرور فلتپک نیاز به دانش فنی، هزینه و منابع زیادی داره، باید محدودیتهای ذاتی فلتپک رو بشناسیم:
چرا فلتپک برای ابزارهای سیستمی و پایه (Core/CLI) مناسب نیست؟
فلتپک اصولا برای برنامههای گرافیکی دسکتاپ (GUI) ساخته شده است. فلتپک:
به هسته (Kernel) دسترسی نداره و نمیتونه ماژولها یا درایورها رو مدیریت کنه.
توانایی ساخت سرویسهای پسزمینه سیستمی (Systemd Daemons) رو نداره.
دسترسی به سختافزار و دایرکتوری ریشه (/) رو برای حفظ امنیت مسدود میکنه.
اینجاست که نقش واقعی اسنپ مشخص میشه!
کانونیکال اسنپ رو فراتر از یک ابزار دسکتاپ طراحی کرد. اسنپ علاوه بر حالتهای ایزوله (Strict و Devmode)، حالتی به اسم Classic Confinement داره که ایزولهسازی رو کلاً کنار میذاره و مثل بستههای سنتی، دسترسی کامل به دایرکتوری ریشه و سختافزار میده!
به همین دلیل اسنپ در موارد زیر کارایی بالایی داره:
ابزارهای خط فرمان (CLI) و برنامههای سروری: مثل ابزارهای شبکه (v2ray/Xray)، سرویس Gitea یا کامپایلرهایی مثل Go.
سرویسهای پسزمینه (Daemons): اسنپ میتونه سرویسهایی بسازه که با بالا آمدن لینوکس در پسزمینه اجرا بشن.
جدای از این انتشار برنامه در اسنپاستور برای توسعهدهندگان بسیار سادهتر از فلتپک است.
اگر چند تکهٔ دیگه از پازل روش تجاری کانونیکال رو کنار هم بذاریم، همهچیز روشنتر میشه: بخش مهمی از بازار هدف اسنپ اصلاً کاربر دسکتاپ نیست!
بخش قابلتوجهی از درآمد و تمرکز کانونیکال از لینوکسهای نصبشده روی کیوسکهای شهری، دستگاههای ATM، تجهیزات پزشکی، تجهیزات IoT و سرورهای ابری به دست میاد. برای همین هم Snap از همون اول طوری طراحی شده که نیازهای این سیستمها رو برآورده کنه؛ چون برای یک ATM اصلاً مهم نیست یه برنامه ۳ ثانیه دیرتر باز بشه یا خروجی دستور df شلوغتر باشه. مهم اینه که سیستم تحت هیچ شرایطی کرش نکنه، پکیجها ایزوله و قابلاعتماد باشن، آپدیتهای امنیتی بهموقع اعمال بشن و در صورت بروز مشکل هم بشه خیلی سریع به نسخهٔ قبلی برگشت؛ بدون اینکه لازم باشه کل سیستم دستکاری یا ارتقا داده بشه.
یادتونه گفتیم یکی از دلایل کندی و شلوغی اسنپ همین Loop Deviceها هستن؟ چیزی که شاید برای کاربر دسکتاپ آزاردهنده به نظر برسه، برای مدیران سرور و سیستمهای حساس میتونه یک مزیت مهم باشه.
اسنپ نسخههای مختلف یک پکیج رو بهصورت ایمیجهای SquashFS نگه میداره و از طریق Loop Deviceها روی سیستم mount میکنه. به همین خاطر اگه یه آپدیت به مشکل بخوره یا خراب از آب دربیاد، میتونه خیلی راحت به نسخهٔ قبلی همون پکیج برگرده (Rollback)؛ بدون اینکه لازم باشه فایلهای سیستمی دستکاری بشن یا عملیات پیچیدهای برای بازیابی انجام بشه. به همین دلیله که این قابلیت برای سرورها، تجهیزات صنعتی و سیستمهای حیاتی اهمیت زیادی داره.
چرا کانونیکال اسنپ رو روی دسکتاپ اجباری میکنه؟
علاوه بر اینکه با استور اختصاصی کاربرانی که دنبال یک نصب سریع و مشابه ویندوز هستند رو راضی میکنه، اوبونتو دسکتاپ یک بیلبورد تبلیغاتی بزرگ هست.
وقتی میلیونها کاربر و توسعهدهنده روی دسکتاپ با اسنپ کار کنند، با این اکوسیستم خو میگیرند و فردا در پروژههای بزرگ صنعتی و سروری شرکتهاشون هم از همین ابزار استفاده میکنند.
چرا سمت سرور اسنپ کدبسته است؟
کانونیکال قابلیت «مخازن خصوصی» (Private Snaps / Brand Store) رو به شرکتهای بزرگ میفروشه. یک شرکت سازنده سختافزار یا بانک، میتونه با پرداخت پول، یک نسخه اختصاصی از اسنپاستور اجاره کنه که فقط برنامههای خودش روی دستگاههاش (مثل ATMها) نصب بشه و زمان آپدیتها رو ۱۰۰٪ کنترل کنه. اگر کانونیکال کد سرور رو متنباز میکرد، شرکتهای شخص ثالث سریعا سرورهای اسنپ خودشان رو راه میانداختند و کانونیکال از این درآمد کلان محروم میشد.
جالبه بدونید در صفحه رسمی اسنپاستور، کنار توزیعهای دسکتاپی مثل Ubuntu و Fedora، پلتفرمهایی مثل Raspberry Pi، CentOS و Red Hat Enterprise Linux هم دیده میشن. همین موضوع نشون میده که بازار هدف اسنپ فراتر از دسکتاپ بوده و کانونیکال از ابتدا به سناریوهای سروری و IoT هم توجه داشته.
پس چرا بقیه شرکتها نیومدند و برای مبارزه با کانونیکال یک رقیب تو همین زمینه منتشر نکردند؟
پاسخ سادست چون موضوع به تفاوت مدلهای تجاری این شرکتها برمیگرده و نیازی به تقلید از هم ندارند.
برای مثال بیایید یک مقایسهای بین این دو شرکت مطرح داشته باشیم
اولیش کانونیکال (Ubuntu) هست که ابزار اصلیش Snapئه و جامعه هدفش رو گذاشته روی توسعهدهندگان خرد و متوسط، شرکتهای IoT و کاربران دسکتاپ. مدل درآمدی و استراتژی این شرکت هم روی اجاره استور اختصاصی (Brand Store) و یکپارچهسازی دسکتاپ با IoT و سرور میچرخه.(جدا از سایر روشهای درآمدی که داره).
دومیش ردهت (Red Hat) هست که ابزارهای اصلیش Flatpak و RPM هستن و مستقیماً ابرشرکتها (Enterprises)، دیتاسنترها و بانکها رو هدف گرفته. استراتژی درآمدزاییش هم اصلاً گیر دادن به فرمت پکیج نیست، بلکه روی فروش ابزارهای گرانقیمت مدیریت زیرساخت مثل Red Hat Satellite و OpenShift تمرکز داره.
البته بیانصاف هم نباشیم! اسنپ فقط به نفع کانونیکال نیست.
با وجود تمام نقدها، اسنپ برای کاربرانی که تازه از ویندوز به اوبونتو آمدهاند مزایایی هم داره:
پایان کابوس وابستگیها (Dependency Hell): کاربر بدون درگیری با خطای کتابخانهها، فقط روی Install کلیک میکنه و برنامه اجرا میشه.
جدیدترین نسخه بدون خطر شکستن سیستم: داشتن جدیدترین نسخه اسپاتیفای یا بلندر بدون نیاز به اضافه کردن PPAهای خطرناک.
و در نهایت حق انتخاب در لینوکس: اگر از اسنپ خوشتون نمیاد، لینوکس یعنی آزادی! میتونید با چند دستور پاکش کنید یا سراغ توزیعهایی مثل Linux Mint یا Pop!_OS برید که کلاً اسنپ رو به صورت پیشفرض حذف و فلتپک رو جایگزین کردهاند.
آخرین ارسالها