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


انواع بسته های نرم افزاری :
در لینوکس ۳ نوع فایل نرم افزاری زیر وجود دارند :
۱ – بسته نرم افزاری کد منبع یا Source Code Package : این همان کدهای برنامه است که معمولا به زبان C یا ++C و یا Python هستند که با پسوند tar.gz ویا tar.bz2 که بصورت یک فایل فشرده شده انتشار داده می شوند. اگر آنها را از حالت فشرده خارج کنید چیزی جز سورس کد برنامه به زبان سی یا هر زبان دیگری را نخواهید دید. مثلا اگر کد منبع یا سورس کد برنامه mplayer را دانلود کنید و آنرا Extract کنید یک کتابخانه عالی و کامل و اپن سورس به زبان سی برای فایل های چندرسانه ایی را خواهید دید.
۲ – بسته های نرم افزاری دبیان یا Debian Package : نوع دیگر و بسیار گسترده فایل های نرم افزاری در برخی از توزیع های لینوکسی است. پسوند آن deb. بوده و نخستین بار توسط توسعه دهندگان توزیع دبیان ایجاد شد و به همین خاطر Debian Package گفته می شوند.
اما چرا برخی از توزیع ها : زیرا که این نوع بسته ها فقط و فقط در توزیع های مبتنی بر دبیان استفاده و قابل نصب هستند برخی از توزیع های مبتنی بر دبیان که معروف هستند عبارتند از:

 Debian – Ubuntu -Kubuntu – Minit -Parsix

۳ – بسته های نرم افزاری RPM : عبارت RPM مخفف  Redhat Package Managment و نخستین بار توسط شرکت RedHat ایجاد شد و امروزه در توزیع های معروف زیر استفاده می شوند . این نوع بسته ها هم فقط و فقط در توزیع های مبتنی بر rpm نصب می شوند و مثلا در ابونتو قابل نصب نیستند. توزیع هایی مانند:

 RedHat -Fedora -CenteOS – openSUSE-Mandriva

اما در برخی از توزیع های دیگری نیز هستند که فایل نرم افزاری خود را دارند که می توان به :
Arch Linux با نوع بسته نرم افزاری با پسوند tar.xz و Gentoo با نوع بسته نرم افزاری با پسوند ebuild اشاره کرد. اما آنچه که مهم است این است که نکات زیر را بدانیم :
۱ – نوع بسته سورس کد یا Source Code تنها مختص یک توزیع نیست بلکه در تمام توزیع های لینوکسی بدون استثناء قابل نصب هستند و حتی اگر بطور کاملتر بگوییم این نوع بسته ها تنها مختص لینوکس نیستند و در BSD ها نیز قابل نصب هستند.
۲ – شما نمی توانید یک بسته DEB را در توزیعی که از نوع RPM استفاده می کند نصب کنید و بلعکس
۳ – دیگر توزیع ها مانند Arch و Gentoo بسته های خاص خود را دارند.

وابستگی یا Dependencies چیست ؟

فرض کنید شما یک بسته نرم افزاری با هر نوع پسوندی را دانلود کرده اید و می خواهید آنرا نصب کنید.ممکن است نرم افزار شما بدون هیچ مشکلی نصب شود اما شاید هم مشکلی پیش آید که این مشکل به این دلیل است که نرم افزار شما نیاز به دیگر نرم افزار ها و کتابخانه ها برای نصب شدن نیاز داشته باشد.مثلا بخواهید یک نرم افزاز گرافیکی برای نمایش ویدیو نصب کنید اما خود این نرم افزار برای پخش فایل نیاز به بسته ای مانند mplayer داشته باشد. بطور کلی برای نصب package نیاز به depe1 و خود depe1 نیاز به depe2 داشته باشد که این یک مشکل بزرگ و دردسر زاست و شما بایستی تک تک وابستگی ها را نصب کنید. بطور مثال برای نصب بسته ای خطای زیر در خط فرمان نشان داده می شود.
error: Failed dependencies:
libvlc.so.5()(64bit) is needed by vlc-devel-1.1.9-69.fc15.x86_64
libvlccore.so.4()(64bit) is needed by vlc-devel-1.1.9-69.fc15.x86_64
vlc = 1.1.9 is needed by vlc-devel-1.1.9-69.fc15.x86_64

راه حل و پیشنهاد :
راه حل برای رفع مشکل بالا استفاده از مخازن در توزیع های لینوکسی است. اما مخزن چیست؟ بطور ساده مخزن یا مخازن مجموعه ای کامل از نرم افزار ها و کتابخانه های لازم برای نصب انواع نرم افزار ها در لینوکس است. با مخازن پیش از اینکه شما بسته ای را که دانلود کرده اید و قصد نصب آنرا دارید می توانید تمام وابستگی های آنرا نصب کنید. مثلا در بالا من خواستم بسته ای را نصب کنم که خطای وابستگی های لازم را داد پس من به راحتی از لیست مخازن آن وابستگی هایی که نیاز دارم را انتخاب و نصب می کنم و سپس خود نرم افزار را نصب خواهم کرد.
نیاز نصب از مخازن چیست؟ برای نصب از مخازن شما تنها نیاز به یک اینترنت پر سرعت دارید. امروزه در توزیع ها این مخازن در قالب یک برنامه گرافیکی که در دسته های گوناگون مانند چندرسانه ایی – گرافیک و … دسته بندی شده هستند. تنها کاری که شما باید انجام دهید این است که نرم افزار دلخواه خود را از یک دسته مربوطه انتخاب یا نام آنرا جستجو کنید و به اینترنت هم اتصال داشته باشد و در نهایت نصب را انجام دهید. تمام وابستگی ها و خود نرم افزار بطور خود کار نصب خواهند شد.
در فدورا نام این برنامه گرافیکی Add/Remove و نام دستور متنی نصب از مخازن yum است. نام برنامه گرافیکی در ابونتو Ubuntu Software Center و نام دستور متنی آن apt-get و در اپن سوزه نام برنامه گرافیکی آن yast2 و نام دستور متنی آن zypper و در نهایت در مندریوا نام برنامه گرافیکی Mandriva Control Center و نام دستور متنی آن urpm است.
راه حل مشکل اینترنت چیست؟
توجه داشته باشید مخازن پیش فرض بر روی تمامی توزیع ها معروف به مخازن online هستند به این معنی که لینوکس توسط برنامه گرافیکی یا دستور متنی و با بررسی کردن اتصال اینترنت شما ابتدا بسته را از روی اینترنت دانلود و سپس آنرا نصب خواهد کرد که تمام این مراحل بصورت خودکار و به دور از دید شما انجام می شود. اما مخازن می توانند بصورت offline که در قالب یک یا چند DVD یا CD نیز باشند که دیگر نیاز به داشتن اتصال اینترنت نیست و این همان پیشنهاد من به شماست. امروزه کاربران ایرانی تمام مخازن online اکثر توزیع های معروف لینوکسی مانند ابونتو – فدورا – اپن سوزه را در غالب چندین DVD به شما می فروشند که همراه این DVD ها نحوه تغییر مخازن online به مخازن offline و عدم نیاز به اینترنت خواهد بود که به سود شما است.سایت های زیر را به شما پیشنهاد می کنم
فروشگاه سی تو
فروشگاه لینوکس


بخش دوم

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

نصب از کد منبع :

بسته های کد منبه بصورت آرشیو شده هستند و با پسوند های tar.gz,tar و tar.bz2 قابل دریافت هستند. تمامی سازندگان بسته های نرم افزاری خود را حتما بصورت کد منبع انتشار می دهند. مهمترین موضوع درباره بسته های کد منبع، این است که ابتدا باید آنها را روی سیستم کامپایل یا ترجمه کرد پس نتیجه این است که پیش از نصب باید امکانات کامپایل یک برنامه مهیا باشد. بسته به نوع زبان برنامه نویسی کد منبع کامپایلر یا مترجم متفاوت است. هسته لینوکس با زبان C نوشته شده و اغلب یا بهتر بگوییم بیشتر برنامه ها در لینوکس به زبان C نوشته شده اند پس مهمترین کامپایلری که باید نصب کنیم کامپایر زبان C و C++ است که مهمترین آنها gcc و  هستند.اما شاید برنامه هایی که کد منبع به زبان های دیگری مانند پرل،پایتون و یا روبی باشند.  مفسر این زبان ها از قبل روی سیستم نصب شده است و نیازی به نصب آن توسط شما نیست اما شاید مترجم زبان C روی سیستم شما نصب نباشد که باید آنرا نصب کنید.

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

نصب کامپایلر gcc در لینوکس :

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

sudo apt-get install build-essential

و برای نصب آن در توزیع های مبتنی بر RedHat از دستور زیر استفاده کنید :

‘yum groupinstall ‘Development Tools

شروع به نصب کد های منبع :

برای نصب کد های منبع باید 4 مرحله زیر را دنبال کنید:

  • ابتدا باید بسته ای را از حالت فشرده با یکی از دستور های زیر خارج کنید(با توجه به پشوند فایلشان).

اگر پشوند فایل tar. بود از دستور tar xvf /path/to/filename.tar استفاده کنید.

اگر پسوند فایل tar.gz. بود از دستور tar zxvf /path/to/filename.tar.gz استفاده کنید.

اگر پسوند فایل tar.bz2. بود از دستور tar jxvf /path/to/filename.tar.bz2 استفاده کنید.

  • پس از استخراج فایل باید با دستور cd وارد دایرکتوری استخراج شده که همنام همان فایل است بروید و دستور configure/. را اجرا کنید. این دستور به بررسی سخت افزار سیستم و پیش نیاز های نرم افزاری (وابستگی ها) می پردازد و بسته را آماده مرحله بعدی یعنی کامپایل می کند. یکی از ویژگی های بسته های کد منبع این است که می توانید آنها را آن طوری که می خواهید پیکر بندی کنید. بسته های نرم افزاری دارای ویژگی ها زیادی هستند که باید به هنگام کامپایل آنها را فعال یا غیر فعال کرد . فعال و غیر فعال کردن این ویژگی ها فقط در هنگام کامپایل و با دستور configure/. انجام می شود ولی امکان فعال و غیر فعال کردن وِیژگی ها در نصب بسته های باینری وجود ندارد.
  • پس از اجرای دستور configure/. و اجرای موفقیت آمیز آن (اگر تمام وابستگی ها موجود نباشد پیغام های خطایی نشان داده خواهد شد که باید آنها را برطرف کننید) نوبت به کامپایل بسته نرم افزاری می رشد و برای این کار از دستور make استفاده می کنیم. این دستور کد های منبع را تبدیل به صفر و یک و قابل درک برای ماشین می کند.
  • در گام چهارم و پایانی با دستور make install بسته نرم افزاری را نصب می کنیم. برای اجرای این مرحله نیاز به داشتن مجوز root دارید.

یکی از ویژگی های مهم هر بسته نرم افزاری، ویژگی prefix است که محل نصب بسته نرم افزاری را هنگام نصب تعیین می کند. این ویژگی به همراه دستور configure/. و بصورت زیر استفاده می شود.

configure –prefix=/path/to/directory/.

بطور کلی برای اطلاع از ویژگی های هر بسته نرم افزاری هنگام نصب آن و با دستور زیر از آنها مطلع شوید :

configure –help/.

دو دستور configure/. و make نیازی به داشتن مجوز root ندارند اما دستور make install نیاز به مجوز root دارد.

حذف بسته نرم افزاری نصب شده از کد منبع :

برای حذف یک بسته نرم افزاری نصب شده از کد منبع کافیست دستور زیر را با مجوز root اجرا کنید.

make uninstall PACKAGE_NAME

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



تاريخ : دوشنبه هجدهم آذر ۱۳۹۲ | 7:40 | نویسنده : حمید مقصودی |
.: Weblog Themes By Bia2skin :.