لینوکس، عشق، برنامه نویسی

لینوکس، عشق، برنامه نویسی

در این وبلاگ مطالبی درباره سیستم عامل لینوکس و همچنین درمورد برنامه نویسی و کامپیوتر مینویسم.

سه شنبه, ۷ فروردين ۱۳۹۷، ۱۰:۲۸ ب.ظ

به نام خدا

 

 

 

 

قبل از نوشتن این مطلب داشتم فکر میکردم که چجوری به ساده ترین شکل ممکن و بدون پیچیدگی، اون چیزی که در ذهنم هست رو توضیح بدم :)  چون احساس میکنم که یه مقدار وسواس دارم در توضیح مطالب، چون همیشه دوس دارم همه چیز رو خیلی کامل و جامع توضیح بدم، تا حتی کاربران تازه وارد لینوکس هم مطالبم رو بگیرن، پس اگر مطالب رو تکراری گفتم یا زیاده گویی کردم ببخشید :) ،  بگذریم :)

 

در این مقاله (و مقاله های بعدی)، می خوام هر چی رو که درباره پکیج های اسنپ (snap) در اوبونتو یاد گرفتم رو خیلی ساده برای شما هم توضیح بدم، چون درباره پکیج های اسنپ یه مقدار سردرگمی و ابهام برای کاربران ایرانی وجود داره و همچنین در منابع فارسی چیز زیادی در این باره وجود نداره و منابع انگلیسی هم زیاد سر راست و شفاف نوشته نشدن. برای همین من سعی کردم این مطلب رو بنویسم تا بلکه یه مقدار این مطلب رو تونسته باشم انتقال بدم. 

 

همونطور که قبلا در این پست هم مختصری توضیح دادم، روش فعلی نصب نرم افزار در سیستم عامل های لینوکسی به این شکل هست که، توسعه دهندگان، برنامه های خودشون رو مینویسن و سورس نرم افزارشون رو روی اینترنت قرار میدن. حالا سازندگان توزیع های مختلف(مثل اوبونتو و غیره)، میان این سورس ها رو برای توزیع خودشون کامپایل میکنن و سپس پکیج بندی میکنن و روی مخازن (repository) خودشون قرار میدن و سپس ما به عنوان کاربر نهایی میایم و از داخل توزیعی که استفاده میکنیم، توسط نرم افزار پکیج منیجر  package manager، با یک دستور ( مثلا دستور sudo apt-get install در اوبونتو )، یک نرم افزار رو به همراه وابستگی هاش (depedency ) نصب میکنیم. البته اگه دیپندنسی داشته باشه (که در اغلب موارد داره).

 

پس سیستم فعلی نصب نرم افزار در اغلب توزیع های لینوکسی به این شکل هست:

 

1- هر توزیعی (مثلا اوبونتو)، یک مخزن (repository) داره و سازندگان اون توزیع، میان نرم افزارهای اوپن سورس رو کامپایل میکنن، پکیج بندی میکنن، و روی مخازن قرار میدن

 

2- کاربران نهایی ( مثل من و شما)، میایم و با استفاده از نرم افزار پکیج منیجر package manager، (که هر توزیعی برای خودش یک پکیج منیجر مستقل داره، برای مثال در توزیع اوبونتو apt پیکیج منیجر هست و در فدورا پکیج منیجر RPM وجود داره)، برنامه مورد نظر خودمون رو نصب میکنیم.

 

این روش، تقریبا چند سال  هست که برای توزیع های مختلف وجود داره اما یک سری ایرادات اساسی داره که من به چند نمونه اشاره میکنم:

 

1- بزرگترین ایرادی که این روش نصب نرم افزار داره وجود پیکیج های اشتراکی هست. به این مفهوم که نرم افزار های مختلف ممکنه از یک پکیج ( یا لایبرری) بصورت مشترک استفاده کنن. حالا اگه اون پکیج مشترک اپدیت بشه، ممکنه اون دو نرم افزار ( یا یکیشون) به مشکل بربخوره، ممکنه هم به مشکل بر نخوره. ولی ریسکش وجود داره.( بارها برای خود من اتفاق افتاده که پکیج های سیستمم رو اپدیت کردم و سیستم کرش کرده و بوت نشده :)  )

 

2- مشکل بعدی که وجود داره سازندگان نرم افزار، باید بیان برای تک تک توزیع ها پکیج درست بکنن و تست بکنن، چون پکیج های deb که مال اوبونتو هست روی مثلا فدورا کار نمیکنه، چون این دو توزیع پکیج منیجر جداگانه ای دارن، و این کار وقت و انرژی مضاعف میگیره ( فکرش رو بکنید باید برای حداقل 5 یا 6 تا توزیع مهم پکیج درست بکیند، ببینید چقد وقتتون رو میگیره! )

- و مشکلات دیگه ای وجود داره که من بهش اشاره نمیکنم

 

اما شرکت کانونیکال (سازنده ی توزیع اوبونتو)، اومده و یک نرم افزار پکیج منیجر جدید به نام اسنپی (snappy) درست کرده که علاوه بر حل مشکلات بالا، مزایای دیگه ای هم داره. به طور ساده بخام بگم، تمرکز اسنپی روی این هست که تمام دیپندسی های یک نرم افزار رو به همراهش نصب کنه و دیگه مفهموم پکیج اشتراکی از بین بره. در واقع شرکت کانونیکال میخواد با پکیج منیجر جدیدش، یک انقلابی در نصب نرم افزار ها در سیستم عامل لینوکس بوجود بیاره.

 

و اما بریم سراغ ساختار و سیستم اسنپی:

 

خیلی ساده بخوام بگم، اسنپی دو قسمت مهم داره

1- سایت snapcraft.io

2- نرم افزار snapd

 

و اما این دوتا کارشون چیه:

 

در واقع سایت بالا به عنوان یک مخزن یا همون repository عمل میکنه. اکه شما یک برنامه اوپن سورس نوشتید و میخاید نرم افزارتون رو بصورت پکیج های اسنپ منتشر کنید، کافیه برید در سایت بالایی ثبت نام کنید و توسط توضیحات و ابزار هایی که در سایت گفته شده، پکیج خودتون رو در اون سایت منتشر بکنید.

 

و همچنین نرم افزار snapd که همون خود پکیج منیجر هست و توسط اون شما میتونید نرم افزار ها ( که بصورت پکیج های اسنپ snap هستند) رو نصب کنید، حذف کنید، جستجو کنید، اپدیت کنید و خلاصه هر کاری رو با بسته های اسنپ انجام بدید. نرم افزار snapd بصورت پیش فرض روی اوبونتو نصب هست ولی روی سایر توزیع ها باید خودتون نصب بکنید (البته در اینده احتمالا همه ی توزیع ها دیگه برن به سمت پکیج های اسنپ)

 

و اما میرسیم به مزایای پکیج های اسنپ:

در اینترنت و سایت های مختلف مزایای زیادی برای این پکیج منیجر جدید گفته شده و من الان اونهایی که یادمه رو به شما میگم:

 

1- اولین و مهمترین مزیتی که پکیج های اسنپ دارن اینه که از لایبرری اشتراکی استفاده نمیکنن، بدین معنی که یک نرم افزار که بصورت اسنپ منتشر میشه تمام فایل ها و لایبرری های مورد نیاز خودش رو داره و در واقع کل نرم افزار داخل یک پکیج اسنپ snap قرار میگیره. این باعث پایداری اپلیکشن ها میشه. چرا؟ چون همونطور که در قسمت معایب پکیج های deb گفتم، اگه یه لایبرری اپدیت بشه، ممکنه با نرم افزار هایی که روی سیستم نصب هستن سازگار نباشه و در نتیحه بعد اپدیت، نرم افزار هایی که به اون لایبرری وابسته هستن ممکنه کرش کنن. ولی در پکیج های اسنپ همچین مشکلی وجود نداره. پیکج های اسنپ یه عیب دارن و اون اینه که چون یک نرم افزار تمام فایل ها و دیپندنسی های خودش رو داخل پکیج اسنپ داره، در نتیجه حجم نرم افزار یه مقدار بالا میره ولی خب الان که هاردای ترابایتی تو بازار هستن این مشکل عمده ای به حساب نمیاد.

 

2- دومین مزیت عمده ای که نصب نرم افزار بصورت پکیج اسنپ داره اینه که نرم افزار ها میتونن بصورت transactional اپدیت بشن ( این اصطلاحی هست که خارجی ها بکار میبرن). بزارید این اصطلاح ترنزکشنال رو بیشتر توضیح بدم. همونطور که در شماره 1 توضیح دادم، یه نرم افزار اسنپی، تمام فایل ها و دیپندنسی های خودش رو به همراه داره و داخل یک بسته ی snap هست و این بسته روی سیستم کاربر نصب میشه. حالا فرض کنید که توسعه دهنده ی نرم افزار، روی نرم افزارش یه سری تغییرات میده و یک سری فایل هاش رو تغییر میده ( مثلا یه قسمتی از سورس کد نرم افزار رو تغییر میده)، حالا شما وقتی بخاید نرم افزار رو آپدیت کنید، دیگه لازم نیست کل فایل های نرم افزار دوباره دانلود کنید :) ، فقط اون فایل هایی که تغییر کردن دانلود میشن :). نتیجه این میشه که، موقع نصب اولیه نرم افزار، حجم دانلود شما زیاده، ولی موقع اپدیت، حجم اپدیت شما خیلی کم میشه چون همه فایل ها دانلود نمیشن :)  خارجی ها به این فرایند میگن transactional update

 

3- یه مزیت بسیار بسیار بسیار بسیار بسیار بسیار :) مهم و عمده ی دیگه ی سیستم اسنپی که یک انقلابی در سیستم عامل لینوکس بوجود اورده اینه که، سازندگان نرم افزار، فقط کافیه یک بار نرم افزارشون رو بصورت snap منتشر کنن و بعدش میتونن روی تمام توزیع ها نصب و استفاده کنن :) به شرطی که اون توزیع از سیستم snappy پشتیبانی کنه ( ینی نرم افزار snapd رو نصب کرده باشه). همونطور که در بالا و در قسمت معایب پکیج های فعلی ( deb, rpm و غیره) گفتم، پکیجی که برای اوبونتو ساخته میشه روی مثلا فدورا قابل استفاده نیست ولی پکیج snap اینجوری نیست. یبار snap بساز، روی تمام توزیع ها نصب کن و استفاده کن :) چقدر در وقت و انرژی صرفه جویی میشه :).  در حال حاضر توزیع های مختلف از جمله اوبونتو، مینت، آرچ، فدورا، جنتو، دبیان و ... از بسته های snap پشتیبانی میکنن.

 

4- مزیت دیگه ای که نرم افزار های اسنپ دارن اینه که بصورت sandbox اجرا میشن. در نتیجه به کل سیستم شما دسترسی ندارن و این ینی امنیت سیستم شما یه مرحله بالاتر میشه ( در این باره زیاد توضیح نمیدم میتونید در اینتترنت جستجو بکنید )

 

خب دوستان عزیز، این مقاله ای که نوشتم یه مقاله ی مقدماتی درباره سیستم اسنپی بود. امیدوارم مقاله جامع و در عین حال ساده باشه. اگر سوالی داشتید در قسمت کامنت بپرسید :) یا احیانا در مقاله ایرادی بود به من بگید :).

 

و همچنین مقاله بعدی که درباره اسنپ استور هست رو ببینید :) اینم لینکش

نظرات (۲۵)

خیلی خوب و ساده و بی پیچیدگی توضیح دادی ❤️ سپاس بسیار 
پاسخ:
خواش میکنم، خیلی خوشحالم که مطلب من به دردتون خورده :)
ممنون خیلی خوب بود
پاسخ:
خواهش میکنم

خیلی عالی و زیبا توضیح دادی خیلی خوشم اومد

پاسخ:
ممنون داداش خوشحالم که مطلب به درد شما خورده :)

واقعا ممنونم خیلی به مفید بود :)

پاسخ:
خواهش میکنم :) خوشحالم که به دردتون خورده :)

سلام.

همین که ساده و روون توضیح میدی خودش جای قدردانی داره.

ما باید از شما تشکر کنیم دوست عزیز.

پاسخ:
خواهش میکنم :) خوشحالم که مطالب وبلاگ براتون مفید بوده :)

خیلی عالی بود

پاسخ:
ممنون :)

خیلی عالی و ساده گفته بودید. ممنون

پاسخ:
خواهش میکنم :)

سلام دوست عزیزم. از شما بی نهایت سپاسگزارم به خاطر توضیح روان و عالیت. امیدوارم که هر روز بیشتر از دیروز پیشرفت کنی و در ویدیوهای آموزشیم از آگاهی های فوق العاده ات استفاده میکنم جرا که بسیار ارزشمند و ساده هست. هر روز به سمت زیبایی های بیشتر هدایت شوی.

پاسخ:
ممنون بخاطر کامنتتون :)

سلام. من اسنپو نصب کردم. چند تا نرم افزار هم از طریق اسنپ نصب کردم و توی لیست هم نشونشون داد. الان چجوری اونارو اجرا کنم؟

پاسخ:
سلام ایکنش میاد توی منوی نرم افزار ها

از داخل ترمینال هم میتونی با دستور snap run برنامه ها رو اجرا کنی

snap run telegram-desktop

برای مثال با دستور بالا میتونی تلگرام دسکتاپ رو اجرا کنی

عااااالی, بهترین توضیحی که در باره snapd خوندم و خیلی ساده ولی کامل

پاسخ:
خواهش میکنم :)

خیر ببینی 🙌🏻

پاسخ:
ممنونم :)

سلام دمت گرم هر دو تا پستت رو خوندم. فوق العاده بودند.

به نظر شما نصب از طریق اسنپ، بهتر از نصب از طریق apt است؟

 

پاسخ:
سلام، خواهش میکنم :)
نصب از طریق اسنپ راحت تره ( مخصوصا که از طریق رابط گرافیکی ینی همون اسنپ استور)
ولی همونطور که توی مقاله هم گفتم نرم افزار های اسنپ در ابتدا یکم حجمشون زیاده، ولی در عوض اپدیتشون حجم کمی داره. در کل من اسنپ رو دوس دارم

فقط ببخشید یه سوال دیگه 

یه نفر میگفت اسنپ خیلی بده، اصلاً روی پکیج ها نظارتی نداره به همین دلیل ممکنه ویروسی باشه، سرعت بوت شدن سیستم رو به شدت میاره پایین. این حرف ها درسته؟؟

پاسخ:
سلام مجدد
راستش من تاحالا پکیج اسنپ نساختم ولی فک میکنم اسنپ استور نظارت میکنه اینجوری نیست که هرکس خاست یه ویروس یا بدافزار بنویسه بزاره رو استور. اونایی که اسنپ رو دوس ندارن شاید انتقادشون این باشه چرا اپلیکیشن های غیررایگان و غیر اوپن سورس (Proprietary software) هم اونجا منتشر میشه، چون توی اسنپ همه ی نرم افزار ها حتی اونایی که رایگان و اوپن سورس نیستن هم منتشر میشن ( مثلا مایکروسافت نرم افزار اسکایپ رو که اوپن سورس نیست رو بصورت اسنپ منتشر کرده) به همین خاطر میگن مثلا ما به مایکروسافت اعتماد نداریم :)))

توی اسنپ استور کنار هر نرم افزاری که تیک سبز رنگ زده باشه ینی خود شرکت سازنده داره اینو روی استور منتشر میکنه، و برای اسکایپ تیک سبز داره ینی اینکه خود مایکروسافت داره پکیج اسنپ رو میسازه و اپدیت میکنه.

قبلا در گیت هاب یه اشکالی رو تو نرم افزار یه برنامه نویس هندی پیدا کردم که برنامشو بصورت اسنپ منتشر کرده بود. برای رفع اون اشکال باید کاری میکرد که پکیج اسنپ به کل سیستم دسترسی پیدا کنه، بهش گفتم چرا اپدیت نمیکنی برنامتو تا اشکالش درست بشه گفت باید برم به اسنپ استور توضیح بدم که چرا برنامم دسترسی به کل سیستم میخاد و اونا قانع بشن و قانع کردن اونا هم برای اینکار یکم سخته و بیخیالش شدم. 
اینو اون برنامه نویس هندی گفت حالا من نمیدونم درست گفته یا دروغ گفته نمیدونم. در کل فکر نمیکنم بدون نظارت باشه.


در مورد اینکه سرعت بوت رو "به شدت" پایین میاره موافق نیستم. قطعا تاثیر ناچیزی میزاره روی سرعت بوت. چرا؟ چون snapd بصورت سرویس توی بک گراند سیستم عامل داره اجرا میشه و هر از گاهی بصورت اتوماتیک تمام پکیج های اسنپ (که روی سیستم شما نصب هست رو)   اتوماتیک اپیدیت میکنه تا سیستم همیشه اپدیت بمونه. و این سرویس موقع بوت شدن سیستم عامل بصورت خودکار اجرا میشن برای همین ممکنه یه مقدار بوت رو کند کنه ولی میگم تاثیرش خییییییلی ناچیزه

ممنون از راهنمایی هاتون 

بله ممکنه به خاطر همین موضوع باشه، باز هم ممنون

 

 

پاسخ:
خاهش میکنم

با سلام
مشکلی که من از اسنپ دیدم و زیاد دوسش ندارم اینه که واقعن حجم بالایی دارن مثلن الان رفتم دیدم از کرومیوم چهار نسخه ایجاد کرده و حجمش شده نزدیک 1 گیگ! برای برنامه های دیگه نیز همینطور .یه مشکل دیگه هم اینه که به سورس دسترسی نداری و امکان ویرایش نیست درحالی که میدونی پایه و اساس لینوکس اوپن سورس بودنشه و اگه قرار به بستن سورس باشه خب میریم سمت ویندوز و چه نیازی
به هرحال من زیاد حال نکردم مخصوصن به خاطر حجم بالاش 

پاسخ:
با سلام خدمت شما

بله، بسته های اسنپ نسبت به پکیج های معمولی حجمشون بیشتره، ولی در عوض اپدیشون حجم کمی داره :)

سورسشون هم closed نیست :)  خودتون هم میتونید سورس نرم افزار رو دانلود کنید تغییرش بدید و برای خودتون پکیج اسنپ بسازید :)

عامو دمت گرم استفاده کردیم

عالی بود

پاسخ:
ممنون

بابا بنازمت 
چقدر خوب بودی 
موفق باشی پسررر

سلام ممنون از متنی که نوشتی

این متن به همراه قسمت نظرات برام آموزنده و مفید بود
خسته نباشید بهت میگم و امیدوارم هرجا هستی با انرژی به این کارت ادامه بدی

پاسخ:
سلام ممنونم از شما و خوشحالم که مطلبی که نوشتم براتون مفید بود :)

سلام

ممنون از مقاله خوبت.

شاید برای دسکتاپ، استفاده از اسنپ زیاد جالب نباشه چون تعداد برنامه‌ها خیلی زیاد هستند و اگر از منابع مشترک استفاده نکنند، واقعا فضای زیادی را اشغال می‌کنند. اما در استفاده‌های تجاری بخصوص برای بحث‌های IoT و سیستم‌های توکار، snap به همراه Ubuntu core خیلی کاربردیه.

پاسخ:
سلام، ممنون از کامنت خوب شما :)
این نکته رو Alan Pope توی یه کنفرانسی گفته بود من ویدیوش رو توی یوتوب دیده بودم قبلا. دقیقا هدف اسنپ اینه همه سیستم ها بصورت خودکار بروزرسانی بشن بدون اینکه کل سیستم از کار بیفته. فک کن یخچال ها در اینده سیستم عامل داشته باشن و برنامه های اسنپ روش نصب بشه و خودکار اپیدیت بشه :)

ممنون از توضیحات خوبتون

پاسخ:
سلام. خواهش میکنم :)

سلام

اگه اسنپی رو برای افزایش سرعت سیستم حذف کنیم، مشکلی پیش نمیاد؟

پاسخ:
سلام نه مشکلی پیش نمیاد. به راحتی میتونید پکیج های اسنپ رو از سیستم حذف کنید.
توصیه من استفاده از پکیج های flatpak هست. اون هم دقیقا رقیب اسنپ هست ولی سرعت اجرای اولیه برنامه هاش زیاده
۰۴ آذر ۰۲ ، ۱۶:۵۷ مهرداد ‏‏‏‏‏‏‏‏‏‏‏‏‏

سلام

خسته نباشید بابت پست مفید شما

اوبونتو من ورژن ۲۲.۰۴ هست ولی به این استور وصل نمی‌شه ، می‌گن به خاطر تحریم هست و باید پروکسی نصب کنی ؟

چه کار باید کرد؟

پاسخ:
سلام
اسنپ و اوبونتو رو من خیلی وقته استفاده نکردم راستش و نمیدونم تحریم کرده یا نه. وبسایتش که تحریم نیست و از این ادرس حداقل میتونی لیست نرم افزار هایی که بصورت اسنپ منتشر شدن رو ببینی https://snapcraft.io/store

نهایتا میشه اینکارو کرد که تمام ترافیک ترمینال از داخل یه پروکسی عبور کنه و یه مقدار دنگو فنگ داره، تو گوگل سرچ کنی هست، میتونی کاری کنی تمام ترافیک سیستمت از داخل tor عبور کنه بازم میگم دنگو فنگ داره

ولی یه نکته میخام بهت بگم، بجای اسنپ، ازپکیج های فلت پک (flatpak) استفاده کن و یک ریپازیتوری داره به نام flathub.org که هررررررر نرم افزاری که دلت بخاد توش هست

و نکته ی مهم اینه که، سرعت اجرای اولیه ی برنامه های فلت پک از اسنپ بیشتره. 

باید یه پست درباره فلت پک بنویسم تو وبلاگ ولی وقت نمیکنم
۰۵ آذر ۰۲ ، ۲۲:۳۴ مهرداد ‏‏‏‏‏‏‏‏‏‏‏‏‏

ممنون👍

پاسخ:
خاهش میکنم
۲۲ خرداد ۰۳ ، ۱۸:۵۱ آرش کمانگیر

دم شما گرم. همیشه با همین وسواسی که گفتی درس بده. خیلی عالیه

پاسخ:
ممنونم از نظر محبت آمیز شما، خوشحالم که مطلبی که نوشتم براتون مفید بوده. ممنون :)

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی