انظر كتاب لينكس الشامل
جزء من الشرح
الحزم الجاهزة كتاب لينكس الشامل >> الحزم الجاهزة
قبل البدء
توفر معظم المواقع برامجها على شكل ملف مصدري أما البرامج الجاهزة توزع على شكل حزم وتعتمد كل توزيعة نظام معين لإدارة هذه الحزم يؤمن معرفة الحزم المثبتة وإزالتها وتحديثها والعلاقات بينها (هذه تعتمد على تلك) وهناك ثلاث أنواع منتشرة rpm (أي RedHat Package Mangment) متوفر في ريدهات وشبيهاتها مثل ماندريك هي GPLed أي ليست مقتصرة على ريدهات حيث توفر معظم التوزيعات هذه الأداة أو على الأقل أداة للتحويلها لنظام تلك التوزيعة ومن الأنظمة الأخرى deb (من توزيعة Debian) و tgz (في توزيعة Slackware)
قبل البدء بالبحث عن برنامج معين على الشبكة ابحث عنه في أقراص التوزيعة التي لديك،يمكنك استخدام الأدوات التي توفرها التوزيعة للبحث عن البرامج وتركيبها مثلا في ماندريك اذهب الى مركز التحكم ثم أكتب كلمة سر الجذر ثم انقر على الحزم ثم اضافة
Mandrake Control Center -> Packages -> add
عندها تستطيع البحث أو تركيب حزمة معينة. كما تمكنك الأداة redhat-config-packages من ريدهات بعمل مشابه ولكنه أقل مرونة فهناك قائمة بالحزم تختار من خلالها دون إمكانية البحث..
تمرين
جرب أن تركب باستعمال مركز تحكم ماندريك هذه البرامج: مشغل برامج ويندوز (wine) وهذه الألعاب rocksndiamons و frozenbubbles و marbels و lbreakout2 ثم اذهب إلى run او سطر الأوامر ونفذها مثلا بكتابة wine sol
تلميح لتثبيت ملف rpm في ماندريك يكفي النقر(المزدوج) عليه ثم إدخال كلمة سر الجذر. هذا إذا كانت الحزمة مصممة لماندريك ومن مواقعها انظرفصل ما بعد التثبيت
تحذير تثبيت الحزم يحتاج لأن تكون المستخدم الجذر فإذا حاولت تثبيتها بالمستخدم العادي قد تحصل على خطأ لا يقول لك صراحة أنك يجب أن تكن جذراً بل "لا يمكن الوصول لملف كذا ..." أو "لا يمكن الكتابة في ملف كذا" ،
الحزم المصممة لتوزيعة تعمل على أخرى،ولكن هناك مشكلة الإعتماد أي أن تكون الحزمة الفلانية تعتمد على إصدار من مكتبة معينة أحدث من التي لديك عندها عليك ترقية المكتبة فإذا قلنا أن هذه الحزمة مصممة لريدهات 8.0 وحاولت تركيبها على ريدهات 7.2 ربما ستعطيك أنك بحاجة إلى مكتبة glibc 3.2 مثلا وأنت تملك نسخة 2.9 مثلا فعليك ترقية المكتبة أولا (تثبيت حزمة المكتبة المذكورة) ثم تثبت الحزمة التي تريد.
تعتمد بعض الحزم على نوع المعالج وأخرى لا تعتمد (مثل الحزم المصدرية أو حزم الوثائق والمؤثرات ...) ويكتب عادة اسم المعالج قبل نوع الحزمة مثل kernel-2.4.21.i586.rpmkernel-2.4.20.athlon.rpmgcc-3.2.ppc.rpmmplayer-0.9.i386.rpmwinex-20032203.src.rpmxmms-skins-1.8.noarch.rpm
تعمل حزم noarch,src على كل الأجهزة لأنها ليست برامج جاهزة. أما i386 فهي تعمل على كل عائلة انتل من هذا الطراز فصاعدا(بما في ذلك البنتيوم). i586 لا تعمل إلا على البينتوم فصاعدا. نظريا تعمل i586 اسرع من i386. i686 تعني بينتيوم 2 فما فوق أما athlon فهي ل AMD Athlon و Duton ويمكن لحزم i386 أن تعمل ولكن بسرعة أقل ولمعرفة نوع المعالج لديك اكتب
archcat /proc/cpuinfo
حزم تعريف الأجهزة تصمم لنوع معين من الأنوية لذا عليك باختيار الحزمة التي تتناسب واصدار النواة التي لديك استخدم الأمرين rpm -q /boot/vmlinuz # سيرد شرحه أدناهuname -r
وهنا تكون i386 أو i586 ليست حسب ذوقك وإنما حسب النواة
حزم rpm
إقرأ دليل استخدام rpm بطباعة man rpm وانظر ماهي الخيارات المتوفرة. لدينا الخيارات التالية : الإستفسار عن حزمة أو ملف، تثبيت حزمة معينة، .إزالة حزمة مثبتة
الإستفسار عن حزمة أو ملف
لمعرفة معلومات عن حزمة من ملف الحزمة(ربما الحزمة غير مثبتة)
rpm -qi -p PACKAGE-VER.ARCH.rpm
إذا كانت مثبتة يمكنك الاستفسار عنها أيضا (أزل الخيار -p) ثم اسم الحزمة (لا داع للإصدار) مثلاً rpm -qi gpm لاحظ الخيار i يعني info أي معلومات. إذا كنت تريد معرفة الملفات التي تحتويها حزمة معينة استعمل -l أي list مثلاً rpm -ql mysql. هل تساءلت مرة أين هي وثئق حزمة معينة! بسيطة -d مثلاً rpm -qd mysql. أين هي ملفات إعداد apache ؟ استعمل -c مثلا rpm -qc apache2 في ريدهات يسمونه httpd لهذا rpm -qc httpd للإستفسار ومعرفة إلى أي حزمة ينتمي الملف الفلاني
rpm -q -f /PATH/TO/FILErpm -q -f `which COMMAND`
لاحظ استخدام الأمر which لمعرفة المسار للأمر معين
هل تظن أنك حذفت ملف؟ ربما قمت بإجبار تنزيل حزمة دون استيفاء الاعتمادية الخاصة بها. يمكنك مراجعة نظام الحزم كاملاً
bash# rpm -Va
تثبيت حزمة أو ترقيتها
يجب أن تكون جذرا لتثبت حزمة،أفضل طريقة لتثبيت حزمة هي rpm -Uvh PACKAGE-VER.ARCH.rpm
هذه الطريقة تعطيك مؤشر من # يتحرك أثناء التثبيت ، وتفحص اذا كانت هذه الحزمة مثبتة مسبقا فاذا كانت كذلك تستبدل القديمة بالجديدة، أما اذا كنت تريده أن يثبت الحزمة اذا لم تكن مجودة ويخرج دون فعل شيء اذا كانت مثبتة مسبقا
rpm -ivh PACKAGE-VER.ARCH.rpm
لتثبيت حزمة مصدرية
rpm --rebuild PACKAGE-VER.src.rpm
ويمكنك اذا كنت تملك معالج AMD(مثلا Athlon) أن تستفيد أن تستفيد من كامل مزاياه وستحصل لى برنامج سريع جدا rpm --rebuild --target=athlonPACKAGE-VER.src.rpm وأيضا لمعالجات انتل (ربما في انتل لن تحس بفرق كبير) هذا الأمر rpm --rebuild --target=i686PACKAGE-VER.src.rpm
إزالة حزمة
يجب أن تكون جذرا لتزيل حزمة،هذا هو الأمر
rpm -e PACKAGE-VER
معنى الخيارات : U (Up-Grade),i (install),v (verbos),h (hash[#]),e (erase)
هذه أمثلة على كل ذلك
تطبيق عملي
bash$ rpm --help# gives you help about itbash$ man rpm# Shows the manual pages of rpmbash$ rpm -qi /mnt/cdrom/RedHat/RPMS/ggv*.rpm# Gives some info about ggvbash$ rpm -q /boot/vmlinuzkernel-2.4.18.i586bash$ rpm -q `which sol`gnome-gamesbash$ su rootpassword:********bash# rpm -Uvh /mnt/cdrom/Mandrake/RPMS2/*xmms*.rpmlib-xmms: ########################################xmms: ########################################xmms-smpg: ########################################xmms-skins: ########################################bash# exitbash$
مثلا لنفرض أن لديك مجموعة حزم MPlayer التي تحدثنا عنها وتريد تثبيتها موجودة في مجلد البيت اكتب الأوامر التالية
# لنعرف أين نحنbash$ pwd/home/ahmad# لنعرض الملفات الموجودةbash$ ls mplayer*.rpmmplayer-common-1.0pre2-1.i386.rpm mplayer-1.0pre2-1.i386.rpmmplayer-gui-1.0pre2-1.i386.rpm mplayer-skin-default-1.0-2.noarch.rpm# لتصبح جذراbash$ supassword:bash# rpm -Uvh mplayer*.rpmmplayer-common: ########################################mplayer: ########################################mplayer-gui: ########################################mplayer-skin-default: ######################################### نعود مستخدم عاديbash# exitbash$
أما اذا حاولنا تثبيت كل من الملفات الأربعة لوحده ستفشل لأنها تعتمد على بعضها لهذا استعملنا mplayer*.rpm التي تنوب عن الملفات الأربعة
حزم deb
حزم deb هي الطريقة المعتمدة في ديبيان نتعامل معها من خلال dpkg لتثبيت الحزمة نكتب dpkg -i PACKAGE_FILE_NAME.deb ولإزالتها dpkg -r PACKAGE_NAME
حزم tgz
من أكثر أنظمة الحزم بساطة (أي أنها لم تغلب من صممها ) هل عرفتم من هم ؟ نعم توزيعة الكسولين slackware فهي مجرد أرشيف مضغوط يحتوي على نصوص برمجية للتثبيت والإزالة لتثبيتها نستخدم الأداة installpkg و لأزلتها نستخدم removepkg
الحاجة لجيل جديد من الأدوات
من السهل تثبيت حزمة بالطرق السابقة إذا كانت منفصلة ولا تحتاج حزم أخرى وتعود لنفس الإصدارة ، ولكن هذا الوضع مثالي جداً لأن فلسفة لينكس تقوم على أن لا تعيد اختراع العجلة أي أن تستعمل البرامج برامج أخرى ، هنا عليك إذا رغبت في تثبيت الأول تثبيت ما يعتمد عليه ولكن إذا لم تفعل ستحصل على رسالة تفيدك بأن العملية لم تتم لأنا بحاجة للملف الفلاني ولكن في أي حزمة يوجد هذا الملف فتصبح المسألة إبرةً في كومة قش.
أيضا إذا أردت تحديث نظامك كله لن تفيدك تلك الأدوات لهذا ظهر جيد جديد من الأدوات يمكنه اختيار الحزم هذه الأدوات تستخدم نفس الحزم السابقة ولكنها تمنحك طريقة أسهل لتثبيتها
طريقة apt-get
من الطرق الجديدة السهلة المستخدمة في ديبيان وريدهات (طبعا اصدار ريدهات يتعامل مع rpm و الآخر مع deb) التي تستخدم لتجاوز صعوبات معينة مثل الإعتمادية حيث يقوم هو باختيار الحزم تلقائياً من الدليل الحالي أو من أقراص التوزيعة ويمكن استخدامها لتحديث كل حزم نظامك من موقع على الشبكة الموقع الرسمي هو www.apt-get.org ... التفاصيل قريباً
طريقة urpmi في ماندريك
طريقة تمتاز بها ماندريك عن غيرها توفر امكانيات تشبه apt-get وهي تقوم بمهام برنامج rpmdrake من سطر الأوامر الموقع الرسمي هو www.urpmi.org لتنزيل حزمة ومستلزماتها اكتب urpmi mypackage ولإزالة حزمة وكل ما يعتمد عليها urpme mypackage لتحديث قائمة الحزم اكتب urpmi.update -a ولتقوم بتحديث كل الحزم لديك من موقع urpmi --update --auto-select ولترقية نظامك urpmi --auto-select ولتعرض الملفات الموجودة في حزمة urpmf mypackage.rpm ولتعرف الملف يتبع أي حزمة urpmf myfile ولعرض البرامج التي لا تعتمد على شيء urpmi_rpm-find-leaves
شكراً لعلاء من منتدى مصر على هذه المعلومات عن urpmi
تحذير إذا كنت تستعمل ماندريك بالعربي قد تظهر الرسائل مترجمة للعربية على رموز لأن الطرفية لا تدعمها شغلها بالإنجليزية LC_ALL=C urpmi mypackage.rpm
طريقة slack-get
رد slackware على apt-get
<< السابق كتاب لينكس الشامل التالي >>