منظور از یک توزیع لینوکسی چیست و تفاوت این توزیع‌ها با یکدیگر در چیست؟

منظور از یک توزیع لینوکسی چیست و تفاوت این توزیع‌ها با یکدیگر در چیست؟

حتماً برای شما هم این سؤال پیش آمده که منظور از Distribution یا به اختصار Distro (توزیع) لینوکسی چیست و چه چیزی این توزیع‌ها را تا این حد با یکدیگر متفاوت کرده است؟ در این پست سعی می‌کنیم به این سؤالات پاسخ داده و عواملی که باعث شده‌ تا برخی توزیع‌های مختلف لینوکس در میان انبوه توزیع‌ها سرآمد باشند، بررسی خواهند شد.

در حال حاضر (۲۰۱۸) لینوکس بیش از ۲۵ سال سن دارد و این در حالی است که در این مدت توانسته پیشرفت‌های چشمگیری داشته باشد. دنیای #لینوکس مملو از توزیع‌های مختلف است که به اصطلاح و به صورت خلاصه به آن Linux Distro می‌گویند.

به طور کلی، کسانی که کار با لینوکس را به تازگی آغاز کرده‌اند، انتخاب توزیع مناسب لینوکس ممکن است برایشان بسیار سخت و گیج‌کننده به نظر برسد؛ ولی قبل از اینکه بخواهیم دست به انتخاب یک توزیع بزنیم، باید بدانیم که اصلاً چرا این همه توزیع‌های مختلف برای لینوکس وجود دارد و چرا لینوکس هم مانند سیستم‌عامل ویندوز شرکت مایکروسافت دارای نسخه‌های محدود (خانگی، حرفه‌ای و سرور) نیست.

تفاوت گنو/لینوکس با سیستم‌عامل‌های دیگر چیست؟
علت وجود توزیع‌های مختلف آن است که لینوکس یا بهتر بگوییم گنو/لینوکس یک سیستم‌عامل اپن‌سورس می‌باشد؛ به عبارت دیگر، هر کسی می‌تواند از آن به صورت رایگان استفاده کند و تغییراتی در سورس‌کد آن به وجود آورد و در نتیجه افراد بسیاری هستند که دست به تغییر کدها می‌زنند و توزیع‌های اختصاصی خود را به وجود می‌آورند (البته در اینجا وقتی صحبت از لینوکس می‌شود، در واقع منظور هستهٔ لینوکس (Linux kernel) است نه GNU/Linux که خود این مسئله هم در جامعهٔ اپن‌سورس بحثی طولانی دارد).

در واقع، یک سازمان یا یک فرد مشخص کار توسعهٔ لینوکس را بر عهده نداشته است. لینوکس یک پلتفرم انبوه‌سپاری توزیع شده (Distributed Crowd-sourced) است که هزاران نفر در توسعهٔ آن نقش داشته‌اند. Linux Foundation (بنیاد لینوکس) وظیفه‌اش توسعهٔ هستهٔ لینوکس (Linux Kernel) است و این در حالی است که این ساز و کار را نمی‌توان در ویندوز که یک سیستم‌عامل با سورس بسته است مشاهده کرد (در مورد ویندوز، صرفاً  تیم توسعهٔ نرم‌افزار مایکروسافت مسئولیت توسعهٔ این سیستم‌عامل را بر عهده دارد).

توزیع‌های لینوکس چه هستند؟
همان‌طور که گفته شد، توسعهٔ سیستم‌عامل‌های کلوز سورس مانند ویندوز تماماً توسط خود شرکت تولیدکننده -که در مورد ویندوز می‌شود مایکروسافت یا در مورد مکینتاش می‌شود اپل- انجام می‌گیرد. به طور مثال، کمپانی مایکروسافت هسته، رابط کاربری و دیگر اجزای مورد نیاز برای اجرای درست و بدون اشکال سیستم‌عامل ویندوز را توسعه می‌دهد ولی در مورد لینوکس وضعیت متفاوت است و اجزای مختلفی توسط افراد مختلف طراحی می‌شوند (این اجزا شامل Linux Kernel ،GNU Utilities ،Display Server و Graphical User Interface است).

کِرنِل لینوکس
Kernel (کِرنِل یا هسته) لینوکس اولین بار توسط Linus Trovalds طراحی شد. لینوکس کِرنِل در واقع قلب یک توزیع لینوکسی است. در حقیقت، هستهٔ (کِرنِل) هر سیستم‌عامل مهم‌ترین و حیاتی‌ترین بخش آن سیستم‌عامل است. توسعه‌دهندگان زیادی در توسعهٔ لینوکس کِرنِل دست داشته‌اند ولی در میان آنها #لینوس توروالدز کنترل و نقش بیشتری در ایجاد تغییرات و اقدامات لازم برای به‌روزرسانی موفقیت‌آمیز کِرنِل داشته، دارد و احتمالاً خواهد داشت.

آشنایی با ابزارهای GNU
برای درک بهتر می‌توانید یک دفترچه یادداشت را در نظر بگیرید. برای اینکه بتوانید چیزی در این دفترچه یادداشت بنویسید، ابتدا باید یک مداد یا خودکار در دست داشته باشید. به علاوه اینکه برای تصحیح چیزهایی که نوشته‌اید می‌توانید از یک مداد پاک‌کن (یا لاک غلط‌گیر) استفاده کنید یا با استفاده از ابزارهای مختلف بخش‌هایی از آن را هایلایت کنید. این‌ها را می‌توان ابزارهای مختلف مورد نیاز برای استفاده از یک دفترچه یادداشت دانست.

در مورد لینوکس نیز این GNU Utilities است که ابزارهای مورد نیاز برای انجام کارهای مختلف، مانند سر و کار داشتن با فایل‌ها، ویرایش متون و مدیریت سیستم را در اختیار قرار می‌دهند. در گذشته، ابزارهای مختلف به شکل پکیج‌های مختلف و جداگانه ارائه می‌شدند ولی در حال حاضر GNU همهٔ این موارد را در یک پکیج مشخص که به نام Coreutils شناخته می‌شود، ارائه می‌کند.

اجازه دهید دوباره به همان مثال دفترچه یادداشت بازگردیم. ابزارهای مختلفی که نام بردیم، مثل مداد و مداد پاک‌کن و غیره، همگی برای آنکه مورد استفاده قرار گیرند، باید ابتدا در دست قرار گیرند و در مورد لینوکس هم Shell (شِل یا پوسته) را می‌توان به منزلهٔ دست در هنگام استفاده از یک دفترچه یادداشت دانست.

پوستهٔ لینوکس (مانند Bash) یک رابط است که به ما امکان استفاده و به‌کارگیری از ابزارهای GNU را می‌دهد. یک پوسته می‌تواند پوستهٔ گرافیکی یا پوسته مبتنی بر کامندلاین -که در آن با استفاده از تایپ کردن دستورات از ابزارهای مختلف استفاده می‌گردد- باشد.

سرور نمایش (Display Server)
Display Server (دیسپلی سرور یا سرور نمایش) بخشی از نرم‌افزار است که به عنوان واسط میان کاربر و لینوکس ایفای نقش می‌کند. وظیفهٔ اصلی این بخش، کار با ورودی‌ها و خروجی‌های اپلیکیشن‌های کلاینت (مانند Firefox ،LibreOffice و ...)، سیستم‌عامل و سخت‌افزارهایی که از یک پروتکل سرور نمایش استفاده می‌کنند است. یعنی اگر بخواهیم ساده‌تر بگوییم، این جزء کارش این است که داده‌ها را از کیبورد، ماوس و منابع دیگر بگیرد و همچنین داده‌های خروجی را در مقابل کاربر به نمایش بگذارد.

رایج‌ترین سرور نمایش X.Org Server است که بر اساس پروتکل سرور نمایش X Windows System ساخته شده است. کار نگهداری و توسعهٔ این کامپوننت هم به عهدهٔ بنیاد X.org Foundation است (دیگر سرورهای نمایش محبوب مبتنی بر پروتکل‌های سرور نمایش Wayland و Mir هستند).

X Server یک جزء جداگانه به نام Widow Manager هم دارد که مسئول کمک به عملیات در بخش‌هایی است که محتوا ممکن است توسط یک اپلیکیشن بر روی صفحه نمایش داده شود. این کار عملیات‌ مختلف مانند حرکت کردن، تغییر اندازه و مرتب‌سازی مجدد اجزای نمایش داده شده روی صفحه را ممکن می‌سازد.

رابط گرافیکی کاربری (Graphical User Interface)
GUI (رابط کاربری گرافیکی) جزئی است که تعامل کاربر از طریق محتوای گرافیکی نمایش داده شده روی صفحهٔ نمایش را ممکن می‌سازد و به جای رابط کامندلاین (CLI) که بیشتر توسط افراد حرفه‌ای مورد استفاده قرار می گیرد، به کار می‌رود (CLI در استفاده از سرور در توزیع‌های مختلف لینوکس مورد استفاده قرار می‌گیرد). محیط GUI در طی سال‌ها تغییرات زیادی یافت تا کاربرانی که استفاده از دستورات را بلد نیستند هم بتوانند از آن استفاده کنند.

سورس‌کد تمام این اجزای اولیه در دسترس است. برای ساخت یک توزیع لینوکس، توسعه‌دهنده یا گروه توسعه‌دهندگان باید تمام این اجزا را در کنار هم قرار دهند (البته این کار اصلاً ساده‌ای نیست). در حقیقت، کنار هم گذاشتن این اجزاء و اطمینان حاصل کردن از کارکرد درست همهٔ آنها، بسیار دشوار است.

چه چیزهایی باعث تفاوت‌های توزیع‌های لینوکس با یکدیگر می‌شود؟
سازندگان توزیع‌های لینوکس به‌ طور کلی محیط کاربری خودشان را در آن استفاده می‌کنند. مانند GNOME که در Ubuntu یا Cinnamon که در Mint استفاده شده است. به علاوه، معمولاً ابزارهای به خصوصی در هر توزیع ارائه می‌شود که باعث می‌شود یک توزیع با توزیع‌های دیگر متفاوت به نظر برسد.

به علاوه، آنها می‌توانند مرورگر پیش‌فرض سیستم‌عامل را هم تعیین کنند که مثلاً Firefox باشد یا Chrome. البته این کار را در مورد نرم‌افزارهای دیگر مثل انتخاب Office Suite ،Music Player و ... هم می‌تواند صورت گیرد. همچنین توزیع‌های مختلف لینوکس ممکن است از انواع مختلف Package Installer (نصب‌کنندهٔ پکیج‌) استفاده کنند یا مثلاً استفاده از هرگونه نرم‌افزار کلوز سورس را محدود کنند (مثلاً در توزیع Fedora، امکان استفاده از هیچ نرم‌افزار کلوز سورس و اختصاصی وجود ندارد). 

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

یکی از مسائلی که بسیاری از افراد در مورد آن دچار سوء‌تفاهم می‌شوند این است که آنها فکر می‌کنند اپن‌سورس بودن یک نرم‌افزار به معنی رایگان بودن آن است، در صورتی که چنین چیزی اصلاً درست نیست! درست است که توزیع‌های لینوکس اپن‌سورس هستند ولی برخی از آنها قیمت مشخصی دارند. مثلاً توزیع‌های تجاری که برای شرکت‌ها ساخته می‌شوند -مثل RHEL Server- معمولاً پولی هستند.

Ubuntu یکی از پرطرفدارترین توزیع‌های مبتنی بر Debian است که خود Debian هم همان‌طور که قبل‌تر گفتیم یک توزیع مبتنی بر Linux می‌باشد. این توزیع توسط کاربران عمومی مورد استفاده قرار می‌گیرد؛ رابط کاربری این توزیع بسیار کاربرپسند است که باعث می‌شود کار با آن بسیار ساده و راحت باشد.

Ubuntu که توسط شرکت Canonical پشتیبانی می‌شود، یک مرکز نرم‌افزاری (Software Center) دارد که برای کاربرانی که با استفاده از کامندلاین نمی‌توانند پکیج‌های نرم‌افزاری را نصب کنند، بسیار مفید و کارآمد است.

این نمای کلی و بخشی از دنیای بزرگ لینوکس بود که با آن آشنا شدید. قطعاً گنجاندن تمام اطلاعات و نکات در مورد لینوکس و توزیع‌های آن در یک مطلب ناممکن است اما برای آشنایی بیشتر با مفهوم Distro در لینوکس، می‌توانید به آموزش معرفی خانواده‌های اصلی توزیع‌های لینوکس مراجعه نمایید. 

نظر شما در مورد این سیستم‌عامل اپن‌سورس چیست؟ به نظر شما این سیستم‌عامل چه برتری‌هایی نسبت به دیگر سیستم‌عامل‌ها داشته و چه آینده‌ای در انتظارش است؟ در مورد توزیع‌های لینوکس چه‌طور؟ کدام‌یک را بیشتر می‌پسندید؟ نظرات، دیدگاه‌ها و تجربیات خود را با ما و سایر کاربران سکان آکادمی به اشتراک بگذارید.