نصب توزیع های لینوکس امروزه بسیار راحت است.شما می توانید به راحتی با استفاده از سی دی رام و چند ضرب کلیک توزیع محبوبتان را نصب کنید...
لینوکس های امروزی در شناسایی سخت افزار بسیار دقیق عمل می کنند و بسیار سریع نصب میشوند.
نگهداری از سیستم های لینوکسی هم امروزه به تکامل خوبی رسیده است.امروزه نصب یک بسته به راحتی انجام می پذیرد و نصب مثلا یک patchامنیتی بسیار سریع انجام می پذیرد.
یکی از مسایلی که در نصب بسته ها در لینوکس همواره مورد توجه بوده،موضوع وابستگی بسته ها بوده است.
یک راه قدیمی نصب از روی سورس یا همون کد منبع میباشد با استفاده از دستورات ./configureوmakeو make installنصب از روی کد منبع انجام می پذیرد.
حال فرض کنید بعد ازفرمان makeپیغام make failedرا مشاهده کردید.چاره چیست؟
شاید استفاده از بسته باینری که خودش مشکل وابستگی ها رو حل کند بهتر باشد؟

RPM
مخفف Red Hat Package Manager میباشد.مدیر بسته های rpmعلاوه بر سریع بودن بسیار قدرتمند نیز میباشد.
نصب بسته های rpmبسیار راحت است. دستور زیر را ببینید:
# rpm -i packagename
# rpm –ivh packagename
در دستور فوق –hپیشرفت کار را نشان می دهد.

اگر می خواهید یک بسته rpmرا بدون نصب آن،ابتدا تست کنید ، می توانید از دستور زیر استفاده کنید:
# rpm -ivh —test packagename
باز هم مشکل Dependency یا همان وابستگی بسته ها ممکن است وجود داشته باشد،چندین راه برای جلوگیری از آن وجود دارد:
اجازه ندهید وابستگی ها همچنان وجود داشته باشند و بسته های وابسته را نصب کنید...
یک rpmمتناسب با سیستم ومعماریتان بسازید،PLD شاید به شما کمک کند...

ارتقا دادن بسته های rpm
ممکن است شما قصد upgrade بسته های نصب شده را داشته باشید به دلایل گوناگون مثل قابلیت های جدیدی که در بسته جدیدتر وجود دارد یا بر طرف کردن باگ های نسخه قبلی...
ارتقا بسته های rpmبه سادگی صورت می گیرد:
# rpm –Uvh packagename
در صورتی که ابتدا قصد تست و نه نصب را دارید از فرمان زیر استفاده کنید:
# rpm -Uvh —test packagename

از سویچ –Uمی توانید به جای –iدر موقع اینستال هم استفاده کنید.
این سویچ هم در هنگامی که قصد نصب را دارید و هم در هنگام upgrade به کار می رود.-Uبسته قدیمی را جایگزین می کند.
اگر شما قصد دارید نگارش های متفاوتی را نصب کنید مثلا چندین کرنل یا gccاز –Uیا –iاستفاده نکنید.

از نصب خارج کردن بسته های rpm:
برای از نصب خارج کردن یا همان Removیک بسته rpmاز دستور زیر استفاده کنید:
# rpm –ev packagename
مثلا برای از نصب خارج کردن xmovie-1.9.13-1.i386.rpmباید دستور زیر را وارد کنید:

# rpm –ev xmovie
برای از نصب خارج کردن یک بسته شما نیازی به وارد کردن اسم کامل بسته ندارید.

برای از نصب خارج کردن چندین بسته به صورت همزمان اینگونه عمل کنید:


#rpm –ev xmovie vqfplugin tiff
اگر هنگام از نصب خارج کردن نمی خواهید موضوع وابستگی بررسی شود از دستور زیر استفاده کنید:
# rpm -ev —nodeps packagename


فرض کنید شما قصد کسب اطلاعاتی در مورد بسته rpm نصب شده دارید:
$ rpm –q xmovie
فرض کنید که شما فکر می کنید فایل rpmشما خراب هست یا به روز نیست یا در حال وارسی سیستم هستید یا...
شما می توانید دیتابیس فایل rpmخود را از نو بنا کنید با این دستور:
# rpm —rebuilddb
یا
به طور کامل آنرا دوباره بسازید با این دستور:
# rpm —initdb
شما می توانید فایل /var/lib/rpm/packages را قبل و بعد از rebuilddb مقایسه کنید و اگر کم شدن حجم را مشاهده کردید به دلیل این است که قسمت های استفاده نشده بانک اطلاعاتی آن بسته خارج شده است.


شما قصد دارید هم سورس یک بسته و در عین حال همان بسته را البته به صورت rpm در یک سیستم نصب کنید اما rpmدر مورد نصب آن سورس چیزی نمی داند و امکان دارد خطای ناصحیح گزارش دهد...حال چاره و راه حل چیست؟
شما میتوانید از اسکریپت rpm-orphan-find استفاده کنید.
این اسکریپت تمام کتابخانه ها در سیستم را جستجو می کند و سپس آن را با محتویات بانک اطلاعاتی rpmمقایسه می کند.این اسکریپت توسط Paul Heinlein و Peter Samuelson نوشته شده است.

این اسکریپت را از اینجا می توانید دریافت کنید:

برای کسب اطلاعات بیشتر در مورد این اسکریپت،نام این اسکریپت را در گوگل سرچ کنید.

شما قصد دارید یک بسته rpm را نصب کنید اما این پیغام را دریافت می کنید:
"Error: Failed dependencies."
مثلا من در هنگام نصب tuxpaint-0.9.13-1.i386.rpm این پیغام را دریافت کردم:
# rpm -ivh tuxpaint-0.9.13-1.i386.rpm
error: Failed dependencies

SDL_image is needed by tuxpaint-0.9.13-1

SDL_ttf is needed by tuxpaint-0.9.13-1

libSDL_image-1.2.so.O is needed by tuxpaint-0.9.13-1

libSDL_ttf-2.0.so.O is needed by tuxpaint-0.9.13-1

شما باید تمام فایل های پیش نیاز و وابسته را دانلود و نصب کنید.حال من نمی دانم بین بسته های پیش نیاز کدامیک را باید اول و کدامیک را دوم و...نصب کنم؟کافیست بصورت گروهی ان ها را نصب کنید مثلا در مورد مثال بالا میشود:
# rpm -ivh tuxpaint-0.9.13-1.i386.rpm SDL_image-1.2.3-4.i386.rpm SDL_ttf-2.0.6-1.i386.rpm
نصب کننده آن ها را بصورت مرتب و به ترتیب صحیح نصب خواهد کرد.

ممکن است شما خطایی مبنی بر پیدا نکردن یک بسته دریافت کنید ولی شما اطمینان دارید که آن بسته نصب شده است بنابراین شما باید ان بسته rpm را مرمت کنید بدین صورت:
# rpm –rebuilddb

نصب از روی سورس rpm
یک سوال پیش می آید و آن این است که وقتی rpmهست چه نیازی به نصب از روی سورس rpm وجود دارد؟
ممکن است بسته rpm موجود با سیستم شما ناسازگار باشد و ممکن است نیاز به ویرایش سورس کد وجود داشته باشد یا میخواهید بسته سازگار با سیستم خود را ایجاد کنید.
سورس rpmبسته مورد نظر را دریافت کنید مثلا tuxpaint-2002.10.20-1.src.rpm
اطمینان حاصل کنید که این سورس متناسب با توزیع مورد استفاده تان باشد.
از طریق کنسول این سورس rpmرا اجرا کنید:
# rpm -ivh tuxpaint-2002.10.20-1.src.rpm
دو مسیر /usr/src/SOURCES و/usr/src/SPECS را به خاطر بسپارید:
$ ls /usr/src/SOURCES

tuxpaint-2002.09.29.tar.gz ruxpaint-Makefile.patch tuxpaint-stamps-2002.09.29.tar.gz

tuxpaint.desktop tuxpaint-opt.patch

$ ls /usr/src/SPECS

tuxpaint.spec

با این دستور فایل rpm مورد نظرتان را بسازید:
# rpmbuild -bb tuxpaint.spec
دایرکتوری مربوطه در توزیع های مختلف ممکن است متفاوت باشد.
اگر در مورد spec file اطلاعی ندارید "spec file"را در گوگل سرچ کنید.بحث در مورد spec fileدر این مقاله نمی گنجد فقط به این نکته اشاره کنم که وقتی یک بسته ساخته میشود spec fileیکی از الزامات برای توسعه دهندگان خواهد بود و شامل اسکریپت ها،ماکروها و... میباشد.

منابع:
safari.oreilly.com
rpm.org
en.wikipedia.org

اگر جایی اشتباهه یا اشکال داره،تذکر دهید