3.4 الحزم الجاهزة كتاب لينكس الشامل >>

3.4 الحزم الجاهزة

الفهرس

3.4.1 قبل البدء

توفر معظم المواقع برامجها على شكل ملف مصدري أما البرامج الجاهزة توزع على شكل حزم وتعتمد كل توزيعة نظام معين لإدارة هذه الحزم يؤمن معرفة الحزم المركّبة وإزالتها وتحديثها والعلاقات بينها (هذه تعتمد على تلك) وهناك ثلاث أنواع منتشرة rpm (أي RedHat Package Mangment) متوفر في ريدهات وشبيهاتها مثل ماندريك فهي GPLed أي ليست مقتصرة على ريدهات حيث توفر معظم التوزيعات هذه الأداة أو على الأقل أداة للتحويلها لنظام تلك التوزيعة ومن الأنظمة الأخرى deb (من توزيعة Debian) و tgz (في توزيعة Slackware). إن نظام إدارة الحزم يوفر عليك الكثير من الصداع فكل ما عليك هو طلب تركيب البرنامج وسيتكفل النظام من التحقق من المتطلبات المسبقة ومن وجود إصدارات سابقة أو برنامج يتضارب عملها مع البرنامج الذي تريد تركيبه كما يقوم بإعلام البرامج الأخرى التي يمكنها الاستفادة منه بوجوده، لدرجة أن نظام إدارة الحزم في ديبيان قادر على ترقية التوزيعة كاملة دون الحاجة لإعادة الإقلاع. وجود نظام إدارة الحزم لا يمنعك من تركيب برامج بطرق أخرى مثل الملف المصدر أو الأرشيفات المضغوطة tarball الجاهزة.

warningتحذير

إن أي تعديل على المجلدات /bin و /sbin و /usr و /lib و /var وما يتفرع عنها باستثناء /val/local و /usr/local قد يشوش نظام إدارة الحزم

قبل البدء بالبحث عن برنامج معين على الشبكة ابحث عنه في أقراص التوزيعة التي لديك،يمكنك استخدام الأدوات التي توفرها التوزيعة للبحث عن البرامج وتركيبها مثلا في ماندريك اذهب إلى مركز التحكم ثم اكتب كلمة سر الجذر ثم انقر على الحزم ثم اضافة
Mandrake Control Center -> Packages -> add
عندها تستطيع البحث أو تركيب حزمة معينة. كما تمكنك الأداة redhat-config-packages من ريدهات بعمل مشابه ولكنه أقل مرونة فهناك قائمة بالحزم تختار من خلالها دون إمكانية البحث..

redhat-config-packages
تمرين
جرب أن تركب باستعمال مركز تحكم ماندريك هذه البرامج: مشغل برامج ويندوز (wine) وهذه الألعاب rocksndiamons و frozenbubbles و marbels و lbreakout2 ثم اذهب إلى run او سطر الأوامر ونفذها مثلا بكتابة wine sol

tipتلميح

لتركيب ملف rpm في ماندريك يكفي النقر(المزدوج) عليه ثم إدخال كلمة سر الجذر. هذا إذا كانت الحزمة مصممة لماندريك ومن مواقعها انظرفصل ما بعد التركيب

warningتحذير

تركيب الحزم يحتاج لأن تكون المستخدم الجذر فإذا حاولت تركيبها بالمستخدم العادي قد تحصل على خطأ لا يقول لك صراحة أنك يجب أن تكن جذراً بل "لا يمكن الوصول لملف كذا ..." أو "لا يمكن الكتابة في ملف كذا" ،

الحزم المصممة لتوزيعة تعمل على أخرى،ولكن هناك مشكلة الإعتماد أي أن تكون الحزمة الفلانية تعتمد على إصدار من مكتبة معينة أحدث من التي لديك عندها عليك ترقية المكتبة فإذا قلنا أن هذه الحزمة مصممة لريدهات 8.0 وحاولت تركيبها على ريدهات 7.2 ربما ستعطيك أنك بحاجة إلى مكتبة glibc 3.2 مثلا وأنت تملك نسخة 2.9 مثلا فعليك ترقية المكتبة أولا (تركيب حزمة المكتبة المذكورة) ثم تركيب الحزمة التي تريد.

تعتمد بعض الحزم على نوع المعالج وأخرى لا تعتمد (مثل الحزم المصدرية أو حزم الوثائق والمؤثرات ...) ويكتب عادة اسم المعالج قبل نوع الحزمة مثل

kernel-2.4.21.i586.rpm
kernel-2.4.20.athlon.rpm
gcc-3.2.ppc.rpm
mplayer-0.9.i386.rpm
winex-20032203.src.rpm
xmms-skins-1.8.noarch.rpm
تعمل حزم noarch,src على كل الأجهزة لأنها ليست برامج جاهزة (ربما وثائق أو ملف مصدري أو نص تنفيذي) وفي دبيان تسمى all. أما i386 فهي تعمل على كل عائلة انتل من هذا الطراز فصاعدا(بما في ذلك البنتيوم). i586 لا تعمل إلا على البينتوم فصاعدا. نظريا تعمل i586 اسرع من i386. i686 تعني بينتيوم 2 فما فوق أما athlon فهي ل AMD Athlon و Duton ويمكن لحزم i386 أن تعمل ولكن بسرعة أقل ولمعرفة نوع المعالج لديك اكتب

arch
cat /proc/cpuinfo

حزم تعريف الأجهزة تصمم لنوع معين من الأنوية لذا عليك باختيار الحزمة التي تتناسب واصدار النواة التي لديك استخدم الأمرين

rpm -q /boot/vmlinuz # سيرد شرحه أدناه
uname -r 
وهنا تكون i386 أو i586 ليست حسب ذوقك وإنما حسب النواة

3.4.2 حزم 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/FILE
rpm -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 it
bash$ man rpm
# Shows the manual pages of rpm
bash$ rpm -qi -p /mnt/cdrom/RedHat/RPMS/ggv*.rpm
# Gives some info about ggv
bash$ rpm -qf /boot/vmlinuz
kernel-2.4.18.i586
bash$ rpm -qf `which sol`
gnome-games
bash$ su root
password:********
bash# rpm -Uvh /mnt/cdrom/Mandrake/RPMS2/*xmms*.rpm
lib-xmms:   ########################################
xmms:       ########################################
xmms-smpg:  ########################################
xmms-skins: ########################################
bash# exit
bash$
مثلا لنفرض أن لديك مجموعة حزم MPlayer التي تحدثنا عنها وتريد تركيبها موجودة في مجلد البيت اكتب الأوامر التالية
# لنعرف أين نحن
bash$ pwd
/home/ahmad
# لنعرض الملفات الموجودة
bash$ ls mplayer*.rpm
mplayer-common-1.0pre2-1.i386.rpm	mplayer-1.0pre2-1.i386.rpm
mplayer-gui-1.0pre2-1.i386.rpm	mplayer-skin-default-1.0-2.noarch.rpm
# لتصبح جذرا
bash$ su
password:
bash# rpm -Uvh mplayer*.rpm
mplayer-common:   ########################################
mplayer:       ########################################
mplayer-gui:  ########################################
mplayer-skin-default: ########################################
# نعود مستخدم عادي
bash# exit
bash$ 
أما إذا حاولنا تركيب كل من الملفات الأربعة لوحده ستفشل لأنها تعتمد على بعضها لهذا استعملنا mplayer*.rpm التي تنوب عن الملفات الأربعة

إذا كنت تستخدم توزيعة ريدهات أو فيدورا جرب أن تثبت دعم mp3 من خلال تثبيت حزمة xmms-mp3 من http://dag.wieers.com/packages/xmms-mp3 ثم شغل xmms وفعّل libmpeg123 plugin الخاص بها كتمرين لك.

هناك حيلة جميلة كنت أقوم بها قبل أن أعرف apt كانت تقوم على تخزين قائمة بملفات rpm الموجودة على كل سي-دي في ملف اسميه على اسم السي-دي وذلك بكتابة

# ضع القرص الأول
bash$ mount /mnt/cdrom
bash$ ls /mnt/cdrom/Fedora/RPMS > ~/fc2.cd1.txt
bash$ eject
# ضع القرص الثاني
bash$ mount /mnt/cdrom
bash$ ls /mnt/cdrom/Fedora/RPMS > ~/fc2.cd2.txt
# وهكذا
الآن لمعرفة في أي سي-دي يوجد الملف الفلاني
bash$ grep 'MYPKG' ~/fc2.cd*.txt
حيث MYPKG هو ما تبحث عنه.

3.4.3 حزم deb

حزم deb هي الطريقة المعتمدة في ديبيان نتعامل معها من خلال dpkg (تعتبر أداة dpkg الآن طرف خلفي backend تستخدمها الأدوات الأذكى والأسهل) هذه الملفات تكون على صورة PACKAGE_VER-REV_ARCH.deb حيث PACKAGE هي الحزمة VER الإصدار و REV هي رقم خاص بديبيان و ARCH هي طراز المعالج مثل i386 أو all. لتركيب الحزمة نستعمل الخيار --install أو -i ثم اسم الملف أي
dpkg -i PACKAGE_VER-REV_ARCH.deb ولإزالتها نستعمل --remove أو -r ثم اسم الحزمة (دون الإصدار) أي
dpkg -r PACKAGE هذا يحذف الحزمة دون ملفات الإعداد (حتى تحتفظ بإعداداتها) أما الحذف الكلي فإن الخيار هو --purge وهذا لا يسمح لك بحذف الملفات الضرورية لعمل الجهاز مثل النواة kernel-image (بالمناسبة في ديبيان هذا هو اسمها وليس kernel) لهذا عليك إضافة الخيار --force-remove-essential

عند تركيب حزمة بالخيار install فإنه يتم إعدادها بأدوات خاصة ب debian (قد يكون ذلك بطريقة تفاعلية) إذا كنت لا ترغب في ذلك يمكنك تركيبها بالخيار unpack

لمعرفة معلومات عن حزمة وماذا تفعل وماذا تحتاج ومدى ضرورتها ... (هذه المعلومات تسمى configfile لا أدري لماذا ) لعرض هذه المعلومة نستعمل الخيار info
dpkg --info PACKAGE_VER-REV_ARCH.deb للبحث عن حزمة ضمن الحزمة المثبتة وعرض تقرير يمكنك استعمال الخيار list ثم نموذج Pattern مثل libstd* لمزيد من التفاصيل عن تلك الحزمة استعمل الخيار ثم status ثم النموذج

bash# dpkg --status libstd*
كما يمكنك أن تبحث عن الحزمة التي ينتمي لها ملف بالخيار search
bash# dpkg --search `which gvim`
يمكنك أن تعرف الملفات في حزمة بالأمر dpk-query
bash# dpk-query --listfiles PACKAGE

يمكن إدارة الحزم (إضافة وحذف) تبعاً للغاية منها بواسطة البرنامج tasksel الذي يعرض وظائف معينة وعند اختيارها يتم تركيب أحد الحزم التي تقوم بهذه الوظيفة. يمكن تنفيذ tasksel -s ليركيب حزم ضرورية للنظام.

من أهم ميزات ديبان ما يسمى بالحزم الافتراضية أي الوهمية وهي أسماء لحزم أخرى مثلاً حزمة editor قد تكون vim أو emacs أو أي محرر نصوص آخر تبعاً لذوق المستخدم فإذا كانت هناك حزمة تعتمد على editor فإن الخيار يكون لك أيها تفضل. كذلك الحال مع browser مثل mozilla أو firefox ... فإذا نفذت browser يعمل البرنامج الذي تفضل منها. هناك حزمة أخرى وهمية تسمى vi قد تكون vim أو nvi أو أي محرر نصوص يستطيع تقليد vi. لعرض بدائل برنامج افتراضي مثل editor اكتب update-alternatives --display editor لتحديد أي البدائل يشيل إلى البرنامج الوهمي editor نستعمل update-alternatives --config editor حيث سيعرض لك قائمة لتختارر أيها تفضل.

يحتوي ديبيان حزمة debsums التي تعمل على فحص md5sum الخاص بالحزم المثبتة للتأكد من موثوقيتها وعدم تغييرها.

3.4.4 حزم tgz

من أكثر أنظمة الحزم بساطة (أي أنها لم تغلب من صممها ) هل عرفتم من هم ؟ نعم توزيعة الكسولين slackware فهي مجرد أرشيف مضغوط يحتوي على نصوص برمجية للتركيب والإزالة لتركيبها نستخدم الأداة installpkg و لأزلتها نستخدم removepkg

3.4.5 الحاجة لجيل جديد من الأدوات

من السهل تركيب حزمة بالطرق السابقة إذا كانت منفصلة ولا تحتاج حزم أخرى وتعود لنفس الإصدارة ، ولكن هذا الوضع مثالي جداً لأن فلسفة لينكس تقوم على أن لا تعيد اختراع العجلة أي أن تستعمل البرامج برامج أخرى ، هنا عليك إذا رغبت في تركيب الأول تركيب ما يعتمد عليه ولكن إذا لم تفعل ستحصل على رسالة تفيدك بأن العملية لم تتم لأنا بحاجة للملف الفلاني ولكن في أي حزمة يوجد هذا الملف فتصبح المسألة إبرةً في كومة قش.

أيضا إذا أردت تحديث نظامك كله لن تفيدك تلك الأدوات لهذا ظهر جيد جديد من الأدوات يمكنه اختيار الحزم هذه الأدوات تستخدم نفس الحزم السابقة ولكنها تمنحك طريقة أسهل لتركيبها

3.4.6 طريقة apt

من الطرق الجديدة السهلة المستخدمة في ديبيان وهي اختصار لنظام الحزم المتفوق advanced package tool أو بطريقة أكثر تواضعاً مجرد نظام حزم A Package Tool، لتجعل من نظام dselect القديم ينقرض. ويمكن إضافته في ريدهات (طبعاً إصدار ريدهات يتعامل مع rpm و الآخر مع deb) التي تستخدم لتجاوز صعوبات معينة مثل الإعتمادية حيث يقوم هو باختيار الحزم تلقائياً من الدليل الحالي أو من أقراص التوزيعة ويمكن استخدامها لتحديث كل حزم نظامك من موقع على الشبكة الموقع الرسمي للحصول على الملف المصدري هو www.apt-get.org. ديبيان يستعمل هذا النظام تلقائياً ولكن فيدورا أو ريدهات يمكنك إضافته من خلال تثبيت حزمة اسمها apt من أحد المواقع الخاصة بحزم rpm المذكورة سابقاً في فصل ما بعد التثبيت، مثل http://apt.freshrpms.net أو http://dag.wieers.com. هذه الحزمة بها أداة ذكية من سطر الأوامر apt-get ولها واجهة نصية تعتمد القوائم aptitude (انظر فصل تركيب لينكس بند 1.5.6) وأخرى رسومية أنيقة هي synaptic كحزمة مستقلة

استعمل apt-setup لمرة واحدة على الأقل لتحديد الأماكن التي تريد أن يبحث فيها مثلاً أن لديك أول 13 سي دي والموقع على الشبكة المحلية الفلانية أو الموقع الفلاني على الإنترنت. أو يمكنك تحديد المصادر بتعديل ملف /etc/apt/sources.list بحيث يحتوي سطر كما يلي

deb http://www.somewhere.net	stable main contrib non-free
ثم تنفيذ
bash# apt-get update
لتحديث المعلومات عن تلك المواقع (الحزمة المتوفرة فيها)

لتركيب حزمة استعمل apt-get install PACKAGE مثلاً لتركيب برنامج epiphany اكتب

bash# apt-get install epiphany
سيعرف تلقائياً ماذا يحتاج ويقوم بإخبارك على أي سي-دي وإن احتاج لتنزيل ملفات وكنت مرتبط على الشبكة وكنت أعددته لذلك فإنه سيبحث في المواقع المخصصة وببساطة كل شيء تلقائي وما عليك سوى الموافقة. ضع download مكان install لتنزيل الحزمة دون تثبيتها. لترقية التوزيعة كاملة استعمل الخيار dist-upgrade
bash# apt-get update
bash# apt-get dist-upgrade
الملفات التي تنزل من الإنترنت توضع في /var/cache/apt/archives وإذا أردت حذفها
bash# apt-get clean

الأداة apt-cache يمكها أن تساعدك في البحث عن الحزم كما يلي

bash# apt-cache search foo
المثال السابق يبحث عن foo استبدلها بما تشاء.

أما الأداة debfoster تستعمل للبحث وإزالة الحزم التي لم تعد بحاجة لها مثلاً إذا كانت الحزمة A تحتاج للحزمة B وركبت الحزمتين فإذا حذفت الحزمة A وكانت هي الوحيدة التي تستعمل B فإنها B لم تعد بحاجة لها.

3.4.7 طريقة 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

warningتحذير

إذا كنت تستعمل ماندريك بالعربي قد تظهر الرسائل مترجمة للعربية على رموز لأن الطرفية لا تدعمها شغلها بالإنجليزية LC_ALL=C urpmi mypackage.rpm

3.4.8 طريقة yum

منذ ريدهات 8 (وربما قبل) وحتى فيدورا توفر ريدهات برنامج up2date و yum للدخول على شبكة ريدهات للحصول على التحديثات التلقائية (يوجد زر يظل يومض بالأحمر حتى تقوم بالتحديث عند النقر عليه يقودك عبر واجهة رسومية) هذه الشبكة طبعاً مقابل اشتراك مالي، لكن هناك مواقع أخرى تستخدم نفس الأداة يمكن الوصول لها مجاناً.

تسهل هذه الأداة عملية الحصول على الحزم من مواقع الإنترنت وحل مشكلة الإعتمادية تلقائياً. لهذا يمكن استعمالها بنفس أهداف apt. أولاً أضف عناوين مواقع الحزم التي تدعم هذه الأداة في الملف /etc/sysconfig/rhn/sources مثل موقع rpm.livna.org و freshrpms.net بالصيغة التالية:

yum fedora-us-stable-fc2 http://download.fedora.us/fedora/fedora/2/i386/yum/stable
yum fedora-us-testing-fc2 http://download.fedora.us/fedora/fedjra/2/i386/yum/testing
yum livna-stable-fc2 http://rpm.livna.org/fedora/2/i386/yum/stable
yum flash-plugin http://macromedia.mplug.org/apt/fedora/2
yum dag http://apt.sw.be/redhat/fc2/en/i386/dag
و ملف /etc/yum.conf بالصيغة التالية:
    [livna-stable]
name=Livna.org Fedora Compatible Packages (stable)
baseurl= http://rpm.livna.org/fedora/2/i386/yum/stable
gpgcheck=1
    [livna-testing]
name=Livna.org Fedora Compatible Packages (testing)
baseurl=http://rpm.livna.org/fedora/2/i386/yum/testing
gpgcheck=1
    [livna-unstable]
name=Livna.org Fedora Compatible Packages (unstable)
baseurl=http://rpm.livna.org/fedora/2/i386/yum/unstable
gpgcheck=1
    [flash-plugin]
name=Macromedia flash-plugin site
baseurl=http://macromedia.mplug.org/apt/fedora/2
    [dag]
name=Fedora Core 2 Dag Wieers' repository
baseurl=http://apt.sw.be/redhat/fc2/en/i386/dag
مما يمكنك من تثبيت برامج الوسائط المتعددة بكل سهولة بواسطة up2date بمجرد ذكر ما تريد تنزيله بعدها، كما يلي:
bash# up2date flash-plugin xmms-mp3 xine totem mozilla-j2re mozilla-acroread
التي تركب flash-plugin و مشغل mp3 في xmms (بعد ذلك عليك تشغيل xmms ثم وضع صح على enable plugin) ومشغل xine و totem و وتركب جافا j2re للمتصفحات و acrobat reader ... بأمر واحد. يمكنك طبعاً تركيب كل واحد بشكل منفصل مثلاً تنزيل وتركيب audacity
bash# up2date audacity
كما يمكنك استعمال yum كما يلي (لتنزيل وتثبيت lame)
bash# yum install lame
هذه المعلومات من Fedora-Multimedia-HOWTO من www.tldp.org

3.4.9 طريقة slack-get

رد slackware على apt-get


<< السابق كتاب لينكس الشامل التالي >>