نصب توزیع های لینوکس امروزه بسیار راحت است.شما می توانید به راحتی با استفاده از سی دی رام و چند ضرب کلیک توزیع محبوبتان را نصب کنید...
لینوکس های امروزی در شناسایی سخت افزار بسیار دقیق عمل می کنند و بسیار سریع نصب میشوند.
نگهداری از سیستم های لینوکسی هم امروزه به تکامل خوبی رسیده است.امروزه نصب یک بسته به راحتی انجام می پذیرد و نصب مثلا یک patchامنیتی بسیار سریع انجام می پذیرد.
یکی از مسایلی که در نصب بسته ها در لینوکس همواره مورد توجه بوده،موضوع وابستگی بسته ها بوده است.
یک راه قدیمی نصب از روی سورس یا همون کد منبع میباشد با استفاده از دستورات ./configureوmakeو make installنصب از روی کد منبع انجام می پذیرد.
حال فرض کنید بعد ازفرمان makeپیغام make failedرا مشاهده کردید.چاره چیست؟
شاید استفاده از بسته باینری که خودش مشکل وابستگی ها رو حل کند بهتر باشد؟
RPM
مخفف Red Hat Package Manager میباشد.مدیر بسته های rpmعلاوه بر سریع بودن بسیار قدرتمند نیز میباشد.
نصب بسته های rpmبسیار راحت است. دستور زیر را ببینید:
# rpm -i packagenameدر دستور فوق –hپیشرفت کار را نشان می دهد.# rpm –ivh packagename
اگر می خواهید یک بسته rpmرا بدون نصب آن،ابتدا تست کنید ، می توانید از دستور زیر استفاده کنید:
باز هم مشکل Dependency یا همان وابستگی بسته ها ممکن است وجود داشته باشد،چندین راه برای جلوگیری از آن وجود دارد:# rpm -ivh —test packagename
اجازه ندهید وابستگی ها همچنان وجود داشته باشند و بسته های وابسته را نصب کنید...
یک rpmمتناسب با سیستم ومعماریتان بسازید،PLD شاید به شما کمک کند...
ارتقا دادن بسته های rpm
ممکن است شما قصد upgrade بسته های نصب شده را داشته باشید به دلایل گوناگون مثل قابلیت های جدیدی که در بسته جدیدتر وجود دارد یا بر طرف کردن باگ های نسخه قبلی...
ارتقا بسته های rpmبه سادگی صورت می گیرد:
در صورتی که ابتدا قصد تست و نه نصب را دارید از فرمان زیر استفاده کنید:# rpm –Uvh packagename
# rpm -Uvh —test packagename
از سویچ –Uمی توانید به جای –iدر موقع اینستال هم استفاده کنید.
این سویچ هم در هنگامی که قصد نصب را دارید و هم در هنگام upgrade به کار می رود.-Uبسته قدیمی را جایگزین می کند.
اگر شما قصد دارید نگارش های متفاوتی را نصب کنید مثلا چندین کرنل یا gccاز –Uیا –iاستفاده نکنید.
از نصب خارج کردن بسته های rpm:
برای از نصب خارج کردن یا همان Removیک بسته rpmاز دستور زیر استفاده کنید:
مثلا برای از نصب خارج کردن xmovie-1.9.13-1.i386.rpmباید دستور زیر را وارد کنید:# rpm –ev packagename
برای از نصب خارج کردن یک بسته شما نیازی به وارد کردن اسم کامل بسته ندارید.# rpm –ev xmovie
برای از نصب خارج کردن چندین بسته به صورت همزمان اینگونه عمل کنید:
اگر هنگام از نصب خارج کردن نمی خواهید موضوع وابستگی بررسی شود از دستور زیر استفاده کنید:#rpm –ev xmovie vqfplugin tiff
# rpm -ev —nodeps packagename
فرض کنید شما قصد کسب اطلاعاتی در مورد بسته rpm نصب شده دارید:
فرض کنید که شما فکر می کنید فایل rpmشما خراب هست یا به روز نیست یا در حال وارسی سیستم هستید یا...$ rpm –q xmovie
شما می توانید دیتابیس فایل rpmخود را از نو بنا کنید با این دستور:
یا# rpm —rebuilddb
به طور کامل آنرا دوباره بسازید با این دستور:
شما می توانید فایل /var/lib/rpm/packages را قبل و بعد از rebuilddb مقایسه کنید و اگر کم شدن حجم را مشاهده کردید به دلیل این است که قسمت های استفاده نشده بانک اطلاعاتی آن بسته خارج شده است.# rpm —initdb
شما قصد دارید هم سورس یک بسته و در عین حال همان بسته را البته به صورت rpm در یک سیستم نصب کنید اما rpmدر مورد نصب آن سورس چیزی نمی داند و امکان دارد خطای ناصحیح گزارش دهد...حال چاره و راه حل چیست؟
شما میتوانید از اسکریپت rpm-orphan-find استفاده کنید.
این اسکریپت تمام کتابخانه ها در سیستم را جستجو می کند و سپس آن را با محتویات بانک اطلاعاتی rpmمقایسه می کند.این اسکریپت توسط Paul Heinlein و Peter Samuelson نوشته شده است.
این اسکریپت را از اینجا می توانید دریافت کنید:
برای کسب اطلاعات بیشتر در مورد این اسکریپت،نام این اسکریپت را در گوگل سرچ کنید.
شما قصد دارید یک بسته rpm را نصب کنید اما این پیغام را دریافت می کنید:
"Error: Failed dependencies."
مثلا من در هنگام نصب tuxpaint-0.9.13-1.i386.rpm این پیغام را دریافت کردم:
error: Failed dependencies# rpm -ivh tuxpaint-0.9.13-1.i386.rpm
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را اجرا کنید:
دو مسیر /usr/src/SOURCES و/usr/src/SPECS را به خاطر بسپارید:# rpm -ivh tuxpaint-2002.10.20-1.src.rpm
$ 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
اگر جایی اشتباهه یا اشکال داره،تذکر دهید![]()