. روش های نصب برنامه ها در لینوکس [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 مخفف RedHat Pakage 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 به راحتیبتوانند متوجه محتویات آن بشوند از یک استاندارد برای نام گذاری این بستهها استفاده می شود.این نام گذاری مانند زیر است akagename-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 نیز منتشر سده است مجموعه ای است از کامپایلر های زبان هایمختلف،* البته این اسم آن نیز معلوم است GNU Compiler Collection!!!!۴.پایگاه داده ی بسته های نصب شده پایگاه داده ی بسته های نصب شده یا بهزبان ساده تر Installed package Database !! محلی است که اطلاعات بسته هاینصب شده ی سیستم در آن قرار دارد. شاید شما بخواهیدبدانید که فایلکتابخانه ای X یا Y آیا نصب شده است یا نه؟ یا می خواهید بدانی چه نسخه ایاز برنامه در سیستم شما موجود است ،*یا حتی می خواهید بدانید برای برنامهی شما چه نیاز مندی هایی لازم است؟ تمام این اطلاعات و اطلاعات دیگر در یکپایگاه داده ذخیره می شود.برای بسته های Debian این مسیر اغلب در مسیرvar/lib/dpkg/ است و برای RPM این مسیر var/lib/rpm/ است ،*اما برایTarball هیچ پایگاهی وجود ندارد!! البته توزیع SlackWare خودش توسط برنامهای به نام slackware Package Tool یا pkgtool برای بسته های Tarball ای کهاز طریق این برنامه نصب می شوند یک پایگاه داده می سازد اما این فقط مختصتوزیع است و این امکان در تمام توزیع ها موجود نیست.به همین دلیل است کهاغلب بسته های Slackware را جزو بسته های هوشمند به شمار نمی آورند چرا کهتنها یک آرشیو فشرده است و حتی نمی تواند وابستگی ها یا Dependency هایخود را پیدا کند. نصب نرم افزار در لینوکس ،* تمام آنچه در این مقالهخواندید روش های مختلف نصب در لینوکس است ،*می بینید که شما انتخاب هایمختلفی دارید و به یک انتخاب وابسته نیستید ، امید وارم این مقاله برایتانمفید بوده و مطالبی جدید برایتان داشته باشد.