. روش های نصب برنامه ها در لینوکس [1] با توجه به گستردگی توزیع های لینوکس مسلما روش های نصب نرمافزار ها نیز متفاوت خواهد بود . در ابتدا به تعریف مفهون کد منبع یاSource Code می پردازم . یک نرم افزار در ابتدا فقط یک سری حروف و کلماتاست که یک برنامه نویس آن ها را در محیطی خاص و یایک ویرایشگر متن معمولیمی نویسد این نوشته ها " سورس کد" برنامه یا " کد منبع" برنامه نامدارند. این کد ها را می توانید در یک ویرایشگر متن معمولی وارسی کنید،اما برای کامپیوتر معنایی ندارند ! چرا که کامپیوتر شما فقط زبان 0 و 1را متوجه می شود.بنابراین باید این برنامه ی نوشته شده را به زبانکامپیوتر ترجمه کنیم ، این کار ترجمه را " کامپایل " می گویند.درواقع شماکدمنبع را کامپایل می کنید تا کامپیوتر شما آن رادرک کند. به فایل حاصل ازکامپایل فایل "باینری" می گویند. دلیل این نام گذاری این است کهفایل حاصل از کامپایل فقط برمبنای دو (Base2) می باشد ،یعنی فقط شامل صفر و یک است. بنابراین وقتی می گوییم برنامه ای بازمتن (OpenSourec)است این بدان معناست که کد های منبع آن در اختیار دیگران قرار دارد و دربرنام های CloseSource یا سورس بسته این کد های منبع در اختیار شما قرارنمی گیرد وفقط فایل های باینری در اختیار شما قرار می گیرد. یکی از محبوب ترین راه های نصب نرم افزار در لینوکس نصب ازکد منبع یا به اصلاح درست تر کامپایل از سورس کد برنامه است.در ویندوزمایکروسافت شما همواره بسته های باینری را در سیستم خودنصب می کردید ،اینبسته های باینری که از پیش کامپایل شده اند بر اساس یک استاندارد کلی کهسیستم عامل (ویندوز) دارد ، کامپایل شده اند بنابر این شما نمی توانید بهراحتی برروی آن ها مانور دهید ،اما در لینوکس قضیه کمی متفاوت است ،شمامی توانید کد منبع را بگیرید و از اول روی سیستم خودتان کامپایل کنید.شاید بپرسید این چه مزیتی دارد؟ زمانی که شما برنامه ای را در سیستمخودتان شخصا کامپایل می کنید می توانید آن را بر اساس نیاز های خودتانتنظیم کنید.(در اصطلاح صحیح تر می توانید نرم افزار راباتوجه به شرایط خودبهینه سازی -optimization-کنید.) حسن این کار در آن است که برنامه ی نصبشده در سیستم شما کاملابا سیستم شما خوانایی دارد و اگر شما به امکاناتیکه برنامه ارائه می دهد نیازی ندارید می توانید به سادگی آن امکانات رازمان کامپایل ندیده بگیرید. بنابراین اولین روش نصب برنامه کامپایل از سورس کد بود ،این روشتا حدودی وقت گیر است و نیاز به تجربه دارد تابتوانید به بهترین روشممکن برنامه ی خود را کامپایل کنید ،البته گاهی راهی جز کامپایل نرمافزار ندارید .برای همین توزیع کنندگان لینوکس به فکر ایجاد روشی کاربرپسندتر افتادند تا کاربران بتوانند در زمانی کوتاه تر و با روشی ساده تربرنامه های خود را نصب کنند ، این دیدگاه باعث بوجود آمدن بسته های نرمافزاری RPM و DEB شد . این بسته ها اغلب همانند بسته های نرم افزاریویندوز از قبل کامپایل شده اند (البته این فقط یک مقایسه ی ناشیانهات و درعمل با بسته های ویندوزی بسیار متفاوتند) و شما از طریق یک مدیر بسته میتوانید این بسته ها را مدیریت کنید. مدیر بسته ها در لینوکس تقریبا همانبرنامه ی Add/Remove در کنترل پانل ویندوز است که با توجه بهتوزیع و نوع بسته ی نرم افزاری بسیار مختلف است. البته باید توجه داستهباشید که این بسته ها هم می توانند حاوی سورس کد نیز باشند. نکته ی قابلتوجه دیگر این است که این بسته ها می توانند شامل فایل های کمکی (Help) ومستندات دیگر مربوط به برنامه باشند. شما برنامه ی خود رااز هر راهی که نصب کنید در اغلب موارد فایل هایآن در مسیر های usr/bin/ و bin/ و usr/sbin/ قرار می گیرند و فایل هایمربوط به پیکره بندی آن در دایرکتوری etc/ قرار می گیرند. بنابراین ما درلینوکس چیز به نام رجیستری نداریم و تنظیمات مربوط به برنامه ها در فایلها ذخیره می شوند که در بیشتر موارد این فایل هافایل های هستند که بهراحتی قابل خواندن و ویرایش کردن با ویرایشگر های معمولی متن می باشند. بسته ها! چرا به برنامه ها بسته (Pakage) میگویند؟ اغلب برنامه هاامروزه شامل فایل های بسیاری می باشند ،از جمله فایل های باینری ،فایلهای پیکره بندی و فایل های مربوط به راهنما و روش نصب و مجوز های برنامهکه به Documentation یا مستندات معروف هستند. بنابراین می بینیم یک برنامههمراه خود تعداد بسیاری فایل به همراه دارد ،تمام این فایل ها به صورتفشرده در یک بسته قار می گیرند ،خواه این یک بسته ی RPM باشد یا یک بستهی DEB یا حتی یک بسته ی Tarball باشد. برای آشنایی هرچه بیشتر شما باانواع بسته های نرم افزاری ما در این مقاله به سه نمونه ی عمده ی بسته هاینرم افزاری لینوکس اشاره می کنیم ،باید توجه داشته باشید که در این مقالهقصد آموزش کار با بسته های نرم افزاری رانداریم و تنها به معرفیانواع بسته ها بسنده خواهیم کرد.II. بسته های RPM یکی از معروف ترینبسته های نرم افزاری لینوکس بسته های RPM میباشد.RPM مخفف RedHatPakage Manager می باشد ،همان طور که از اسم آن بر می آید ابداع شرکتRedHat Linux می باشد اما در توزیع های مختلفی از این بسته ها استفاده میشودو جالب تر این که از این بسته ها می توانید در سیستم های شبه یونیکسدیگر مانند FreeBSD و SunSolaries نیز قابل استفاده هستند.بسته های RPM باپسوند rpm شناخته می شوند .
از جمله توزیع هایی که از بسته های rpm استفاده می کنند می توان لینوکسMandrake وLinuxPCC و لینوکس YellowDog را که بر پایه ی ردهت است و برایسیستم های با پردازنده ی PowerPC طراحی شده و نیز توزیع SuSE را نامبرد.البته توزیع های دیگری نیز از این بسته ها استفاده می کنند.برای مدیریت بسته های rpm شما می توانید از مدیر بسته های rpm استفادهکنید. اگر می خواهید در خط فرمان و براساس محیط متنی کار کنید می توانیداز دستور rpm برای مدیریت استفاده کنید. اما اگر می خواهید از محیطگرافیکی برای مدیریت استفاده کنید با توجه به توزیع شما این ابزار متفاوتاست. کاربران SuSE با ابزار YaST می توانند این کار را بکنند ،کاربرانMandrake می توانند با rpmdrake بسته هایشان رامدیریت کنند. البته بایدتوجه داشته باشید که SuSE و Mandrake گاهی از بسته های rpm مخصوص خوداستفاده می کنند که جز آن توزیع در توزیع دیگری قابل استفاده نمی باشد.
بسیارخوب تا این جا بسته های RPM را شناختیم ، حالقبل از معرفی بسته های DEB به نحوه ی نام گذاری بسته های RPM خواهیمپرداخت. برای آن که کاربران با دیدن نام بسته ی rpm به راحتی بتوانندمتوجه محتویات آن بشوند از یک استاندارد برای نام گذاری این بسته هااستفاده می شود.این نام گذاری مانند زیر است :
pakagename-a.b.c-x.arch.rpm
در این نام گذاری همان طور که معلوم است از سمت چپ اولین بخش نام نرم افزار اصلی ماست مثلا xchat یا gaim اما سایر اجزا :
.a.b.c نسخه ینرم افزاری است که دردست دارید، این شماره نسخه را اغلب نویسنده ی برنامه تعیین می کند مثلا 2.2.6 یا 5.6.7a.
x این شارهبه شماره ی build number یا relase number معروف است.(شماره ی انتشار!)این شماره در واقع نشان دهنده ی تغییرات کوچکیست که اغلب هم کار نویسندهی برنامه نیست مثلا یک وصله یا Patch برای رفع یک مشکل (bug) یا یا تغییریک فایل نصب یا اضافه شدن یک فایل راهنما یا help یا Documentation بهفایل .
arch این بخش از نام مربوط می شود به معماری پردازندهای که از آن استفاده می کنید. بسته های RPM برروی معماری های مختلفی ازپردازنده قابل اجراست ،از جمله x86 یا SPARC یا Alpha نیزIA-64 بنابر این لازم است که نوع پردازنده ی مورد پشتیبانی را در نام فایلبگنجانیم تا در آینده بتوانیم به راحتی از آن برای پردازنده ی خودماناستفاده کنیم.برای پردازنده های x86 این جا i386 نوشته می شود. اینپردازنده ها باقی مانده ی نسل 80386 هستند که شرکت اینتل آن ها را تولیدمی کند ،البته باید خاطر نشان کنم که در حال حاضر وقتی می گوییم x86منظور ما هر پردازنده ای سازگار با این معماری است از جملهAMD مدل های Duron و Athlon و یا پنتیوم های Pro ,I,II,II,IVونیز پنتیوم MMX ویا پردازنده های سازگار با x86شرکت Transmeta یاCyrix!! بنابراین امروزه فقط این اینتل نیست که پردازنده های خانواده یx86 را تولید می کند. اگر بسته یRPM شما برای پنتیوم بهینه سازی شدهباشداین مقدار 1586 و i686 خواهد بود. البته RPMبرای پردازنده های دیگرنیز وجود دارد از جمله PowerPC که با ppc مشخص می شود. نکته ی قابل توجهاین است که اگر بسته ی rpm شما محتوی فایل متنی یا Documentation یا هرچیز دیگری باشد که به پردازنده (CPU) بستگی ندارد این مقدار noarch خواهدبود.
برای روشن تر شدن این نام گذاری به نام xbill-2.1.3-85.i386.rpm دقتکنید. xbillنام این نرم افزار است که یک بازی لینوکس است.که بسته ی ماbuildشماره ی 85 نسخه ی 2.13 آن است که برای معماری x86 طراحی شده است.
III. بسته های DEB
بسته ی دیگری که بسیار استفاده می شود ،بسته ی دبیان یا DEB می باشد ،این بسته ها نیز مانند بسته های RPM هستند و کار کردن با آن ها مانند کاربا RPM ها ساده است. این بسته ها را دبیان توسعه داده است و هم اکنونتوزیع های فراوانی از لیبرانت تا DammnSmallLinux از این بسته ها استفادهمی کنند ،در واقع هر توزیع مبتنی بر دبیان از این بسته ها استفاده میکند.بسته های rpm و deb را نمی توان به جای یکدیگر استفاده کرد اما میتوان آ نها را به یکدیگر تبدیل کرد ،البته این تبدیل نیز همیشهموففقیت آمیز نخواهد بود.بسته های دبیان نیز مانند rpm برای معماریهایمتفاوتی نوشته شده است .برای مدیریت بسته های دبیان در خط فرمان از ابزارdpkg استفاده می شود dpkg بسیار شبیه RedHat pakage Manager یا rpm است.(منظور ابزار rpm است که برای مدیریت بسته های RPM استفاده می شود.).البته در دبیان و توزیع های مبتنی بر دبیان ابزار دیگری نیز برای مدیریتبسته های نرم افزاری در خط فرمان وجودداردکه کار با بسته های نرم افزاریرا بسیار راحت تر و شیرین تر می کند ،این ابزار APT نام دارد.APt مخففAdvanced Pakage Tool می باشد. (تلفظ کنید اپت /æpt/) یکی از خواصبستههای RPM وDEB این است که شما نی توانید به راحتی و از طریق همین ابزارهای مدیریت بسته بسته های خودرا در چند ثانیه یاحداکثر چند دقیقه به روزبکنید و لی اگر برنامه ای را از کد منبع آن کامپایل کنید برای هر بار بهروز رسانی مجبورید برنامه را از ابتدا کامپایل کنید.البته برای مدیریتبسته های نرم افزاری در دبیان نیز برنامه های مختلفی وجوددارد مانندsynaptic ویا برای مدیریت بسته هادر خط فرمان اما کمی راحت تر مانندdselect . نام گذاری بسته های دبیان نیز مانند RPM است با کمی تفاوت درظاهر که برای طولانی نشدن بحث به آن اشاره نمی کنیم.
IV.بسته های Tarball
در حقیقت بسته های Tarball چیزی جز بسته های آرشیو شده نیستند ، اینبسته ها را می توانیددر هر توزیعی استفاده کنید و مانند RPM و DEB وابستهبه توزیع نیستند. بسته های Tarball همان بسته هایی هستند که با ابزار tarدر خط فرمان تولید می شوندو توسط یکی از برنامه های compres یا gzip یاbzip2 فشرده شده اند. این بسته های فشرده شده فقط حاوی فایل ها هستند وبعد از باز کردن آن ها می توان در باره ی روش نصب آن ها تصمیم گرفت. بستههای tarball می توانند مانند RPM و Debian حاوی سورس کد ، فایل هایباینری و همچنین مستندات برنامه باشدالبته در اغلب موارد این بسته ا باgzip فشرده می شوند که پسوند حاصل tar.gz. می شود و البته برای این که حجماطلاعات رد و دلی در اینترنت کمتر شود از فرمت tar.bz2. استفاده می شود کهبسته های آرشیو tar را با برنامه ی bzip2 فشرده کرده اند .(فایل هایی کهبا Bzip2 فشرده شده اند از فایل هایی که با gzip فشرده شده اند حجمکم تری دارند چرا که الگوریتم فشرده سازی در این دو متفاوت است.)
V.اطلاعات ضروری در زمان نصب برنامه
۱.وابستگی های برنامه (Dependencies) وابستگی های نرم افزاری یا همان Dependencies درواقع آن برنامه هاو نیاز هایی است که باید داشته باشید تا برنامه ی شمابتواندکار کند!! درواقع شما برای نصب یک برنامه اغلب به یک پیش نیازاحتیاج دارید ، مثلا برای بسیاری از برنامه های لینوکس لازم است تا شماکتابخانه های C را داشته باشید. در واقع وقتی می گوییم یک برنامه فلانوابستگی ها را می خواهد یعنی اولا بدون آن نیازمندی ها نمی تواند کار کندو در ثانی می توان نتیجه گرفت که آن برنامه از برنامههایی که در اصطلاحوابستگی نام دارند برای کار کردن استفاده می کند. توجه داشته باشید که مفهوم پیشنهادی یا Recommended با وابستگی متفاوت است،اگر وابستگی ها را نصب نکنید برنامه ی شما کار نخواهد کرد اما اگرپیشنهادی ها را نصب نکنید برنامه ی شما کار خواهد کرد. پس این Recommendedها به چه کاری می آیند؟ اگر شما این Recommended هارا نصب کنید برنامه یشما بهتر کار می کنه یا بهتر بگویم بازدهی برنامه ی شما بیشتر خواهدشد.
یکی از خواص بسته های Debian وrpm هوشمندی آن ها نصبت بهشناخت این پیش نیاز هاست ،در واقع وقتی شمایک بسته ی Debian را نصب میکنید خودش به دنبال پیش نیاز ها می گردد و پیش نیاز ها را نیز برای شمانصب می کند.البته بسته های RPM این هوشمندی راندارند اما برنامه هایمدیریت بسته های rpm این کار را می کنند یعنی زمانی که شما از دستور rpmبرای نصب استفاده می کنید این برنامه است که تشخیص می دهد ثبلاز نصب باید چه برنامه های دیگری نصب شود و به شمااعلام می کند که اینبسته ا را نیز نصب کنیدو یا خودش نصب می کند. اما بسته های دبیان در ذاتخود این قابلیت را دارا هستند که پیش نیاز هایشان را تشخیص بدهند ولی بسته های Tarball فاقد این هوشمندی هستند و باید خودتان با مطالعه یفایل های README و INSATLL ویا دیگر راهنماهای موجود در بسته یا سایت آنپیش نیاز ها را یافته و آن ها را نصب کنید.
|
۲.کتابخانه ها(Libraries) کتابخانه ها همان DLL هایی هستند که شما در ویندوز می شناختید.(که اغلب گمشده بودند یا به دلیل خرابیشان برنامها کار نمی کرد!!) در لینوکس نیزکتابخانه ها همان مسئولیت را به عهده دارند اما پسوند خاصی ندارند چرا کههر زبان از کتابخانه های خوداستفاده می کند.خوب این مسئولیت کتابخانه هاچیست؟ کتابخانه ها یکسری فایل هستند که شامل یکسری توابع و روتینبرای برنامه می باشند ، شما می توانید یک فایل کتابخانه درست کنید و تمامتوابعی که در برنامه ی شما استفاده می شود را در آن قرار دهید و از برنامهی خود بخواهید که این توابع را از فایل مذکور اجرا کند،این کار چه فایدهای دارد؟ فکر کنید همکار شمانیز می خواهد برنامه ای بنویسید او می توانداز ابتدا شروع کند و تمام توابع رادر برنامه ی خود تعریف کند ،این کارباعث صرف وقت بیشتر و خستگی بیشتر و نیز حجم بیشتر فایل ها می شود.راه حلهوشمندانه این است که توابع مشترک برنامه ها را در یک فایل کتابخانه ایقرار دهید و هر کسی که به آن توابع احتیاج داشت زمان اجرای برنامه اینتوابع را فرابخواند. به این ترتیب لازم نیست که شما هر بار تمام توابع راتعریف کنید کافیست یکبار این توابع در کتابخانه ای نوشته شوند و کاربراناین کتابخانه ا را در سیستم خودنصب کنند ،حالا شما و همارانتان و دیگرانبدون دغدغه ی حجم زیاد و تعریف مجدد توابع به نوشتن برنامه مشغول میشوید.(حالا متوجه شدید چرا به این برنامه ها کتابخانه می گویند؟)
از جمله معروف ترین کتابخانه ا می توان به کتابخانه های C اشاره کرد که بانام libc و در توزیع های مدرن تر به نام glibc وجود دارند و یا کتابخانه یمعروف +GTK که شما یک بار نصب می کنید و تمام برنامه های محیط گرافیکیگنوم از آن استفاده می کنند.
|
۳.ابزار های توسعه(Development Tools) اگر شما تصمیم به کامپایل یک برنامه گرفتهاید باید فایل های کتبخانه ای و ابزار های توسعه ی مربوط به آن برنامه راداشته باشید. مثلا اگر برنامه ای به زبان C دارید باید یک کامپایلر برای Cداشته باشید و کتابخانه های مربوط به آن را نیز باید در سیستمتان داشتهباشید. اگر شما نیازی به کامپایل برنامه ها ندارید لازم نیست تا ابزار هایتوسعه رانیز نصب کنید. درواقع وقتی شما یک برنامه را کامپایل می کنیدمانند این است که شما برنامه نویسید و برنامه رانوشتیدو کد آن راآمادهکردید و می خواهید آن را به زبان ماشین ترجمه کنید،خوب برای این کار بهابزاری نیاز دارید به نام Development tools که بوسیله ی آن برنامه یخودرا کامپایل کنید. برنامه ی معروف gcc جزو این ابزار هاست ، gcc که یککامپایلر است و تحت مجوز GNU/GPL نیز منتشر سده است مجموعه ای است ازکامپایلر های زبان های مختلف، البته این اسم آن نیز معلوم است GNUCompiler Collection!!!!
|
۴.پایگاه داده ی بسته های نصب شده پایگاه داده ی بسته های نصب شده یا به زبانساده تر Installed package Database !! محلی است که اطلاعات بسته های نصبشده ی سیستم در آن قرار دارد. شاید شما بخواهیدبدانید که فایلکتابخانه ای X یا Y آیا نصب شده است یا نه؟ یا می خواهید بدانی چهنسخه ای از برنامه در سیستم شما موجود است ،یا حتی می خواهید بدانید برایبرنامه ی شما چه نیاز مندی هایی لازم است؟ تمام این اطلاعات و اطلاعاتدیگر در یک پایگاه داده ذخیره می شود.برای بسته های Debian این مسیر اغلبدر مسیر var/lib/dpkg/ است و برای RPM این مسیر var/lib/rpm/ است ،امابرای Tarball هیچ پایگاهی وجود ندارد!! البته توزیع SlackWare خودش توسطبرنامه ای به نام slackware Package Tool یا pkgtool برای بسته هایTarball ای که از طریق این برنامه نصب می شوند یک پایگاه داده می سازد امااین فقط مختص توزیع است و این امکان در تمام توزیع ها موجود نیست.به همیندلیل است که اغلب بسته های Slackware را جزو بسته های هوشمند به شمار نمیآورند چرا که تنها یک آرشیو فشرده است و حتی نمی تواند وابستگی ها یاDependency های خود را پیدا کند.
|
نصب نرم افزار در لینوکس ، تمام آنچه در این مقاله خواندید روشهای مختلف نصب در لینوکس است ،می بینید که شما انتخاب های مختلفی دارید وبه یک انتخاب وابسته نیستید ، امید وارم این مقاله برایتان مفید بوده ومطالبی جدید برایتان داشته باشد.
برچسب:
نویسنده: داریوش تاجمیری
تاريخ: 16 / 6 / 1391 ساعت: 17:55