شعاری در دنیای لینوکس هست که میگوید لینوکس یک سیستم عامل نیست، لینوکس یک فرهنگ است: فرهنگ آزادی.
این آزادی برمیگردد به ایدههای فردی به نام ریچارد استالمن که در ۱۹۸۳ با راه انداختن جنبشی به نام جنبش نرم افزار آزاد آن را شروع کرد و بعد در سال ۱۹۸۵ با تاسیس بنیادی به نام بنیاد نرم افزار آزاد، پایههای آن را مستحکم ساخت. نماد این بنیاد گوزن آمریکای شمالی است که گنو نام دارد. این مفهوم در انگلیسی به نام Free Software شناخته میشود و از آنجایی که کلمه Free در زبان انگلیسی هم به معنای «رایگان» استفاده میشود و هم به معنای «آزاد»، تذکر این نکته همیشه مهم است که آزادی در دنیای نرم افزار چیزی بیشتر از رایگان بودن یک برنامه است.
از نظر بنیاد نرم افزار آزاد، هر برنامه برای اینکه آزاد شناخته شود باید چهار حق را برای دیگران قائل باشد. این چهار آزادی، آزادیهای صفر تا سه نامیده میشوند:
- آزادی اجرای برنامه برای هر کاری (آزادی صفرم)
- آزادی مطالعه چگونگی کار برنامه و تغییر آن (پیش نیاز: متن برنامه) (آزادی یکم)
- آزادی تکثیر و کپی برنامه (آزادی دوم)
- آزادی تقویت و بهتر کردن برنامه و توزیع آن برای همگان (پیش نیاز: متن برنامه) (آزادی سوم)
آزادیهای یک تا سه کاملا واضح هستند: آزادی دیدن متن برنامه، آزادی تکثیر و کپی آن و آزادی تغییر و توزیع دوباره آن که منطقا نیازمند دسترسی به متن برنامه هم دارند. اما آزادی صفر کمیپیچیده تر است و نیاز به توضیح بیشتری دارد. آزادی صفر میگوید که شما باید آزاد باشید برای هر منظوری برنامه را اجرا کنید. اگر به شما یک برنامه بدهند که فقط اجازه داشته باشید آن را روی یک مدل کامپیوتر اجرا کنید، آزادی صفر نقض شده. همچنین آزادی صفر نقض شده اگر برنامه شما محدودیت تعداد کاربر یا محدودیت جغرافیایی یا محدودیت استفاده تجاری داشته باشد. در عین حال شما باید بتوانید مثلا با مرورگر خود به هر سایتی سر بزنید و اگر نویسنده برنامه طوری کار کرده باشد که برای مثال فایلهای دینی قابل مرور نباشند، این نرم افزار صلاحیت یک نرمافزار آزاد بودن را ندارد.
دادن این سه آزادی با دادن سورس برنامه به دیگران قابل تامین است اما یک شرط نهایی وجود دارد که باعث میشود جنبش نرم افزار آزاد رشد کند: «اگر شما این آزادی ها را داشتید پس دیگران هم باید داشته باشند».
به عبارت دیگر اگر شما یک برنامه آزاد را دریافت کنید، آن را تغییر دهید و بخواهید تغییرات خود را در اختیار دیگران بگذارید، باید آن را دوباره به شکل آزاد منتشر کنید. مثلا اگر کسی سیستم عامل لینوکس را از اینترنت دریافت کند و برای مثال زبان کشور خودش را به آن اضافه کند، اجازه ندارد محصول نهایی را به شکل بسته عرضه کند.
اما این موضوع چطور ممکن است؟ در نرم افزارهای بسته (مثلا ویندوز یا فتوشاپ) قانون از تولید کننده حمایت میکند ولی اگر قرار باشد قانون همین حمایت را از آزادی ها هم انجام دهد، نیازمند متنی قانونی هستیم. این متن قانونی، GPL نام دارد. جی پی ال یا اجازهنامه عمومیهمگانی یک متن قانونی است که اگر نرم افزاری اشاره کند «این برنامه براساس مجوز جی پی ال منتشر شده»، قانون موظف است حقوق مولف را در مورد آن تضمین کند. برای مثال اگر شما برنامهای را تحت جی پی ال منتشر کنید ولی بعد کسی آن را تغییر دهد و بدون اشاره به اسم شما آن را عرضه کند یا کسی آن را تغییر دهد و نسخه خودش را به شکل غیر آزاد منتشر کند، شما این اجازه را خواهید داشت تا به خاطر نقض کپی رایت مبتنی بر جی پی ال (که در مواردی کپی لفت هم نامیده میشود) به دادگاه شکایت کنید.
آزادی در مقابل بازمتن بودن
مفهوم مرتبط با مفهوم نرم افزار آزاد، نرم افزار بازمتن (Open Source) است. نرم افزار بازمتن نرم افزاری است که متن آن در اختیار مردم قرار دارد. ممکن است یک شرکت اینکار را به خاطر جذب توسعه دهندههای جدید انجام دهد یا برای امن تر کردن برنامههای خود از طریق تشویق مردم به کشف و گزارش حفرههای امنیتی یا حتی به عنوان یک حرکت تبلیغاتی. اما هر انگیزهای که پشت «بازمتن» شدن یک برنامه باشد نباید ما را از این نکته غافل کند که نرم افزار آزاد چیزی بیشتر از دسترسی به سورس است. همانطور که در بالا گفتم، تنها با داشتن این چهار اصل (اصل صفرم تا سوم) است که یک برنامه میتواند آزاد نامیده شود:
- آزادی اجرای برنامه برای هر کاری (آزادی صفرم)
- آزادی مطالعه چگونگی کار برنامه و تغییر آن (پیش نیاز: متن برنامه) (آزادی یکم)
- آزادی تکثیر و کپی برنامه (آزادی دوم)
- آزادی تقویت و بهتر کردن برنامه و توزیع آن برای همگان (پیش نیاز: متن برنامه) (آزادی سوم)
پس حتی اگر کسی به متن یک برنامه هم دسترسی داشته باشد اما اجازه تغییر، بازنشر و کپی آن را نداشته باشد، این برنامه فقط و فقط بازمتن است و نه آزاد. کاملا مشخص است که مفهوم آزادی مفهومیبسیار وسیع تر از مفهوم بازمتن بودن است و در حالی که هر برنامه آزاد باید بازمتن هم باشد، برعکس آن صحیح نیست. مجوزهایی مانند GPL وظیفه حفاظت از این آزادی و تضمین استمرار آن در نسخههای تغییر یافته برنامهها را بر عهده دارند.
آزادی در مقابل رایگان بودن
همانطور که در ابتدای این بخش هم به آن اشاره شد، کلمه Free در زبان انگلیسی هم به معنی آزاد است و هم به معنی رایگان. این باعث شده تا بسیاری به اشتباه بین برنامه مجانی و برنامه آزاد تفاوت قائل نشوند. مطمئن هستم که سه اصل بالا را به یاد دارید و میدانید که هر برنامه رایگانی نمیتواند آزاد باشد. مثلا برنامه پرندههای خشمگین روی اندروید یا مرورگر اپرا برنامههای رایگانی هستند که آزاد نیستند چون نه فقط شما اجازه ندارید آنها را تغییر دهید که حتی اجازه ندارید به سورس آنها هم نگاه کنید (نقض آزادی یک و سه). اما آیا اینجا هم مثل مورد بازمتن، نرم افزار آزاد چیزی فراتر از نرم افزار رایگان است؟ اکثرا به این سوال جواب مثبت میدهند و فکر میکنند که نرم افزار آزاد حتما باید مجانی باشد اما این تصور اشتباه است.
به چهار قانون قبلی نگاه کنید! هیچ جا صحبت از پول نیست. درست است که شما حق دارید نرم افزار آزاد را به رایگان از دوست خود کپی کنید یا از اینترنت دریافت کنید اما اگر کسی هم تصمیم بگیرد آن را به شما بفروشد کار خلافی نکرده و این تصمیم شما است که انتخاب میکنید آن را به رایگان دریافت کنید یا بخرید. این حرف در وهله اول عجیب است اما با نگاه به شرکتهای عظیمیمانند ردهت که فروشنده یک سیستم عامل لینوکس است یا رفتن به سراغ مدیر محتواهایی مانند دروپال یا وردپرس میبینیم که موارد بسیار وجود دارد که یک سیستم یا شخص تصمیم میگیرد به جای اینه خودش چیزی را دانلود کند، آن را از کس دیگری بخرد. در ادامه در این مورد بیشتر خواهید خواهند.
حالا که دیدید که مجانی بودن هیچ ربطی به آزاد بودن ندارد و یک برنامه آزاد میتواند به فروش هم برسد (علی رغم اینکه طبق آزادی یک و دو همه باید بتوانند آن را به رایگان هم تهیه کنند) و یک برنامه مجانی هم میتواند آزاد نباشد (مثلا از طریق در دست نبودن سورسش)، این را هم اضافه کنیم که این روزها بعضی ها برای کم کردن این ابهام، به جای اصطلاح انگلیسی Free که میتواند به معنی مجانی هم بکار رود، از اصطلاح Libre استفاده میکنند که به روشنی معنی «آزادی» میدهد. به عنوان مثال مجموعه آفیس آزادی که در ابتدا Open Office نامیده میشد، حالا با تاکید بیشتر بر روی آزادی به نام Libre Office در حال توسعه است.
جمع بندی
- آزادی اجرای برنامه برای هر هدفی (آزادی صفرم)
- آزادی مطالعه چگونگی کار برنامه و تغییر آن (پیش نیاز: متن برنامه) (آزادی یکم)
- آزادی تکثیر و کپی برنامه (آزادی دوم)
- آزادی تقویت و بهتر کردن برنامه و توزیع آن برای همگان (پیش نیاز: متن برنامه) (آزادی سوم)
نرم افزار آزاد تحت مجوزهای آزاد منتشر میشود تا قانون موظف باشد آزادیهای آن را تضمین کند. نرمافزار آزاد با نرم افزار بازمتن و نرم افزار مجانی تفاوت دارد.
تا به اینجا قبل گفتیم که هکری اسطورهای به نام ریچارد استالمن در اوایل دهه ۸۰، درس را رها کرد و با ایجاد موسسهای نرم افزاری شروع به تبلیغ مفهوم آزادی در دنیای کامپیوتر کرد. دغدغه اصلی استالمن این بود که مردم باید کنترل کامل ابزاری که از آن استفاده میکنند را شخصا در دست داشته باشند و بتوانند با بررسی، بهبود و به اشتراک گذاشتن نرم افزارها، در خلق دنیایی بهتر و آزادتر سهیم باشند. مشخص است که این کار باید از پایین ترین لایه نرم افزاری شروع شود: سیستم عامل.
سیستم عامل آزاد گنو
همانطور که میدانید کامپیوتر از دو بخش سخت افزار و نرم افزار تشکیل شده.
سخت افزار عبارت است از هر چیز فیزیکی قابل لمس که در یک کامپیوتر مرسوم شامل نمایشگر، مادربرد، سی پی یو، کارت شبکه، حافظه، کیبورد، ماوس، وسایل ذخیره سازی مانند هارد دیسک و شاید حتی یک چاپگر یا وب کم میشود. این اجزا هر کدام نیاز به راه اندازی و از آن مهمتر ارتباط برقرار کردن با یکدیگر دارند.
در حال حاضر کارت شبکه شما برای ارتباط با اینترنت تنظیم شده، مرورگر یا برنامه ایمیل خود را از روی هارد دیسک اجرا کرده اید، با استفاده از دکمههای کیبورد یا ماوس این متن را بالا و پایین میکنید و ممکن است به شکل همزمان کارت صوتی شما هم مشغول پخش کردن یک آهنگ باشد. کنترل مرکزی تمام اینکارها یا به عبارتی کنترل تمام سخت افزار کامپیوتر شما و برقراری ارتباط بین اجزای مختلف آن، وظیفه سیستم عامل است. در یک لایه بالاتر، سیستم عامل سعی میکند با ایجاد کردن یک محیط گرافیکی و نمایش آیکون ها و دریافت فرمانهای بیشتر و دقیق تر از طریق ماوس و امکانات مشابه، ارتباط شما با سخت افزار را تا جایی که میتواند راحت تر و بی دردسرتر کند.
پس به شکل خلاصه، سیستم عامل کلید ورود شما به دنیای سخت افزار و پایهای ترین نرم افزاری است که هر کامپیوتر برای حتی روشن شدن اولیه باید آن را اجرا کند. اگر این برنامه را در کنترل داشته باشید یعنی سخت افزار در کنترل شما است و در مقابل اگر این برنامه درست کار نکند، کل تجربه کامپیوتری شما تحت تاثیر قرار خواهد گرفت.
به دلیل این اهمیت بالای سیستم عامل در کاربری کامپیوتر، استالمن تصمیم گرفت یک سیستم عامل آزاد بنویسد. سیستم عاملی که هر کس بتواند برای هر کاری که میخواهد از آن استفاده کند، آن را بهبود بخشد و با دیگران به اشتراک بگذارد. مشخص است که این پروژهای است بسیار بزرگ که سالهای سال طول میکشد اما یک هکر واقعی، هیچ وقت نگران وقت نیست و البته هکرهای واقعی، تنها هم نیستند.
استالمن و دیگران اسم پروژه خودشان را GNU گذاشتند که به فارسی میتوانیم آن را گِنو تلفظ کنیم. آنها بهترین معماری سیستم عامل موجود یعنی معماری UNIX که در آن زمان بر روی کامیپوترهای بزرگ به شکل تجاری و بسته موجود بود را انتخاب کردند و شروع کردند به نوشتن یک سیستم عامل کاملا آزاد براساس آن معماری پیشرفته. براساس این معماری لازم بود تا این چهار جزء تکمیل شوند:
- کرنل (Kernel) که هسته اصلی سیستم عامل را تشکیل میداد و از آن انتظار میرفت با شناخت سخت افزارها بتواند با آنها ارتباط برقرار کند.
- محیط توسعه نرم افزار؛ مانند کمپایلرها و کتابخانههای مختلفی که بقیه باید از آنها برای ساخت برنامه در این سیستم عامل جدید استفاده کنند.
- دستورات عمومیزندگی روزمره مانند کپی فایل، برنامه هایی برای کارهای گرافیکی، پوستهای متنی برای صادر کردن این دستورات، ابزارهایی برای فرمت کردن دیسک و… .
- مستندات؛ راهنماهای سیستم عامل و توضیحات متنی پیرامون آن
پروژه گنو به سرعت پیش رفت و سه جزء آخر را با کیفیتی باور نکردنی تکمیل کرد. کیفیت نرم افزارهای آزاد تولید شده برای سه بخش آخر در حدی بودند که بسیاری از سیستم عاملهای دیگر (بخصوص یونیکسی ها) شروع به استفاده از آنها کردند. شاید برایتان جالب باشد که در حال حاضر نیز سیستم عامل مک نسخه ده که بر روی کامپیوترهای اپل جدید اجرا میشوند در لایه پایینی دارای یونیکسی است که از ترکیب محصول پروژه گنو و یک هسته آزاد به نام BSD ساخته شده است.
تولید گنو/لینوکس
آخرین قطعه پازل برای ساخت یک سیستم عامل آزاد را فردی فنلاندی به نام لینوس توروالدز تکمیل کرد. لینوس که دانشجوی دانشگاه و یک برنامه نویس فوق العاده بود به عنوان تفریح شروع به نوشتن یک کرنل کرد که بعدها به نام لینوکس شناخته شد.
لینوس توروالدز این پروژه را در سال ۱۹۹۱ و به گفته خودش برای تفریح شروع کرده بود و مطمئن بود که هیچ وقت جدی نخواهد شد اما بعد از اینکه آن را با مجوز GPL (همان مجوز آزادی که در ابتدای این مقاله در مورد آن صحبت کردیم) منتشر کرد، تقاضا برای ادامه راه آنقدر زیاد شد که نه فقط سالهای بعدی زندگی لینوس و هزاران نفر دیگر صرف تکمیل این هسته شده، که تا امروز هم شغل اصلی او کنترل این پروژه و هماهنگ کردن هزاران نفری است که این هسته را توسعه میدهند.
همراه شدن این هسته قوی و سه جزء دیگر یک سیستم عامل یونیکس که در پروژه گنو در حال پیگیری هستند (محیط برنامه نویسی، ابزارهای عمومیو مستندات)، تشکیل چیزی را دادند که به شکل صحیح باید به آن «سیستم گنو/لینوکس» بگوییم اما بعضی ها در محاوره روزمره آن را به «سیستم عامل لینوکس» یا حتی «لینوکس» کوتاه میکنند هر چند که در نهایت باید بدانیم که «لینوکس» تنها هسته و در نتیجه یکی از چهار جزء اساسی «سیستم عامل گنو/لینوکس» است.
در نهایت باید به این توجه کنید که ایجاد یک سیستم عامل برای استفاده روزمره با داشتن کد منبع چیزهایی به پیچیدگی ابزارهای گنو و محیطهای گرافیکی و درایورهای سخت افزاری و هسته لینوکس، کار سادهای نیست و حتی برای یک فرد کاملا حرفه ای، کمپایل کردن (تبدیل کردن سورس برنامه به برنامه اجرایی) تک تک اینها و چیدن مناسب آنها در کنار هم برای راه اندازی یک کامپیوتر رومیزی، زمان بسیار زیادی وقت خواهد برد.
توزیع ها
حالا که پروژه گنو و هسته لینوکس دست به دست هم داده اند و یک سیستم عامل آزاد خوب ساخته اند، چگونه باید آن را به دست مصرف کننده نهایی رساند؟
میدانیم که نرم افزار آزاد قابل تکثیر است اما دسترسی به سورس یک برنامه یک چیز است و استفاده روزمره از آن یک چیز دیگر. شما برای بوت کردن یک کامپیوتر با گنو/لینوکس سال ۱۹۹۲ باید کرنل را با یکی از ابزارهای گنو به فایل اجرایی تبدیل میکردید. بعد آن را از یک جای بخصوص هارد به بعد روی آن مینوشتید. فلگهایی را تنظیم میکردید تا این برنامه بتواند کامپیوتر را بوت کند و خط فرمان را اجرا کند و بعد تک تک برنامههای کاربردی و کتابخانههای نرم افزاری مورد نیاز آنها را جدا جدا باید کمپایل میکردید (تبدیل به فایل اجرایی میکردید) و براساس نظم و استانداردی که یونیکس استفاده میکند روی دیسک مینوشتید و اگر همه چیز درست و دقیق پیش رفته بود، سیستم با گنو/لینوکس بوت میشد. اینکار حتی حالا هم برای یک حرفه ای، یک پروژه جذاب پر از درگیری در تعطیلات عید به حساب میآید!
برای حل این مشکل، افرادی شروع کردند به انجام تمام این مراحل پیچیده و وقت گیر و عرضه محصول نهایی به شکل یک مجموعه دیسک یا سیدی قابل نصب. بعضی از این افراد این دیسک ها را میفروختند (حتما از قبل به یاد دارید که فروختن یک نرم افزار آزاد تا وقتی که سورس آن هم در دسترس باشد هیچ مشکلی ندارد) و بعضی ها آنها را به رایگان بین دیگران توزیع میکردند. این مجموعه ها، توزیعهای لینوکس یا همان Linux Distroها نامیده شدند. قدیمیترین دیسترو (یا همان توزیع لینوکس) که هنوز هم زنده است، اسلکور نام دارد.
با آمدن سیدی به بازار، فضای ذخیره سازی به ناگهان بسیار زیاد شده بود پس دیستروهای لینوکس هم شروع کردند به استفاده از این فضای عظیم که تازه در اختیارشان قرار گرفته بود. آنها نه فقط هسته لینوکس و ابزارهای گنو که بسیاری برنامههای آزاد دیگر را هم روی توزیعهای خود عرضه میکردند. مثلا ممکن بود یک نفر تصمیم بگیرد که یک محیط کار گرافیکی، برنامههای آفیس آزاد (لیبره آفیس)، برنامه چت و فایرفاکس را در توزیع خود بگنجاند. در صورتی که شما این سیدی را در کامپیوتر میگذاشتید و آن را بوت میکردید با لینوکسی روبرو میشدید که این برنامه ها در آن نصب بود. یا ممکن بود یک توزیع دیگر تصمیم بگیرد با حذف آفیس از نصب پیش فرض، برنامه ادیت تصویر قوی تری به سیدی اضافه کند و به جای فایرفاکس هم، گوگل کروم را نصب نماید و تم و بک گراوند را هم از آبی به قهوهای تغییر دهد.
علاوه بر انتخاب بسته ها و تنظیمات عمومی، توزیع ها گاهی برنامههای مخصوص به خودشان را هم به کل سیستم عامل گنو/لینوکس اضافه میکنند. این برنامه ها معمولا برای تنظیمات راحت تر سیستم یا حذف و اضافه برنامه ها یا آپدیت برنامههای نصب شده بکار میروند.
از مشهورترین توزیع ها میشود به ردهت (RedHat) و دبیان (Debian) اشاره کرد که بسیاری از توزیعهای مشهور دیگر از آنها منشعب شده اند. برای مثال اوبونتو که این روزها یکی از پرطرفدارترین لینوکسهای موجود است (یا به عبارت صحیح تر یکی از مشهورترین توزیعهای گنو/لینوکس موجود) از دبیان انشعاب یافته و فدورا (Fedora) هم به نوبه خود شاخهای از ردهت به شمار میرود.
تا به اینجا در مورد نرم افزار آزاد و چهار اصل پایهای آن صحبت کردیم. همینطور گفتیم که استالمن پایه سیستم عاملی آزاد به نام گنو را گذاشت که بعدها با اضافه شدن هسته لینوکس (که توسط لینوس توروالدز- Linus Torvalds- فنلاندی نوشته شده بود)، تبدیل به یکی از هیجان انگیزترین سیستم عاملهای جهان شد.
همینطور با مفهوم توزیع آشنا شدیم و از نمونههای مشهوری مثل دبیان، فدورا و اوبونتو نام بردیم. همانطور که دیدیم توزیع ترکیبی است از برنامههای روی یک سیدی یا دیویدی که میتواند به شکل صحیح هسته لینوکس، ابزارهای مورد نیاز آن و هر چیز دیگری که برای اجرای یک سیستم عامل لازم است را راه اندازی نموده و اکثرا در صورت درخواست شما آنها را بر روی کامپیوتر نصب میکند. همچنین توزیع ها معمولا رابط هایی برای نصب برنامههای دیگر و همچنین چند برنامه برای انجام راحت تنظیمات دارند. مشخص است که مستقل از اینها، هر توزیع معمولا گرافیک و شکل ظاهر منحصر به فرد خود را هم ایجاد میکند.
سایت دیستروواچ که مرجعی برای بررسی همه توزیعهای لینوکس است بیش از سیصد توزیع فعال لینوکس را زیر نظر دارد. هر کدام از این توزیع ها با هدف متفاوتی ساخته شده اند و در این بخش سعی میکنیم نگاهی به این اهداف بیندازیم.
لینوکس سرور
لینوکس سیستمیمشابه یونیکس است (یا به عبارت صحیح، گنو/لینوکس یک سیستم عامل مشابه یونیکس است) که از ابتدا با معماری یک سیستم عامل امن، چندکاربره و با تواناییهای کار در شبکه طراحی شده است. این سیستم عامل به خاطر عضویت در خانواده یونیکس و همچنین پایداری هسته و قدرت غیرقابل رقابتی که ابزارهای گنو به آن میدادند، بسیار سریع تبدیل به یکی از محبوب ترین سیستم عاملهای سرور شد. تا قبل از لینوکس بیشترین سهم از بازار شبکهها در دست شرکت ناول بود اما گنو/لینوکس توانست به سرعت سرورهای ناول را که از نظر تکنولوژی نتوانسته بودند به خوبی خودشان را با اینترنتی که داشت همه گیر میشد هماهنگ کنند کنار بزند و به قدرت بلامنازع سرورهای اینترنت تبدیل شود.
تلاشهای بعدی اپل و مایکروسافت برای ارائه سرورهای مبتنی بر سیستم عاملهای خودشان موفقیت چندانی نداشت. حداقل در زمینه سرورهای اینترنتی، یونیکس ها میدان را به طور کامل در دست گرفته بودند و با گذشت زمان و پیشرفت لینوکس و ظهور شرکت هایی مانند ردهت که نسخههای حرفهای لینوکس سرور به همراه پشتیبانی کامل ارائه میکردند باعث شد لینوکس سهم بیشتر و بیشتری از اینترنت را تصاحب کند. تخمینهای فعلی بیش از ۶۰٪ کل اینترنت را متعلق به سرورهای لینوکس میدانند اما باید اضافه کرد که سهم مایکروسافت تقریبا محدود به سرویس دهندههای کوچک است. این روزها تقریبا تمام سایتهای مشهوری که میشناسید (به جز سایت Microsoft) توسط لینوکس راه اندازی میشوند (از گوگل تا آمازون تا فیس بوک تا توییتر تا نارنجی تا یک پزشک).
اما دنیای سرورها فقط محدود به اینترنت نیست. اکثر سیستمهای پیچیده دیگر دنیا هم با کامپیوترها کنترل میشوند. گنو/لینوکس در این سیستم ها هم نقش بسیار مهمیدارند. تقریبا صد در صد سیستمهای مخابراتی جهان روی یکی از انواع یونیکس (و اکثرا لینوکس) پایه گذاری شده اند و با نگاه به جاهای دیگر هم رد پای لینوکس به وضوح دیده میشود؛ از سازمان امنیت ملی آمریکا گرفته تا پایگاههای پرتاب سفینههای فضایی و سیستمهای کنترل ترافیک و کنترل پرواز. کمیآنطرف تر هم میشود از کمپانیهای فیلمسازی نام برد و این واقعیت که اکثر فیلمهای مشهوری که دیده اید (از شرک و فرار جوجهای گرفته تا مردان سیاه پوش و آواتار و ماتریکس و حتی تایتانیک) روی یک مجموعه کامپیوتری لینوکسی ساخته شده اند. گفته میشود که لینوکس تقریبا ۹۵٪ سرورها و دسکتاپهای کمپانیهای بزرگ ساخت انیمیشن و جلوههای ویژه هالیوود را در اختیار دارد. همچین کامیپوترهای مین فریم (Main Frame) که سخت افزارهایی بسیار قوی هستند برای کار بر روی دادههای عظیم یا محاسبات بسیار حساس و تقریبا به شکل انحصاری توسط شرکتهای بسیار عظیم یا دولتها خریداری میشوند، یکی دیگر از جاهایی هستند که لینوکس به شکل جدی عرضه اندام میکند.
سوپرکامپیوترها
حالا که از مین فریم ها صحبت کردیم، باید جداگانه به نوع خاصی از آن ها هم اشاره کنیم: سوپرکامپیوترها. سوپرکامپیوتر به کامپیوتری گفته میشود که در زمان معرفی در زمینه میزان ظرفیت محاسبه در واحد زمان در دنیا پیشرو باشد. در اصل در هر لحظه سوپرکامپیوترها، سریعترین و قدرتمندترین کامپیوترهای آن تاریخ هستند. این مفهوم از حوالی دهه ۶۰ میلادی مطرح شد و از همان زمان یونیکس ها جولان دهندگان بلامنازع این حوزه بودند. گنو/لینوکس از سال ۱۹۹۹ وارد این میدان شد و با رشدی غیرقابل تصور تا سال ۲۰۱۱ جای خود را روی درصد بسیار زیادی از سوپرکامپیوترهای جهان باز کرد. برای مثال در فهرست ۵۰۰ سوپرکامپیوتر برتر امسال جهان، بیش از ۹۱٪ کامپیوترها از گنو/لینوکس استفاده میکنند. بعضی توزیع ها به شکل اختصاصی برای کار روی سوپرکامپیوترها بهینه سازی شدهاند (مثلا AIXای بی ام) و بعضی سوپرکامپیوترها با کم و زیاد کردن برنامههای مورد نیاز روی یک توزیع معمول (مثل ردهت یا زوزه) به سیستم عامل مورد نظر خود میرسند. نمودار زیر نشان دهنده سلطه مطلق لینوکس در این دنیا است:
جذاب است بگوییم که سریعترین عضو خانواده سوپرکامپیوترهای این لحظه جهان، K computer, SPARC64 VIIIfx 2.0GHz ژاپنی است با سیستم عامل لینوکس، ۷۰۵۰۲۴ هسته و مصرف ۱۲ مگاوات برق و ۱۴۱۰۰۴۸ گیگا حافظه.
لینوکس دسکتاپ
لینوکس روی دسکتاپ هم حضور دارد اما هنوز کسی به درصد درستی از تعداد کامپیوترهای دسکتاپی که از لینوکس استفاده میکنند نرسیده است. منظور ما از دسکتاپ در اینجا کامپیوترهایی هستند که در کاربرد روزمره، کاربران پشت آنها مینشینند؛ پی سیهای درون خانه، کامپیوترهای مورد استفاده در شرکت ها، لپ تاپ ها و موارد مشابه. واقعیت را بخواهید، بعد از همه چک چانه زدن ها بر سر درصد، عددی مورد توافق چیزی بیشتر از یک یا دو درصد نیست.
اما چرا اینطور است؟ امسال یعنی سال ۲۰۱۲، لینوکس به راحتی میتواند یک سیستم دسکتاپ کامل با کیفیتی بهتر از بقیه سیستم عامل ها در نظر گرفته شود. لینوکس از تمام سیستمهای دیگر امن تر است و استفاده بهتری از منابع میبرد. همچنین آزاد است و از نظر فلسفی بالاتر از بقیه اما چرا نتوانسته بازار را فتح کند؟
این بحث جنبههای مختلفی دارد. عبارتی پایهای وجود دارد که میگوید «برای بررسی موفقیت هر سیستم باید هدف آن را در نظر بگیریم». با این دید اگر هدف شما داشتن یک سیستم عامل پایدار و از نظر معماری کاملا مدرن و بهینه است، لینوکس بهترین انتخاب شما است. اگر هدف شما امنیت در اینترنت است، شکی نیست که لینوکس هنوز بهترین انتخاب است. اما فرض کنید هدف شما استفاده از فایلهای آفیس مایکروسافت باشد، اینجا لینوکس میتواند با قابلیت خواندن و نوشتن فایلهای مایکروسافت توسط آفیس آزاد خود، کار شما را راه بیاندازد اما دیگر بهترین انتخاب نیست. اگر به سراغ بازی بروید لینوکس با اینکه بازیهای سه بعدی و استراتژیک دارد، اما بدون شک در مقایسه با یک سیستم ویندوزی بازنده است و اگر خواسته شما از کامپیوتر استفاده از Autocad برای نقشه کشی است، لینوکس بدترین انتخاب ممکن است. حرف اصلی در اینجا این است که هدف کاربر مهمترین نکته انتخاب سیستم عامل است. لینوکس شاید از نظر معماری یا فلسفه یا امنیت برتر باشد اما در خیلی جاها کاملا ناکارا است.
یک بحث دیگر، بحث تقدم است. اپل و مایکروسافت تقریبا همزمان شروع به رقابت برای فتح بازار دسکتاپ کردند اما لینوکس سال ها بعد وارد این بازی شد. وقتی شما دیر وارد بازی میشوید، با کسانی طرف هستید که انتخاب هایشان را کرده اند و تغییر عادت مردم کار بسیار سختی است. همه ما با ویندوز کامپیوتر را شروع کردیم و همیشه سوییچ کردن به چیز دیگر برایمان سخت است. علاوه بر این در شرایطی که همه کامپیوترها با ویندوز یا مک فروخته میشوند، کاربران لینوکس تنها کسانی خواهند بود که شخصا آن را روی کامپیوترشان نصب کند. چرخه معیوب وقتی کامل میشود که از آن طرف هم چون همه مردم به ویندوز یا مک عادت دارند هیچ تولید کنندهای سخت افزار خود را با لینوکس عرضه نکند و در نتیجه مردم به عادت هایی که دارند، ادامه بدهند.
ضعف آخر لینوکس روی زندگی دسکتاپ پشتیبانی سخت افزاری است. این مشکل ده سال قبل بسیار عمده بود اما حالا انتظار میرود هر سخت افزار مرسومیدر لینوکس بدون نیاز به درایور یا هر چیز دیگر به شکل خودکار شناسایی شود. میدانید که هر سخت افزاری بخرید یک سیدی راه انداز ویندوز درون جعبه اش وجود دارد اما با توجه به آمار یک درصدی کاربران لینوکس، بیشتر تولید کنندگان سخت افزار نیازی نمیبینند برای این بازار کوچک درایو بنویسند. در نتیجه این خود نویسندگان کرنل هستند که باید برای تک تک سخت افزارهای تولیدی، درایور به کرنل اضافه کنند و این کار راحتی نیست. البته این مشکل در چند سال اخیر به خاطر وارد شدن شرکتهای بزرگ به عرصه لینوکس دسکتاپ و زیاد شدن کاربران بسیار کم رنگ شده و حالا انتظار میرود هر سخت افزار معقولی، در لینوکس پشتیبانی شود اما این نکته کماکان باید به عنوان یک نقطه ضعف لینوکس گوشزد شود.
در حال حاضر با حضور شرکتهای بزرگی که سرمایههای بزرگی به دنیای لینوکس دسکتاپ آورده اند، وضعیت در حال پیشرفت است و شرکتی مانند کانونیکال به شکل جدی پیش بینی میکند که تا پنج سال آینده تحول بزرگی در تعداد کاربران لینوکس این شرکت- یعنی اوبونتو- ایجاد شده باشد.
در یک نگاه کلی، کاربران دسکتاپ لینوکس را میتوان چند دسته کرد:
– خورههای سیستم عامل، شبکه و کامپیوتر و گیک هایی که دوست دارند از یک سیستم عامل قوی استفاده کنند و با زیر دست داشتن ابزارهای گنو یک هسته با معماری مدرن، نهایت استفاده را از کامپیوترشان ببرند.
– معتقدین به فلسفه آزادی و مفاهیم گنو تا جایی که بتوانند از سیستمهای باز به جای سیستمهای بسته استفاده میکنند.
– دولت ها و شرکتهای بزرگی که با جایگزین کردن لینوکس به جای ویندوز یا اپل میتوانند صرفه جوییهای بزرگ در هزینههای راه اندازی و نگهداری خود بکنند. این گروه در چند سال اخیر در حال رشد بوده و در حال حاضر بسیاری از کشورها شروع کرده اند به استفاده از لینوکس در مدارس، ادارات، شهرداری ها، قوه قضاییه و دیگر اجزای بدنه خود.
– کاربران حساسی که نیازمند آگاهی از ابزار زیر دستشان هستند هم یک بخش مهم از کاربران لینوکس رومیزی را تشکیل میدهند. برای مثال اگر سازمان جاسوسی اتحاد جماهیر شوروی قرار بود سندی را تایپ کند فکر میکنید بین یک لینوکس آزاد که خودش متن آن را خوانده و از کاربری اش مطمئن (برای مثال توزیع لینوکس ستاره سرخ) و نرم افزار آفیس مایکروسافت که روی ویندوزی اجرا میشد که یک شرکت آمریکایی تهیه کرده بود، کدامیک را ترجیح میداد؟
– کاربرانی که امنیت و پایداری سیستم هایشان برایشان اهمیت حیاتی دارد. مثلا بورسهای جهان که نمیخواهند هیچگاه نگران ویروس باشند یا کامپیوترهای رومیزی کارمندان یک بخش نظامیکه آخرین چیزی که میخواهند وقت گذاشتن برای نصب آنتی ویروس در وسط حمله دشمن است.
– کسانی که میخواهند از قابلیتهای فنی و معماری پیشرفته گنو/لینوکس استفاده کنند. برای مثال بسیاری از هکرها به خاطر دسترسی آسان به ابزارهای گنو، به سراغ این سیستم ها میآیند.
تصویر زیر آماری از کاربرانی که در اینترنت مشغول گشت زنی هستند و سیستم عامل مورد استفاده آنها را نشان میدهد:
لینوکس توکار
در نهایت طبقه بندیای داریم در انگلیسی که امبد (Embeded) نامیده میشود. این را شاید بتوانیم به فارسی «توکار» یا «جاساز» یا «تعبیه» شده ترجمه کنیم. این جا یک میدان بسیار مناسب برای قدرت نمایی لینوکس است.
سیستمهای توکار سیستم هایی هستند که در ظاهر یک کامپیوتر نیستند اما در باطن یک سیستم عامل مشغول اداره آنها است. از یخچالی که با یک کامپیوتر کنترل میشود بگیرید تا خودرویی که سیستم کامپیوتری داخلی دارد تا گیرنده ماهوارهای که میتواند اطلاعات را روی هارد دیسک ذخیره کند و تلویزیون مدرنی که میتواند به اینترنت وصل شود و گوشی موبایل هوشمند و حتی مریخ نوردی که روی سیاهای دور در حال حرکت است. این سیستم ها در حال گسترش هستند و با توجه به پایین آمدن قیمت سیستمهای امبد، طراحان بیشتری به جای طراحی مدارهای پر دردسر الکترونیکی و سفارش آن ها به شرکتهای بزرگ، تنها با اضافه کردن یک کامپیوتر امبد کوچک به هر چیزی که میسازند و برنامه نویسی برای آن مشکل خود را بسیار ساده تر، سریعتر و معمولا کامل تر حل میکنند.
بسیاری از این سیستم ها با لینوکس راه اندازی میشوند چرا که به خاطر آزاد و بازمتن بودن، این امکان هست که با حذف قسمتهای غیر مورد نیاز، آن را تا حد ممکن کوچک کرد. بهترین نمونه از سیستمهای امبد در اطراف ما گوشیهای موبایل اندرویدی هستند که از کرنل لینوکس استفاده میکنند و اگر بخواهیم به سراغ ابزارهای بزرگ برویم شتاب دهندههای ذرات و مریخ نوردها شاید مثالهای پرهیجانی باشند.
در این میان هم خیلی چیزها با لینوکس زنده میشوند که ما اصولا آنها را نمیبینیم، مثلا مشهورترین رباتهای شیردوش باعث میشوند هر لیوان شیری که میخورید، حاوی لینوکس باشد یا سیستمهای کنترل قطارهای تندرو و چراغهای هوشمند کنترل ترافیک، هر حرکت شما در شهر را با لینوکس همراه میکنند.
در این قسمت با کاربردهای متنوع لینوکس (از سرورها و دسکتاپ ها گرفته تا سیستمهای امبد) آشنا شدیم و دیدیم که توزیعهای مختلف با انگیزههای مختلف و هدفگیری کاربران مختلف در حال توسعه هستند. حالا میدانیم که توزیع لینوکس چیز عجیبی نیست و تنها ترکیبی است از برنامههای پیش فرض و سیستمهای نصب نرم افزارهای مورد نظر شماست.
دیدیم که لینوکس روی سرورها، سوپرکامپیوترها، کامپیوترهای خانگی و حتی بسیار از ابزارهای اطراف ما در حال اجرا است و لذت بردیم از اینکه بسیاری از جنبههای زندگی روزمره ما به لینوکس آغشته است بدون اینکه حتی متوجه آن باشیم. قبول داریم که این مبحث طولانی بود اما خوشحال باشید چرا که در ادامه قرار است در مورد نصب لینوکس صحبت کنیم که از یک طرف مبحث را «عملی» تر میکند و از یک طرف پر از عکس و تصویر. در ادامه قرار است برای اولین بار با یک سیستم لینوکس واقعی آشنا شوید.
منابع مطالعه بیشتر:
– فهرست پانصد کامپیوتر سریع جهان
تا به اینجا با فلسفه و مفاهیم نرم افزار آزاد آشنا شدیم و کاربردهای متنوع گنو/لینوکس را دیدیم. حالا موقع مناسبی است برای عملی کردن حرف ها و نصب یک لینوکس دسکتاپ.
میدانید که برای شروع باید اول یک توزیع انتخاب کنیم. توزیع ها بسیار متنوع هستند و هر کدام برای هدف خاصی ساخته شده اند. اگر در دنیای لینوکس تازه کار هستید، بهتر است موضوع را خیلی سخت نگیرید و با یکی از توزیعهای مرسوم مانند فدورا،اوبونتو، دبیان یا مینت شروع به کار کنید. بعدا که دید بیشتری به دست آوردید به راحتی خواهید توانست توزیعهای دیگری را نیز محک بزنید و تشخیص بدهید که کدامیک برای شما مناسب تر است.
برای این قسمت از بین همه توزیعهای متنوعی که نام بردیم و حتی گزینههای بسیار خوبی که در دنیای فارسی زبان موجود است (مثلا توزیع گنو/لینوکس آریوس، پارسیدورا و پارسیکس) من توزیع لینوکس/مینت را انتخاب کرده ام چرا بر پایه اوبونتو ساخته شده و در نتیجه تمام مزایای آن (مانند بهینه شدن برای کاربر نهایی و داشتن جامعه کاربری بزرگ) را دارد و همچنین به طور خاص چیزهایی به آن اضافه شده که آن را درست بعد از نصب برای هر کاربر عمومیمتناسب میکند (مانند کدک ها و قابلیت پخش فرمتهای متنوع).
برای شروع به کار، باید یک سیدی لینوکس داشته باشیم تا کامپیوتر را با آن بوت کنیم. ما بعد از ورود به سایت لینوکس مینت، به بخش دانلود وارد شدیم و فایل ایزوی DVD جدیدترین نسخه را دانلود کردیم. سپس آن را روی یک سیدی کپی و سیستم را بوت کردیم.
بسیاری از توزیع ها مرسوم لینوکسهای رومیزی، به شکل دیسکهای زنده عرضه میشوند. یعنی یک سیدی لینوکس کامپیوتر را به شکل کامل بوت میکند و شما میتوانید از لینوکس به شکل زنده و بدون نصب استفاده کنید. اینجا فرصت خوبی است برای محک زدن اینکه آیا از این توزیع خوشتان میآید یا نه. بعد از بوت شدن، کامپیوتر به اینجا رسیده است:
برای پیگری مراحل نصب کافی است بر روی آیکون نصب که به شکل یک سیدی نشان داده شده کلیک کنیم. اول زبان:
و بعد از یک مرحله جلو رفتن، زمان حساس ترین مرحله یعنی انتخاب اینکه لینوکس کجا قرار است نصب شود فرا میرسد:
همانطور که میبینید گزینهای را انتخاب کردهایم که میگوید لینوکس فعلی کل هارد دیسک را پاک کند و خودش را نصب. به پله بعدی نگاه کنید:
در اینجا هارد دیسک مورد استفاده را انتخاب کرده ایم. اینجا تقریبا خطرناک ترین جا برای کسی است که دقیقا از کاری که میکند سر در نمیآورد چون اگر روی این هارد دیسک سیستم عامل یا اطلاعاتی از قبل موجود باشد، ممکن است با انتخاب گزینه اشتباه آن ها را از دست بدهید. اما بعد از این همه چیز ساده است.
در پنجره بالا کشور را انتخاب کردهایم و در مرحله بعدی به خاطر انتخاب ایران، سیستم به ما زبان فارسی را برای رابط کاربری پیشنهاد میدهد. ما رابط استاندارد انگلیسی را ترجیح میدهیم پس آن را مانند تصویر زیر عوض میکنیم:
در قدم بعدی که اینجا میبینید، لازم است مشخصات کاربری را وارد کنیم. چیزهایی مانند اسم کاربر، اسم این کامپیوتر و پسورد مورد استفاده کاربر.
اگر در تصاویر دقیق شده باشید دیده اید که در تمام طول این مدت سیستم در حال نصب بوده. نوار نمایش دهنده میزان پیشرفت کار، هنوز هم در حال جلو رفتن است ولی دیگر سوالی برای پرسیدن باقی نمانده، پس چند اسلاید در مورد قابلیتهای لینوکس مینت دیده میشود:
پس از پایان مراحل نصب، سیستم به شما اطلاع میدهد که زمان ریبوت (Reboot) فرا رسیده است. شاید برایتان جالب باشد که کل مراحل نصب در صورتی که به اینترنت متصل نباشید و سیستم تلاش نکند خودش را آپدیت کند، بیشتر از ده پانزده دقیقه طول نمیکشد که این زمان شامل نصب آفیس، براوزری مانند فایرفاکس، برنامههای گرافیکی، برنامههای پخش موسیقی و چت و غیره است.
بعد از ریبوت و پس از جدا کردن ابزار نصب (مثلا درآوردن سیدی از درایو) کامپیوتر با لینوکس تازه نصب شده، بوت خواهد شد و بعد از چند ثانیه به اینجا خواهید رسید که سیستم از شما میخواهد با یوزر و پسوردی که تعریف کرده اید به سیستم وارد شوید. در اینجا پسورد را وارد میکنید:
حالا به سیستم وارد شده ایم:
همانطور که میبینید توزیع گنو/لینوکس مینت بعد از اولین لاگین کاربر، یک منوی راهنما به وی نشان میدهد. بعد از برداشت تیک «هر بار این را نشان بده (Show this dialog at startup)» بر روی Close کلیک میکنیم و به دسکتاپ سیستم میرسیم:
تبریک میگویم! شما مراحل نصب یک لینوکس را تمام کرده اید. برای رسیدن به منوها میتوانید از این قسمت وارد شوید:
و برای خاموش کردن سیستم، از آن یکی گوشه عمل کنید:
خلاصه
دیدید که نصب لینوکس سخت نیست. تصوراتی مربوط به پانزده سال قبل وجود دارد که برای نصب کردن یک لینوکس باید حرفهای باشید در حالی که اصلا اینطور نیست. تقریبا نصب هر گنو/لینوکسی به این شکل است:
کامپیوتر را با سیدی زنده بوت میکنید. روی آیکون نصب کلیک میکنید و مرحله به مرحله جلو میروید. احتمالا سیستم حین نصب از شما در مورد مکان جغرافیایی (محدوده زمانی)، نام کاربر، پسورد و محل نصب لینوکس سوالاتی خواهد پرسید و بعد از اتمام از شما خواهد خواست با درآوردن سیدی، کامپیوتر را یکبار دیگر بوت کنید. احتمالا در نیم ساعت هر کسی که حداقلی از کامپیوتر آگاهی داشته باشد، میتواند یک لینوکس را نصب کند.
اما لینوکس دنیایی است که هر چقدر از آن بیشتر بدانید راحت تر، حرفهای تر و سریع تر کار میکنید. بزرگترین خطر نصب لینوکس انتخاب «محل نصب» است. وقتی میخواهید لینوکس خود را کنار ویندوز نصب کنید، فقط یک انتخاب اشتباه میتواند منجر به پاک شدن کامل ویندوز شود. یا مثلا یک حرفهای میداند که اکثر توزیع ها در زمان نصب در صورت پیدا کردن اینترنت تصور میکنند این اینترنت سریع است و سعی میکنند خودشان را آپدیت کنند ولی در صورتی که این اینترنت به اندازه کافی سریع نباشد میتواند به راحتی یک نصب بیست دقیقهای را تبدیل به یک نصب چهار ساعته کند، پس بهتر است در پروسه نصب اینترنت سیستم قطع باشد.
در قسمت بعدی، چرخی در محیط گرافیکی لینوکس تازه نصب شده یمان خواهیم زد و چند تنظیم مورد نیاز روزمره (مثلا تنظیم لازم برای تایپ فارسی) را انجام خواهیم داد. پس با ما باشید و پسورد لینوکسی که نصب کرده اید را فراموش نکنید.
حالا که یک توزیع گنو/لینوکس را دانلود کرده و روی هارد خود نصب کرده ایم، وقت آن شده تا چرخی در آن بزنیم و با محیط گرافیکی و تنظیمات عمومیاین سیستم عامل تا حدی آشنا شویم.
توجه کنید که هدف ما در این قسمت یاد گرفتن راه حل کارها نیست بلکه دیدن محیط کاری لینوکس است. توزیعی که ما در اینجا نصب کرده ایم، مینت (Mint) نام دارد که یک نسخه منشعب شده از توزیع اوبونتو و کاملا مناسب برای استفاده بر روی سیستمهای دسکتاپ است. مثل هر توزیع دیگر لینوکس، به روز رسانی یکی از اصلی ترین قدمهای بعد از نصب است. آیکون مشخص شده در شکل زیر به شما میگوید که سیستم نیاز به آپدیت دارد و با فشردن آن و دادن پسورد و انتخاب Install Updates به روزرسانی سیستم شروع میشود.
حالا باید چند دقیقهای منتظر آپدیت شدن سیستم بمانیم، بگذارید در مورد افسانهای اشتباه در دنیای لینوکس صحبت کنیم که میگوید حذف و نصب برنامه در این سیستم ها سخت است و نیاز به مهارت فنی بالا یا استفاده از خط فرمان (Command Line) دارد. این درست نیست.
تقریبا تمام توزیعهای لینوکس برنامهای مستقل دارند که میتوان از طریق آن برنامههای مورد نظر را به سیستم اضافه یا از آن حذف کرد؛ اینکار بر خلاف ویندوز از یک محل کنترل مرکزی انجام میشود. خوشبختانه اخیرا سیستم عاملهای موبایل مانند اندروید و آی.او.اس و همینطور سیستم عامل مک او.اس.ده این مفهوم «منابع نرم افزاری» را به سیستمهای خود اضافه کرده اند و در نتیجه «منابع نرم افزاری» دیگر مفهومیناآشنا نیستند.
این سیستم ها (که ریپوزیتوری یا منابع نرم افزاری نامیده میشوند)، فهرستهای بزرگی هستند از حجم زیادی برنامه قابل نصب بر روی سیستم شما. مثلا اگر بخواهیم در همین لحظه برنامه چت اسکایپ را روی سیستم نصب کنیم کافی است وارد برنامه مدیریت نرم افزارها شویم، Skype را جستجو کنیم و با زدن تیک کنار آن و Apply کردن، به سیستم بگوییم که آن را از روی منابع نرم افزاری گنو/لینوکس مینت نصب کند. چند دقیقه بعد این برنامه دانلود شده و به شکل خودکار نصب خواهد شد:
میبینید که این سیستم عملا راحت ترین روش ممکن برای نصب برنامه است و یکی از تفاوتهای توزیع ها هم در اینجاست که چه حجمیبرنامه در منابع آنلاین آنها موجود است. در حال حاضر بیشترین تعداد برنامه موجود در ریپوزیتوری ها مربوط به توزیع Debian و Arch است که اولی با داشتن فرزندی مانند Ubuntu برای استفاده بی دردسر نیز بهینه سازی شده است. در ضمن به این دقت کنید که این سیستم باعث میشود سیستم عامل نگاه جامعی بر روی همه برنامههای نصب شده داشته باشند و در صورت نیاز بتواند به شما اطلاع بدهد که چه برنامهای نیاز به بروزرسانی دارد و غیره.
حالا که سیستم مدیریت بسته گنو/لینوکس را دیدهایم و سیستم هم در حال آپدیت شدن است، بد نیست علیالحساب امکان تایپ فارسی را در سیستم خود فراهم کنیم. فرض کنیم اصولا نمیدانیم چطور باید اینکار را بکنیم پس از بدیهی ترین راه ممکن شروع میکنیم: نگاه انداختن به منوها که به سرعت ما را به گزینه صحیح که System Setting (تنظیمات سیستم) است میرساند:
با فشردن آن پنجرهای ظاهرا میشود که حاوی بخش بزرگی از تنظیمات عمومیسیستم است. ما به دنبال فارسی کردن صفحه کلید هستیم پس کافی است روی Keyboard Layout (چینش صفحه کلید) کلیک کنیم و بعد از انتخاب برگه (Tab) مربوط به Layout به این بخش از تظیمات برسیم:
میبینید که در شکل بالا تنها صفحه کلید انگلیسی انتخاب شده پس ما با فشار دادن علامت + میگوییم که میخواهیم یک Layout به چینشهای صفحه کلید مورد استفاده اضافه کنیم:
با انتخاب Persian و فشار دادن Add، صفحه کلید فارسی به صفحه کلید انگلیسی اضافه میشود. اما چطور باید بین آنها سوییچ کنیم؟ اینکار منطقا باید در بخش Option امکان پذیر باشد پس آن کلید را فشار میدهیم:
میبینید که تعداد زیادی گزینه در طبقه بندیهای مختلف در اختیار ما قرار گرفته است. چیزی که من به دنبال آن هستم کلید مربوط به تغییر لی آوتهای مختلف کیبورد است و میبینید که بعد از باز کردن آن بخش، کنار Alt+Shift تیک زده ام. حالا آلت و شیفت صفحه کلید را تغییر میدهند. میبینید که از منوها یک برنامه نوشتن متن پیدا کرده ام و یک نکته علمیکوچیک را برایتان تایپ کرده ام. در ضمن توجه کنید که چطور لینوکس به راحتی تشخیص داده که کدام بخش متن انگلیسی و کدام بخش فارسی است و به شکل متناسب آن را راست به چپ یا چپ به راست نوشته است. شاید برایتان جالب باشد که لینوکس سال ها قبل از سیستمهای دیگر ساپورت کامل از زبان فارسی و تقویم شمسی را دارا بوده است.
حالا که صفحه کلید را فارسی کرده ایم، اجازه بدهید سری هم به اینترنت بزنیم. منطقا میخواهیم اینترنت را با یک مرورگر بچرخیم، پس از منوی بالایی در بخش Internet، به دنبال یک مرورگر وب میگردیم و Firefox را کشف میکنیم:
بگذارید با زدن Alt+Tab یا کلیک کردن روی پنجره کوچک شده آپدیت سیستم، نگاهی به آن بندازیم:
همانطور که میبینید بستههای مورد نیاز کاملا دانلود شده و سیستم در حال آپدیت شدن است. یعنی حالا سیستم شما دارد هر بسته قدیمیکه نسخه جدیدتری از آن وجود دارد را ارتقا (Upgrade) میدهد. اینکار با رفع باگ ها، پچ کردن مشکلات امنیتی، بهبود سرعت سیستم و افزودن قابلیتهای جدید به آن باعث تجربه بهتری در استفاده از سیستم عامل و برنامه ها خواهد شد.
راستش را بخواهید اکثر لینوکسی ها معتاد به آپدیت هستند و دائما چک میکنند تا ببینند آیا یکی از برنامه هایی که از آن استفاده میکنند آپدیت شده است یا نه و در صورت دیدن آپدیت احساس میکنند که زندگی شان مطمئنا از چند ساعت قبل بهتر شده است!
تا سیستم در حال آپدیت است این را هم بگوییم که سیستم پیش فرض مینت شما، برنامههای زیادی دارد. همان یک ربع یا بیست دقیقه که صرف نصب آن کرده اید یک مرورگر وب، یک برنامه ایمیل خوان، برنامه چت، مجموعه آفیس (به نام لیبره آفیس)، برنامه ادیت تصاویر به نام گیمپ (Gimp) و انواع برنامههای پخش موسیقی و نوشتن روی دیویدی و… را روی سیستم خود نصب کرده اید.
راستی! تا مراحل آخر آپدیت در حال انجام است بگذارید دو راز را به شما بگوییم که کمک میکند تا آخر عمر بهترین متخصص کامپیوتر باشید. اولی سایتی آشنا به اسم گوگل است که در آن میتوانید تقریبا جواب هر سوال مربوط به لینوکس را پیدا کنید و دومیاین واقعیت است که سیستم ها ساخته شده اند تا شما به سادگی از آنها استفاده کنید. همانطور که در بحث تغییر صفحه کلید دیدید، باید از گشتن در منوها و وارد شدن به مرتبط ترین منوها شروع کرد و کم کم به جای مورد نظر رسید. اگر الان تصمیم بگیریم برای تاکسی که روی دسکتاپ است سبیل بگذاریم چکار میکنید؟ منطقی ترین کار رایت کلید کردن روی آن است و نگاه کردن به منوها است و رسیدن به گزینه «باز کن با… (Open With)» و سپس باز کردن آن با برنامه ادیت تصاویر گیمپ:
و پس از اینکه گیمپ باز شد اضافه کردن سبیل:
و حالا هم اگر بخواهم آن را به عنوان تصویر پس زمینه انتخاب کنم، اولین ایده رایت کلیک و نگاه کردن به گزینه هاست. متاسفانه آنجا دستور مستقیمیبرای تنظیم این عکس به عنوان عکس پس زمینه لینوکس نمیبینم پس این بار روی عکس دوبار کلیک میکنیم تا مرسوم ترین برنامه باز شود. اینجا چرخی در منوها میزنیم و گزینه مورد نظرم را کشف میکنیم:
و میبینید که کار میکند:
در ضمن در تصویر میبینید که آیکون وضعیت آپدیت سیستم حالا به یک تیک سبز تغییر یافته که اگر ماوس را روی آن نگه دارید به شما میگوید سیستم به طور کامل آپدیت است.
شاید دوست داشته باشید به اولین اسکرین شات برگردید که این تصویر یک علامت تعجب نشان میداد (به معنی نیاز به آپدیت) یا عکسهای وسط که یک چرخ دنده به شما میگفت سیستم مدیریت بسته در حال کار است. حالا اینجا یک تیک سبز داریم یعنی آپدیت انجام شده است و در نتیجه این قسمت تمام شده است!
در این بخش با هم چرخی در محیط کاربری لینوکس زدیم و دیدیم که این سیستم عامل علاوه بر پشتیبانی کامل از زبان فارسی میتواند برای تمام کاربردهای روزمره نیز مورد استفاده قرار گیرد. در بخش بعد نگاهی خواهیم انداخت به توان تغییر پذیری این سیستم بنا به علایق کاربرهای مختلف و امکان تنظیم آن براساس نیازهای هر فرد.
اگر کلمات بخشهای این سلسله مقالات را بشماریم و آن ها را به ترتیب پر استفاده بودن مرتب کنیم- بعد از حذف کلمات عمومی- احتمالا کلمه آزادی و مشتقات آن در صدر کلمات پر استفاده خواهند بود. این آزادی در این بخش هم شدیدا استفاده خواهد شد اما از یک زاویه دیگر: آزادی کاربر در انتخاب چیزی که میخواهد و تنظیم ابزارش براساس نیازهای خود.
گنو/لینوکس دنیای آزادی و انتخاب است. انتخاب هایی شبیه اینکه دوست دارید تولبار سیستم در بالا باشد یا در پایین یا در چپ یا راست یا اصولا ترجیح میدهید اصولا تولباری وجود نداشته باشد. البته مثلا شاید یک نفر بخواهد که با فشردن یک دکمه همه آیکونهای برنامههای مختلف را حاضر کند تا با کلیک روی یکی، آن را اجرا نماید در حالی که کس دیگری ترجیح بدهد مانند محیط کاری اپل چند آیکون اصلی به همراه آیکون برنامههای در حال اجرا همیشه آن پایین حاضر و آماده باشند.
البته یک حرفهای لینوکس سریعا در اینجا به شما تذکر میدهد که حق انتخاب این دنیا، چیزی بسیار عمیق تر از شخصی سازی رنگ ها و جای چیزها است. در دنیای لینوکس میتوانید تا عمیق ترین سطح سیستم (مثلا تا خود کرنل) سیستم را دستکاری کنید. میتوانید براساس سخت افزار مورد استفاده سراغ تنظیمات سبک تری بروید و مثلا از یک میز کار خیلی کوچیکتر برای یک کامپیوتر بسیار قدیمیکه میخواهید در خانه همیشه به اینترنت وصل بماند استفاده کنید یا اگر کامپیوتری به روز دارید، سراغ یک میز کار سه بعدی با همه جذابیتهای بصری ممکن بروید.
سیستم عاملهای دیگر ممکن است تنظیمات متنوعی به شما بدهند. مثلا در ویندوز میتوانید تم را عوض کنید یا در مک جا و اندازه آیکونهای برنامه ها را، اما اینجا بحث فراتر از تنظیم چیز موجود است: اینجا حق کنار گذاشتن یک چیز و انتخاب چیز دیگر به جای آن را دارید. برای مثال اگر شما بعد از نصب لینوکس اوبونتو با این میز کار مواجه شدید که یونیتی نام دارد:
و حتی بعد از انجام تغییرات عمده در آن از طریق تنظیمات وسیعی که قابل تغییر توسط کاربر است از آن خوشتان نیامد میتوانید آن را همانطور که ممکن است آی.ای را با فایرفاکس تعویض کنید، با این میز کار جدید که نصب میکنید جایگزین کنید:
این میز کار KDE نام دارد و باید توجه داشته باشید که نمونه تغییر رنگ یافته قبلی نیست. این کلا یک برنامه جدید برای مدیریت محیط گرافیکی است که هر چند هنوز میتواند برنامههای قبلی را اجرا کند اما فلسفه متفاوتی را پیگیری میکند. درست مانند اینکه مایکروسافت دوبار با دو دید مختلف و با دو هدف متفاوت محیط گرافیکی ویندوز را نوشته باشد.
دو نمونه بالا فقط دو مورد مشهور از میزهای کار هستند. شاید برایتان جالب باشد که در دنیای گنو/لینوکس افراد مختلف با اهداف متنوع میزهای کار مختلفی نوشته اند. همانطور که شما اجازه دارید بین چهار پنج مرورگر اصلی (آی.ای، فایرفاکس، کروم، اپرا و سافاری و غیره) انتخاب کنید که کدام را ترجیح میدهید، در مورد میزکار هم همین انتخاب را دارید و حتی ممکن است با افرادی مواجه شوید که به دلایل فنی از یک میز کار بسیار متفاوت مانند Awesome استفاده میکنند که علاوه بر مدیریت خودکار پنجره ها در مانیتورهای متفاوت اجازه نمیدهد هیچ فضایی روی هیچ نمایشگری حرام شود یا پنجرهای با رفتن زیر پنجره دیگر، غیرقابل دید باشد:
اما این تنوع از کجا میآید؟
در یک نرم افزار تجاری، قبل از ارائه محصول چند نفر تصمیم میگیرند که برنامه دقیقا قرار است چه کاری انجام دهد و بعد تیمیاز برنامه نویس ها تمام تلاش خود را میکنند تا دقیقا مشابه آن را پیاده کنند. اگر بعدها ایدههای جدیدی مطرح شوند، شرکت تلاش خواهد کرد تا با اعمال آن ها در یک نسخه جدید و فروختن آن به مشتریان پول بیشتری در بیاورد و آنان را نیز راضی نگه دارد. این شرکت تجاری بنا به دیدگاه خود ممکن است سعی کند امکان تنظیم بعضی چیزها را به کاربر بدهد (مثلا ویندوز ممکن است تلاش کند تا با استفاده از تم ها، ظاهر سیستم را قابل تغییر کند) یا ممکن است با این ایده مخالف باشد و بگوید که کاربر نهایی نباید اجازه داشته باشد چیزی را بنا به سلیقه خودش تغییر بدهد چون چیزی که ما در اختیارش گذاشته ایم، بهترین چیز ممکن است (برخورد شرکت اپل که در سیستم عامل حداقل امکان تنظیمات غیر ضروری را به کاربر میدهد).
در این دیدگاه تجاری، ما با یک طراح طرف هستیم که پیش از ساخت هر چیزی تلاش میکند کل جنبههای آن را پیش بینی کند و محصولی بسازد که با حداقل تلاش به بیشترین درآمد برسد. برای چنین تولید کنندهای منطقی نیست که سعی کند با دو محصول متفاوت به یک نیاز پاسخ بدهد یا سراغ محصولی برای یک بازار مثلا پنج هزار نفری برود؛ اگر هم اینکار را بکند مجبور است قیمت را آنقدر بالا ببرد که تلاشش از نظر تجاری برای سرمایه گذاران قابل دفاع شود.
در دنیای آزاد، فلسفه از پایه متفاوت است. این دنیا با این ایده شروع شد که «تولید کننده، مصرف کننده است». کسی برنامه را مینویسد که خودش میخواهد از آن استفاده کند و در نتیجه سعی میکند بهترین چیز ممکن را ایجاد کند و دائما آن را براساس نیازهای روزمره اش بهینه کند و تغییر دهد. مشخص است که این استراتژی یک نقطه منفی هم دارد: طراحی اولیه. گاهی در بعضی برنامه ها برنامه نویس از روز اول شروع به طراحی کل جزییات برنامه نکرده و در نتیجه ممکن است تمام نیازهای کاربران آینده از اول پیش بینی نشده باشد. اما شیوه توسعه نرم افزار آزاد یک قدرت عظیم هم دارد: پیروی از طبیعت. در طبیعت گونههای زیستی دائما در حال بهبود هستند. هر گونه جهش هایی میکند و تغییراتی مییابد و در نسل بعد آنهایی که سازگاری بیشتری با محیط داشته اند باقی میمانند تا تبدیل به والدین نسل بعدی شوند. این دقیقا شیوهای است که نرم افزار آزاد رشد میکند.
در طبیعت کسی نیاز ندارد از لحظه اول بداند که گوریل قرار است در قرن بیستم چقدر پشم داشته باشد. این موضوع خود به خود از طریق انتخاب اصلح، تنظیم میشود. هر گوریل براساس خصوصیات ژنتیکی پدر و مادر و چند متغیر اتفاقی مانند جهش ژنتیک مقدار خاصی پشم دارد و آنهایی که پشم مناسبتری برای دوره زندگی خود داشته اند به خاطر شانس بقای بیشتر، نسل و در نتیجه ژن خود را بیشتر گسترش میدهند و در نتیجه در طول میلیون ها سال هر جزء از هر موجود زنده در طی پروسهای که داروین آن را «بقای اصلح» خوانده بود، در بهترین سطح خود تنظیم میشود. در دنیای آزاد هم یک برنامه نویس با نوشتن یک کد- مثلا برای نمایش یک صفحه وب به شکل گرافیکی- شروع میکند. اگر دیگران آن را مفید تشخیص دهند بنا به نیاز خودشان آن را تغییر میدهند و طبق مجوز GPL که در قسمتهای قبل آموختید، آن را با دیگران به اشتراک میگذارند. ممکن است همزمان ده نفر روی کد اولیه کار کرده باشند اما وقتی نسل بعدی میخواهد راه آنها را ادامه بدهد از شاخهای ادامه میدهد که بهترین سازگاری و سریعترین اجرا را داشته و در نتیجه این نسخه بهتر، دوباره توسط برنامه نویسهای جدید تکمیل میشود. این دقیقا همان شیوهای است که در طبیعت دنبال میشود: تکامل.
حتی توزیعهای گنو/لینوکس هم همینطور کار میکنند: یک گروه یک توزیع میسازند (مثلا دبیان) و گروههای بسیار متنوع از این توزیع، فرزندان جدید تولید میکنند (مثلا اوبونتو و پارسیکس) و آنی که محبوبیت بیشتری پیدا میکند (معمولا به خاطر سازگاری بیشتر و مفید بودن برای گروههای متنوع)، پایه لینوکسهای جدید میشود که دوباره من و شما در نقش جامعه با استفاده کردن از یکی و کنار گذاشتن دیگری، در طی پروسه انتخاب اصلح، میگوییم نسلهای بعدی باید از کدام انشعابات استفاده کنند و کدام توزیع ها محکوم به فنا هستند.
دقت کنید که این امر فقط از طریق آزاد بودن کد پیش میآید چرا که افراد، شرکت ها و گروه ها باید بتوانند در یک برنامه تغییرات جدید بدهند و برنامه هایی با قابلیت یا شکل جدید را در جامعه پخش کنند تا ببینند کدام یک توسط کاربران ترجیح داده خواهد شد. شرکتهای تجاری هنوز باید به سیستم قدیمی«طراحی از قبل» خود وابسته باشند. مثلا اگر به مرکز نرم افزار اوبونتو نگاه کنید میبینید که در حوالی سال ۲۰۰۹ چند توزیع تغییراتی در سیستم قدیمینصب بسته ها دادند و مفهوم سافتور سنتر را ساختند و بعد از دیدن علاقه کاربران به آن، توزیعهای بزرگی مثل اوبونتو هم به سراغ آن رفتند در حالی که اپل باید صبر میکرد تا در نسخه بعدی این ایده موفق را تکرار کند و مایکروسافت هم هنوز منتظر است تا در ویندوز ۸، اینکار را به انجام برساند و در موارد شکست هم، در مورد سیستمهای آزاد مبتنی بر تکامل تنها یک شاخه مرده به وجود میآید اما در مورد سیستمهای تجاری، طراحیهای ضعیف منجر به ضررهای هنگفتی مانند ویندوز ویستا میشوند.
در نهایت این را هم ذکر کنم که همیشه لازم نیست که فقط و فقط یک سیستم بهتر از همه تشخیص داده شود و بقیه را کنار بزند. در دنیا افراد مختلف با نیازهای مختلفی وجود دارند و وقتی ما یک شرکت تجاری نباشیم که بخواهیم با حداقل محصولات حداکثر سود را کسب کنیم، لازم نیست برای همه سوال ها یک جواب ثابت داشته باشیم. ممکن است یک نفر بخواهد سیستمش حداکثر تنظیم پذیری را داشته باشد و حتی بتواند اسمایلیهای مورد استفاده در همه برنامه ها را از یک سیستم مرکزی کنترل کند. چنین فردی باید به سراغ محیط کار KDE برود. در مقابل شاید یکی طرفدار ایده «کمتر، بیشتر است» و «ساده زیباست» باشد و بخواهد در حین کار با کامپیوتر حداقل دکمه ها و کلیدهای ممکن را ببیند. برای چنین فردی محیط کار Gnome مناسب تر است. این بحث حتی فراتر از سلیقه است. شاید شما کامپیوتر ضعیفی داشته باشد که نیازمند یک محیط کار قابل کنترل با کیبورد و مصرف حداقل حافظه باشد و به همین دلیل به سراغ نصب محیطهای بسیار سبکی مانند LXDE بروید که ضمن داشتن تمام ایدههای مدرن و سازگاری با آخرین نرم افزارها، انرژی کمیرا برای جلوههای بصری هدر میدهد یا حتی تصمیم بگیرید که محیط گرافیکی را کاملا کنار بگذارید و فقط با خط فرمان کار کنید! غیر ممکن است؟ نه! در قسمت بعد به این موضوع نگاه میکنیم.
خط فرمان یا کامند لاین روشی است برای ارتباط با سیستم عامل. این روش به ساده ترین حالت ممکن کار میکند: متن. در خط فرمان شما میتوانید مستقیما دستوراتی را برای کامپیوتر تایپ کنید و بعد از زدن کلید Enter، کامپیوتر دستورات شما را اجرا خواهد کرد و در صورت نیاز با نوشتن جواب، به شما پاسخ خواهد داد. این موضوع در تقابل با رابط گرافیکی قرار دارد که در آن دستورات از طریق ماوس، منوها، کلیک کردن و موارد مشابه داده میشود و جواب ها از طریق تصاویر و نمودارها و غیره به نمایش در میآید.
همانطور که در پارگراف قبل گفتم، دسترسی به خط فرمان به شکل متنی و با نوشتن و دیدن دستورات و نتایج آنها انجام میشود. برای انجام این کار نیاز به یک برنامه است و این برنامه «شبیه ساز ترمینال» یا همان «ترمینال امولاتور» نام دارد که برای ساده شدن کار به آن ترمینال میگوییم.
اگر بپرسید چرا این برنامهها را شبیه ساز ترمینال مینامند، باید بگویم که در زمانهای قدیم که کامپیوترها بسیار گران بودند، دانشگاه ها یا موسسات بسیار پولدار یک کامپیوتر مرکزی میخریدند که در اصل یک سی پی یو (پردازنده) بود و کمیحافظه و یک دیسک و بعد هر کسی که میخواست از آن استفاده کند، با استفاده از دستگاهی مانند تصویر زیر به آن وصل میشد:
دستگاه بالا را «ترمینال» مینامیدند. برخلاف ظاهر کامپیوتر مانند آن، این دستگاه تنها یک نمایشگر و یک کیبورد است که باید آن را از طریق یک شبکه خاص به یک کامپیوتر مرکزی متصل کرد. این ترمینال فقط و فقط توانایی تایپ کردن دستورات و نمایش خروجی به منظور ارتباط با کامپیوتر مرکزی را دارد. مشخص است که عمر این دستگاه ها به سر رسیده و حالا حتی اگر قرار باشد با یک کامپیوتر مرکزی ارتباط برقرار کنیم و دستوراتمان را به آن بفرستیم، از یک کامپیوتر واقعی استفاده میکنیم که روی آن یک شبیه ساز ترمینال (یعنی نرم افزاری که عملکرد مشابه عکس ترمینال بالا دارد) قرار دارد.
اما اگر فکر میکنید ترمینال و خط فرمان یک سیستم قدیمیاست که دیگر کاربرد زیادی ندارد باید بگویم که اشتباه میکنید. تصویر زیر یک مجموعه سرور کامپیوتری به ارزش تقریبی دو میلیون یورو را نشان میدهد که از طریق یک ترمینال آیبیام (IBM)، قابل کنترل است:
در ادامه سعی میکنیم پاسخ به دو سوال مهم را با هم مرور کنیم. اول اینکه چرا لینوکسی ها اینقدر ترمینال شان را دوست دارند و این سیستم چه خاصیتی دارد که حتی در یک سرور چند میلیون دلاری هم آن را به رابط گرافیکی ترجیح میدهند و دوم اینکه یک کاربر لینوکس دسکتاپ بر روی مثلا کامپیوتر شرکت یا خانه، چقدر به آگاهی از این ترمینال نیاز دارد.
شاید یک مثال خوب برای درک اهمیت ترمینال، مقایسه آن با بالا زدن کاپوت خودرو و نگاه کردن به موتور باشد. سیستمهای مشابه یونیکس (از جمله گنو/لینوکس ها) براساس یک فلسفه بنا شده اند. یک بخش از این فلسفه میگوید «همه چیز یا باید فایل باشد یا پروسس» و بخش دیگری تاکید دارد که «همه تنظیمات باید در فایلهای متنی ذخیره شوند». ترکیب این دو یعنی قدرت فوق العاده ترمینال. چطور؟
فرض کنید شما سعی داشته اید با یک رابط گرافیکی تغییری در شیوه نمایش پنجره هایتان بدهید و مثلا به جای دکمه دایرهای برای بستن پنجره، تمینصب کنید که این دکمه را مثلثی نمایش میدهد و اینکار- به دلیل نصب برنامهای خارج از منابع اصلی توزیع که میدانیم دلیلی دارد که وارد منبع اصلی نشده است- باعث به هم ریختن محیط گرافیکیتان شده است. برای این مشکل کسی که ترمینال را نشناسد دائما باید تلاش کند تا با همان رابط گرافیکی مشکل را حل کند اما اگر کسی به ترمینال وارد باشد میتواند آن را باز کند:
و با زدن یک دستور، فایل مربوط به تنظیمات ظاهر پنجره ها را پاک کند (یا اگر نمیداند اول با یک دستور دیگر آن را پیدا کند) تا ظاهر پنجره ها به حالت پیش فرض برگردند. درست مثل کسی که وقتی خودرو به درستی استارت نمیزند، بلد است کاپوت ماشین را بالا بزند و مشکل را در موتور رفع کند.
اما این همه ماجرا نیست، از طرف دیگر کار کردن در ترمینال کاراتر و سریع تر است. این موضوع برای کسی که از ترمینال سر در نمیآورد عجیب به نظر میرسد اما در عمل استفاده از ترمینال نه فقط قدرت و انعطاف پذیری که سرعت کار شما را هم بالا میبرد.
فرض کنید در همین لحظه بخواهیم یک فایل جی.پگ (JPEG) را از روی دسکتاپ به پی.ان.جی. (PNG) تغییر فرمت دهیم. در حالت عادی باید دستمان را از روی کیبورد به روی ماوس ببریم، این پنجره را که در حال خواندن آن هستید را کوچک کنیم، دسکتاپ را ببینم، آیکون آن فایل را پیدا کنیم، رایت کلیک کنیم و Open with Gimp (که برنامهای برای ادیت تصاویر است را بزنم) و بعد از اینکه آن برنامه سنگین باز شد از منوی File، آن را به یک اسم جدید ذخیره کنیم و اسم جدید را بدهیم و فرمت را از یک کشوی باز شونده PNG انتخاب کنیم و بر روی Save کلیک کنیم. سپس باید برنامه گرافیکی را ببندیم و این پنجره را بزرگ کنیم و ادامه بدهیم به نوشتن این بخش اما ما ترجیح میدهیم اینکار را در ترمینال انجام دهیم. یک دکمه F12 ترمینال زیبایی را از بالای صفحه به پایین خواهد لغزاند و مینویسم:
در ضمن نیازی نداریم تمامیاین نوشته ها را تایپ کنیم چرا که ترمینالهای مدرن به راحتی میتوانند به شکل منطقی دستورات را بنا به خواست ما کامل کنند. زدن F12 این ترمینال لغزان را به بالای صفحه جمع میکند تا دفعه بعدی که بخواهیم سریعا آن را احضار کنیم.
اما در یک زندگی عادی نیازی به اینکار نیست. در یک زندگی عادی لینوکسی، مانند سیستم عاملهای دیگر شما میتوانید به طور کامل در محیط گرافیکی باشید بدون اینکه نیاز باشد فرمانی را تایپ کنید. مثال خودرو و کاپوت را دوباره به یاد بیاورید. یک راننده در زندگی عادی نیاز ندارد به موتور دسترسی پیدا کند اما اصلا نباید تعجب کرد اگر به هنگام سوال در مورد وضعیت روغن ماشین، جواب این باشد که باید کاپوت را بالا بزند و دست ها را کثیف کند.
ترمینال در دنیای حرفهای هم بسیار محبوب است. درست است که برنامههای کنترل گرافیکی کامپیوترها از راه دور پیشرفت زیادی کرده اند اما هنوز اگر لازم باشد یک مدیر سیستم یا برنامه نویس، سروری که تصویر آن در بالا دیدید را تعمیر کند یا تغییری در آن بدهد یا آن را آپدیت کند، بهترین گزینه اجرا کردن یک شبیه ساز ترمینال روی کامپیوتر خودش است و وصل شدن از طریق محیط متنی به آن کامپیوتر. در ضمن کامپیوتری که در ترمینال بوت میشود نیازی ندارد بخشی از منابع ارزشمند خودش را برای اجرای محیط گرافیکی هزینه کند.
ما و شما هم باید بدانیم که هر برنامه کامپیوتری باگ (اشکال نرم افزاری) دارد، چه باگهای دردسرزا برای اجرای برنامه ها و چه باگهای امنیتی. پس واقعا چه نیازی است که یک سرور، محیط گرافیکیای را لود کند که نه تنها حجم زیادی از کدهایش هیچ ربطی به کار واقعی آن سرور ندارد، بلکه لانهای برای باگهای نرم افزاری باشد؟
متخصصهای کامپیوتر دلایل دیگری هم برای علاقه خاص شان به خط فرمان دارند ولی ما و شما میتوانیم فعلا در همین حد متوقف شویم که خط فرمان سریع تر است، در سرورها منابع کمتری را به هدر میدهد، دسترسی ما به هر آنچه در یک سیستم هست و نیست را فراهم میکند و قابلیت کنترل بیشتری به کسی که پشت سیستم گنو/لینوکسی نشسته است میدهد؟
در آخر اضافه کنیم که خط فرمان منحصر به گنو/لینوکس نیست. ویندوز از قدیم خط فرمانی داشته که با دستور cmd از منوی Run قابل دسترسی بوده و مک هم از نسخه OS X به بعد، از یک خط فرمان کاملا یونیکسی با همه ابزارهایی که در گنو/لینوکس هم یافت میشوند، پشتیبانی میکند.
این را هم اضافه کنیم که یکی از تبلیغات پر سر و صدای ویندوز سرور نسخه هشت، چیزی است به نام «خط فرمان» که به گفته مایکروسافت به مدیران سیستم این قابلیت را خواهد داد تا به سرعت و قدرت از طریق دستورات متن، کل سرور را کنترل کنند و حتی با نوشتن دستورات در داخل برنامههای ویژه خط فرمان، کارهای حجیم را به شکل خودکار مدیریت کنند؛ کاری که به گفته خود مایکروسافت در محیط گرافیکی بسیار مشکل بوده است.
در بخشهای قبلی با گنو/لینوکس، تاریخچه این سیستم عامل و مفاهیم فنی و فلسفی آن تا حدی آشنا شدید. اما یک لینوکس واقعا چه کاربردی دارد؟ چه کسانی از لینوکس استفاده میکنند و به چه منظوری و آیا میتوان گنو/لینوکس را به عنوان زندگی حرفهای و شغلی برگزید؟ حالا نگاهی میاندازیم به برخی جوابهای این سوال.
لینوکس در زندگی روزمره
در سطح زندگی شخصی، لینوکس میتواند در نقش یک سرگرمیفنی یا به عنوان یک سیستم عامل دائمیاستفاده شود. شاید یک نفر بخواهد با استفاده کردن از لینوکس در مورد آن چیزهای جدیدی یاد بگیرد و ساعتهای خوشی را به یاد گرفتن سپری کند یا شخص دیگری بدون توجه به اینکه در حال استفاده از چه سیستمیاست، هر روز با آن فقط به عنوان یک سیستم عامل سر و کار داشته باشد. این شخص اتفاقا اصلا لازم نیست آدمیفنی باشد چون لینوکس سیستم عامل پایداری است و در صورت ثابت ماندن بقیه شرایط (مثلا سخت افزار مورد استفاد، خط اینترنت و…) سال ها بدون ویروسی شدن، کند شدن و دادن ارورهای عجیب و غریب کار کند و این خاصیتی است که آن را ایده آل میسازد برای شرایطی که قرار است به یک نفر کامپیوتری بدهید که نیازی به سر و کله زدن با آن نداشته باشد. مثلا اگر فرزندی قرار است برای مدتی طولانی از خانه دور باشد و میخواهد فقط روشن کردن کامپیوتر و چک کردن ایمیل را به پدرش آموزش دهد، لینوکس یک انتخاب خوب است.
اما برای یک نفر دیگر ممکن است لینوکس انتخاب خوبی باشد به این دلیل که نیازهای وسیع تری را پاسخ میدهد. مثلا ممکن است ما علاقمند به تحلیل وضعیت شبکهای که از آن استفاده میکنیم باشیم یا یک روز ایدهای به فکرمان برسد که پیاده سازی آن نیازمند نوشتن یک اسکریپت کوچک و دسترسی به یک بانک اطلاعاتی سبک باشد.
برای ما احتمالا گنو/لینوکس سیستم عامل مناسبی است چرا که دارای انواع و اقسام ابزارهای متنوعی است با آن میتوانیم ایده هایمان را عملی کنیم. اکثر هکرها هم به دلیل همین مجموعه ابزار وسیع سراغ این سیستم عامل میآیند.
پیش از اینکه سراغ بخش بعدی یعنی لینوکس به عنوان یک شغل بروم این نکته کمیعجیب و دور از ذهن را هم اضافه میکنم که لینوکس در زندگی اجتماعی آدم ها نیز تاثیر مثبت دارد. آدم ها نیاز دارند که جزو گروههای اجتماعی باشند و در گروههای مبتنی بر علایق مشترک فعالیت کنند و لینوکس به شما اجازه میدهد جزو گروه «لینوکس کارها» باشید.
یک لینوکس کار ساکن یک شهر خاص، یکی دو روز از ماه را ممکن است با «گروه کاربران لینوکس» آن شهر بگذراند (برای پیدا کردن این گروها تنها کافی است به دنبال عبارت هایی مانند لاگ تهران، لایگ یزد، لاگ مازندران، لاگ مشهد و… که مخفف Linux User Group هستند بگردید.) یا سالی یکی دو بار در در جشنی شرکت کند که به افتخار آمدن نسخه جدید یک توزیع یا میزکار مشهور برگزار شده است. برای مثال عکس زیر مربوط است به جشن کاربران لینوکس در تهران به مناسبت عرضه نسخه جدید میزکار KDE.
امیدواریم به خاطر بیاورید که گنو/لینوکس و به عبارت صحیح تر آزادی نرم افزار فقط یک سیستم عامل نیست، بلکه یک فرهنگ است.
لینوکس به عنوان شغل
لینوکس در زندگی حرفهای و شغلی میتواند در نقشهای مختلفی ظاهر شود. در فنی ترین سطح یک نفر ممکن است توسعه دهنده لینوکس باشد. تصور اشتباهی در مورد نرم افزار آزاد وجود دارد مبنی بر اینکه خیلی ها به غلط فکر میکنند که نرم افزار آزاد با مفهوم «بدون پول» مرتبط است در حالی که بخش عمده توسعه نرم افزارها از طرف شرکتهای بزرگ انجام یا پشتیبانی میشود. شرکت هایی مثل ناول، اینتل، ردهت و حتی مایکروسافت، شرکت هایی هستند که پول زیادی خرج توسعه هسته میکنند و اگر شما تسلط بالا به کرنل و برنامه نویسی داشته باشید بدون شک همیشه میتوانید در این شرکت ها کارهای خوبی پیدا کنید.
در یک لایه پایین تر یک نفر ممکن است متخصص نصب، تنظیم یا پشتیبانی سیستم عاملهای گنو/لینوکسی باشد. تقریبا تمام شبکههای مخابراتی و بخش بزرگی از اینترنت و درصد بالایی از تمام امور جدی دنیا، با سیستمهای لینوکسی اداره میشوند و در تمام کشورها همیشه نیاز زیادی برای کسی که به خوبی به این سیستم عامل مسلط باشد وجود دارد. شرکت ها پولهای زیادی خرج میکنند تا مطمئن باشند در صورت خرابی یک سرور لینوکسی کسی هست که بتواند آن را تعمیر کند و در هنگام نصب یا تنظیمات اولیه هم بازار تجاری شدیدا نیازمند متخصصینی است که به خوبی از ماجرا سر در بیاورند. در صورتی که شما آن فرد باشید، شغلی دارید سطح بالا و مستقیما مرتبط با خود سیستم عامل گنو/لینوکس و برنامههای آن.
اما لینوکس میتواند به شکل غیرمستقیم هم در زندگی شغلی افراد موثر باشد. دانشگاه ها هر سال تعداد زیادی مهندس مخابرات فارغ التحصیل میکنند ولی تعداد مهندسهای مخابراتی که دانش لینوکس دارند و میتوانند در یک شبکه مخابراتی استخدام شوند شدیدا محدود است. وضعیت بازار برنامه نویسی نیز همینطور است. جمع بزرگی از برنامه نویس ها هر سال از دانشگاه بیرون میآیند ولی مطمئنا اگر شرکتی به دنبال برنامه نویس سی با مهارت و تجربه لینوکس باشد، شانس اکثر این افراد برای استخدام صفر است!
در این بخش، لینوکس یک مهارت جانبی است برای جدا کردن شما از خیل بزرگی که همه مهارت هایی مشابه دارند. این دانش «بین رشته ای» (به معنای دانستن دو چیز مختلف که اکثر افراد فقط یکی از آن ها را میدانند) باعث میشود فرد تبدیل شود به گزینهای بسیار مناسب برای یک بازار کار خاص. نیاز بازار برای کسی که هر دوی اینها (مثلا مخابرات و لینوکس، تایپ سریع و لینوکس، رانندگی و لینوکس، هر چیزی و لینوکس) را بداند معمولا کم است ولی در مقابل کسانی که این دو مهارت را با هم دارند بسیار بسیار کم هستند و در نتیجه آن بازار خاص همه تلاشش را میکند تا کسی را که هر دوی اینها را میداند و به سختی پیدا شده را به دست بیاورد یا حفظ کند.
موسسه آماری مشاغل لینوکسی میگوید که ۸۱٪ شرکتهای آمریکایی در سال ۲۰۱۲ به دنبال متخصصین لینوکس خواهند بود و ۸۵٪ شرکت ها گفته اند که پیدا کردن متخصصین خوب در این حوزه بسیار مشکل است.
برای یک نمونه دیگر از اهمیت این تخصص در زندگی حرفهای میشود به این نکته اشاره کرد که ۳۷٪ شرکت ها گفته اند در سال ۲۰۱۲ حاضرند در مورد ساعات کار کنار بیایند و ۲۸٪ دیگر به این نکته اشاره کرده اند که حاضرند به متخصصین لینوکس حقوق بیشتری نسبت به بقیه شرکت بدهند تا این افراد جذب شرکت هایشان شوند.
لازم است اضافه کنم که این حرف به هیچ وجه به این معنا نیست که شغلهای دیگر ارزش کمتری از تخصص لینوکس دارند یا داشتن تخصص لینوکس تضمینی برای شغل خوب است. بخش مهمیاز زندگی شغلی به مهارتهای غیرفنی مربوط میشود و مسایل مشابه اما صحبت بر سر این است که دانستن لینوکس، زیرساخت خوبی است برای یک شغل خوب.
حتی اگر به سراغ لینوکس هم نرفتید، ماجرای مهارتهای «بین رشته ای» را جدی بگیرید تا در بین جمع عظیم آدمهای مشابه، برجسته شوید. در درسقسمت بعدی که قسمت آخر این مجموعه است، به سراغ جامعه لینوکس خواهیم رفت و درباره روش هایی حرف خواهیم زد که افراد با دانستن آنها میتوانند راه خود را در این سرزمین جادویی پیدا کنند.
خب حالا شما به آخرین قسمت از مقالهی آموزشی لینوکس رسیده اید و انتظار میرود تا اینجا درک خوبی از این سیستم داشته باشید و از این به بعد هم بتوانید به تنهایی راه خودتان را در این دنیای زیبا و آزاد پیدا کنید. برای اینکار نیاز به یک مهارت مهم دارید: اینکه بدانید کجای دنیا میتوانید جواب سوال هایتان را پیدا کنید.
در بخش آخر، روی همین موضوع تمرکز میکنیم و به قول آن مثل قدیمیسعی میکنیم روش ماهی گیری را به شما آموزش دهیم. اما قبل از اینکه در مورد محل پرسیدن سوال و یافتن جواب صحبت کنیم، اجازه بدهید سراغ این بحث برویم که سوال خوب چه سوالی است.
سوال هوشمندانه بپرسید
در دنیای گنو/لینوکس ضرب المثل مشهوری هست که میگوید «برای رسیدن به جواب خوب، سوال خوب بپرسید». حتی بعضی ها یک قدم هم جلوتر میروند و میگویند «سوال خوب، خودش جواب است». اما سوال خوب، چه سوالی است؟
به شکل خلاصه باید بگویم سوال خوب سوالی است که تا حد ممکن اطلاعات مرتبط را منتقل میکند. اینکه «از دیروز نمیتونم هیچ بسته جدیدی نصب کنم» سوال بسیار بدی است. اگر همان را به این شکل بپرسید که «دیروز که سیستم مشغول آپدیت شدن بود، برق رفت و سیستم خاموش شد و امروز دیگر نمیتوانم هیچ بستهای نصب کنم» سوال بهتری است و پرسیدن اینکه «دیروز که مشغول نصب بودم، برق رفت و امروز نمیتوانم چیزی نصب کنم و سیستم میگوید که dpkg was interrupted, you must manually run ‘dpkg –configure -a’ to correct the problem. » جواب را در خودش دارد چرا که خود سیستم میگوید برای حل مشکل باید dpkg –configure -a را اجرا کنید.
یک سوال خوب، سوالی است با دقت، بدون اشتباه املایی و دارای جزییات مرتبط بدون باز کردن بحثهای سیاسی، فلسفی و اجتماعی یا توهین به دیگران. در ضمن یک سوال خوب نیازی به استفاده از اسمایلیهای عجیب و غریب برای تاکید روی مساله ندارد!
قبل از سوال، جستجو کنید
گنو/لینوکس دنیای بزرگی است و احتمالا شما اولین نفری در این دنیا نیستید که به مشکلی که الان با آن درگیر هستید، برخورد کرده باشید. تقریبا هر چیزی که برای شما سوال است، قبلا پیش آمده و جواب داده شده است.
از انگلیسی نترسید، با عبارتهای مناسب و از آن بهتر با استفاده از قسمتهای مهم پیامهای خطایی که دریافت میکنید، جستجو کنید تا به احتمال زیاد به جوابی که دنبالش هستید برسید.
به خصوص اگر تازه کار هستید مطمئن باشید که مشکلات شما احتمالا نه فقط در کل اینترنت که در انجمنهای محلی هم چند بار مورد بحث بوده و به آن پاسخ داده شده است.
به همین دلیل همیشه توصیه میشود که برای احترام به وقت و انرژی دیگران، قبل از پرسیدن هر سوالی ابتدا در اینترنت جستجو کنید و در صورتی که موفق به پیدا کردن جوابتان نشدید، به شکلی هوشمندانه و با جزییات صحیح، سوالتان را مطرح کنید.
کجا بپرسیم؟
در گذشته بیشتر سوال ها در چت روم هایی به نام IRC پرسیده میشد و هنوز هم بسیاری از راهنماها همین شیوه را پیشنهاد میکنند. اما واقعیت عملی این است که در حال حاضر بهترین جا برای کشف کردن جواب در وهله اول جستجو در گوگل است و در مرحله دوم جستجو در انجمن ها و در نهایت پرسیدن سوال در انجمن.
در دنیای گنو/لینوکس فارسی مشهورترین انجمن برای پرسیدن سوال، انجمن اوبونتوی فارسی و انجمن فدورای فارسی است. البته انجمنهای بسیار دیگری هم وجود دارند و این فقط وابسته به شما است که دوست داشته باشید سوالتان را در کجا مطرح کنید.
اما چطور پیشرفت کنیم؟
سوال پرسیدن همیشه بهترین روش نیست. اگر برای مدتی در فروم ها فعال باشید میبینید که حرفهای ها بسیار کم سوال میکنند. دلیل این جریان این نیست که حرفهای ترها همه چیز را میدانند یا به مشکل برنمیخورند. بلکه واقعیت این است که آن ها به خاطر کارهای پیشرفته تری که میکنند اتفاقا احتمال بیشتری هم دارد که دچار مشکل شوند، اما در مقابل این افراد روشهای بهتری برای پیدا کردن جواب هایشان دارند.
آنها بهتر جستجو میکنند و از آن مهمتر به شکلی درست راهنما میخوانند. تقریبا تمام جنبههای یک سیستم گنو/لینوکس خودشان دارای راهنماهای بسیار کاملی هستند که Man Page یا صفحه راهنما نامیده میشوند. مثلا برای دیدن راهنمای کامل شیوه اجرای Firefox کافی است در یک ترمینال تایپ کنید man firefox و تمام سوییچ ها و روشهای ممکن برای اجرای فایرفاکس برای شما به نمایش در خواهد آمد (اگر اینکار را کردید با کلید q از راهنما خارج میشوید). خواندن این راهنماها در ابتدای کار راحت نیست، ولی فرق یک حرفه ی و یک آماتور دقیقا همین توان خواندن راهنما است.
توصیه دیگر برای پیشرفت این است که کاری را بدون درک انجام ندهید. اگر در یک فروم سوالی کردید و کسی به شما جواب داد، سعی کنید به جای کپی و پیست دستورات یا اجرای قدم به قدم راهنمایی ها، درک کنید که چرا این دستور ممکن است مشکل شما را حل کند و از این طریق با حل هر مشکل تان، چیزهای جدیدی یاد خواهید گرفت.
فراموش نکنید که این دنیای همه ما است
تا اینجای راه با هم بودیم. شما در یک کلاس مجازی شرکت کردید که به رایگان برایتان آماده شده بود و یاد گرفتید در جاهایی سوال بپرسید که افراد داوطلب ممکن است علاقمند باشند به شما کمک کنند. در هنگام سوال پرسیدن هم باید دو نکته را به یاد داشته باشید:
۱- کسی برای جواب دادن به شما حقوق نمیگیرد و هیچ کس موظف نیست برای حل مشکل شما تلاش کند. باید صبر داشته باشید. با خوب پرسیدن نشان بدهید که برای سوال خودتان ارزش قائلید و با جستجو کردن قبل از سوال، به وقت دیگران احترام بگذارید. اگر بعد از مدتی جواب نگرفتید، محترمانه سعی کنید اطلاعات بیشتری به سوالتان اضافه کنید و فراموش هم نکنید که در طول زمانی که منتظر جواب گرفتن هستید، خودتان هم تحقیق را ادامه بدهید و حتی یافته ها را به سوال خودتان اضافه کنید.
۲- حتی مهمتر از مورد اول این است که یادتان باشد شما هم باید به بقیه کمک کنید تا این جامعه زنده و پایدار بماند. اگر جواب سوالی را میدانید آن را برای سوال کننده بنویسید یا حتی برای چیز یاد گرفتن به دنبال جواب سوال هایی که مطرح شده بگردید، آن را بفهمید و جواب سوال را بدهید. حتی اگر هم دانش فنی کافی ندارید، میتوانید در حوزه های دیگر مثل ترجمه، تبلیغ، حمایت مالی و معنوی از پروژههای خوب و… به این دنیا کمک کنید.
با توصیههای بالا و درک مفهوم عمومیلینوکس انتظار میرود هر کس بتواند راه خودش را پیدا کند. لینوکس دنیای وسیعی است و هیچ کس همه چیز آن را نمیداند و نکته متمایز کننده یک حرفهای درک پایهای تر از اجزای سیستم و توانایی او در پیدا کردن جواب سوال ها از طریق سرچ و خواندن راهنماها است؛ از هیچ چیز نترسید و به آنها بپوندید. یک جامعه بزرگ منتظر ورود شما است.
خندان باشید و در این دنیای آزاد موفق و از آن مهمتر در زندگیتان همیشه آزاد.