أدوات المستخدم

أدوات الموقع


docs:package-manager

اختلافات

عرض الاختلافات بين النسخة المختارة و النسخة الحالية من الصفحة.

رابط إلى هذه المقارنة

جانبي المراجعة السابقة المراجعة السابقة
docs:package-manager [2015/09/27 15:48]
alsadi
docs:package-manager [2015/10/02 19:05] (حالي)
alsadi
سطر 1: سطر 1:
 +{{tag>​rpm dnf yum apt apt-get Zypper مقالات}}
 +
 +====== مدير الحزم صديقك ======
 +
 +===== تمهيد =====
 +
 +كثير من القادمين الجدد إلى نظام لينكس تجدهم يسألون "​كيف أثبت كذا وكذا"​ يبحثون في غوغل ويدخل مواقع تزعم أنها نزودهم بطريقة لتثبيت كذا وينزل ملفات من هنا وهناك لا نعلم ماذا تحتوي ولا ماذا تؤثر على نظامه. مثلا كما يعلم الجميع أن نظام لينكس هو حرف ال L في LAMP (أي Linux Apache MySQL PHP) ومستخدمي ويندوز معتادون على جلب هذه الأشياء من خلال تنزيل برامج معينة تجمع وتسهل وتعد هذه الأشياء لويندوز مثل WAMP و XAMP المضحك المبكي أن هناك من يبحث عنها في لينكس متناسين أنها ساكن طبيعي في لينكس. لنتذكر أن توزيعات لينكس ما صنعت إلا لتجميع هذه المكونات وأشباهها وتيسير تثبيتها بطريقة مضمونة ومجربة وميسرة. لتثبيت مثلا لتثبيت أي من الحزم السابقة Apache أو MySQL أو PHP في توزيعتك المفضلة ما عليك إلا طلبها من مدير الحزم فيها وليس البحث عن توزيعة تضعها داخل توزيعتك. أيضا قبل أن تبحث عن برنامج بعينه مثلا برنامج
 +
 +إن مدير الحزم في التوزيعة هو أهم مكون في التوزيعة وهو الذي يعطيها هويتها وعليك تعلم استعماله وسؤاله حتى ربما قبل سؤال غوغل.
 +
 +الحزمة عبارة عن أرشيف يحتوي الملفات المطلوب توصيلها ومعها بيانات فوقية (تسمى ميتا) مثل رقم الإصدار والمزايا الموجودة فيها ومتطلبات التثبيت (الاعتماديات) والعلاقات بين الحزم كالتوافقية والإحلال والتعارض وماذا يشغل قبل وبعد التثبيت (سكربتات) ...إلخ. ​
 +
 +في توزيعات لينكس المختلفة لا يتم تناقل ملفات الحزم ثم ثتبيتها بل توضع هذه الملفات في مستودعات وعندما يطلب المستخدم حزمة معينة يتم جلب الحزمة تلقائيا من أحد مرايا المستودعات التي يثق بها المستخدم. والمرايا هي مواقع يكرر رفع حزم المستودع عليها (أي غالبا نفس الحزمة تكون مرفوعة بشكل مكرر على مئات الاستضافات). يتحكم المستخدم في المستودعات التي يريد أن يثق فيها وغالبا في التوزيعات الكبيرة مثل فيدورا وديبيان تحتوي مستودعات التوزيعة الرسمية عشرات الآلاف من الحزم البرمجية بحيث تغنيك عن الحاجة لإضافة مستودعات.
 +
 +===== العمليات على الحزم =====
 +مدير الحزم يمكنه أن يساعدك على:
 +
 +  * ما هي الحزم المثبتة.
 +  * ما هي الحزم المثبتة التي يطابق اسمها نمط معين مثلا ''​*memcache*''​
 +  * ما هي الإصدارة المثبتة عندي من الحزمة الفلانية
 +  * ما هي الملفات الموجودة داخل الحزمة الفلانية. أين ملفات إعدادات خادم أباتشي؟ أين ملفات وثائق الحزمة الفلانية
 +  * ما هذا الملف أو البرنامج الغريب؟ ما هي الحزم المثبتة التي تمتلك هذا الملف؟
 +  * ما هي الحزم التي علي تثبيتها للحصول على الملف الفلاني أو البرنامج الفلاني أو الميزة الفلانية.
 +  * البحث في وصف الحزم مثلا ما  هي الحزمة المتوفرة في أي من المستودعات التي تتعلق بالرسم ثلاثي الأبعاد أو التي يمكنها فتح النوع الفلاني من الملفات
 +  * تثبيت حزمة غير موجودة عندك (البحث عن مصدر موثوق لها وتنزيلها من الإنترنت ثم تثبيتها)
 +  * تحديث النظام بأكمله
 +  * تحديث عدد معين من الحزم
 +  * حذف عدد معين من الحزم
 +  * إضافة أو حذف أو تعطيل مستودع من طرف ثالث في حال عجزت مستودعات التوزيعة الرسمية عن تلبية طلبك
 +  * ما هي المستودعات الشائعة لتوزيعتك
 +
 +===== حزم rpm =====
 +
 +حزم rpm وهو نظام الحزم الذي بدأ من شركة ريدهات وتوزيعاتها وانتشر إلى توزيعات أخرى (مثل سوزة وماندريفا [[https://​en.wikipedia.org/​wiki/​Category:​RPM-based_Linux_distributions|وغيرها]]) ثم أصبح [[http://​refspecs.linux-foundation.org/​LSB_3.1.0/​LSB-Core-generic/​LSB-Core-generic/​swinstall.html#​SWINSTALL-INTRO|المعيار الوحيد المعتمد من مؤسسة لينكس]] لإدارة الحزم وأصبح متاحا حتى في التوزيعات الأخرى التي لا تعتمده من باب التوافقية.
 +
 +بعكس deb فإن حزم rpm تخرج إعداد الحزمة إلى مستوى آخر وتكتفي بتوصيلها دون إعدادها ولا تشغيلها لكنها قد تحمل معها إعدادات جاهزة للتشغيل.  ​
 +ملف rpm عبارة عن أرشيف cpio قياسي ذي حمولة مضغوطة حيث تدعم أكثر من خوارزمية. يتم إنتاج حزم rpm من ملف واحد يصف عملية البناء اسمه spec file.
 +
 +وكما قلنا أنه عليك التعامل مع المستودعات وليس مع ملفات الحزم لذا عليك استعمال الأدوات الخاصة بذلك. الإصدارات الجديدة من فيدورا تستخدم dnf والقديمة و RHEL وسنتوس لا تزال تستخدم yum. أما سوزة فتستخدم zypper. ​
 +
 +=== استعلام الحزم المثبتة ===
 +
 +يمكن استعلام قاعدة بيانات الحزم المثبتة rpm db من خلال q أو query مثلا
 +
 +<code bash>
 +rpm -q kernel
 +rpm -q gnome-shell
 +</​code>​
 +يمكن عرض كل الحزم المثبتة من خلال a أي all متبوعة بنمط اختياري
 +
 +<code bash>
 +rpm -qa
 +rpm -qa '​py*doc*'​
 +</​code>​
 +
 +يمكن تخصيص طريقة العرض من خلال qf أي query format مثلا لطباعة حجم الحزمة ثم اسمها دون الإصدار ثم الإصدار وهكذا بالطريقة التي تريدها مما يسهل عليك مثلا ترتيب الحزم المثبتة حسب حجمها. مثلا الأمر التالي يطبع أكبر الحزم حجما
 +
 +
 +<code bash>
 +rpm --qf '​%{size} %{name} %{version}-%{release}\n'​ -qa | sort -rn | head
 +</​code>​
 +
 +وأنا غالبا ما آخذ نسخة من أسماء الحزمة دون إصداراتها وأحتفظ بها عندما أنتقل لنظام جديد
 +
 +<code bash>
 +rpm --qf '​%{name}\n'​ -qa | sort > rpms.txt
 +</​code>​
 +
 +وعلى النظام الجديد انفذ نفس الآمر ثم أقارن بين الملفين (حزم النظام القديم وحزم النظام الجديد) من خلال meld أو diff -bu 
 +
 +
 +=== الاستعلام عن المعلومات ===
 +
 +تحتوي الحزم على معلومات فوقية تبين موقع البرنامج الرسمي ومن قام بعملية البناء ومتى وما هي رخصة البرنامج ...إلخ وماذا يفعل البرنامج؟ كل هذا من خلال الاستعلام i أي information ​
 +<code bash>
 +$ rpm -qi eog
 +Name        : eog
 +Version ​    : 3.16.3
 +Release ​    : 1.fc22
 +Architecture:​ x86_64
 +Install Date: Sun 06 Sep 2015 06:07:18 PM EEST
 +Group       : User Interface/​Desktops
 +Size        : 9091882
 +License ​    : GPLv2+ and GFDL
 +Signature ​  : RSA/SHA256, Fri 21 Aug 2015 07:36:06 PM EEST, Key ID 11adc0948e1431d5
 +Source RPM  : eog-3.16.3-1.fc22.src.rpm
 +Build Date  : Mon 17 Aug 2015 11:53:54 PM EEST
 +Build Host  : buildvm-05.phx2.fedoraproject.org
 +Relocations : (not relocatable)
 +Packager ​   : Fedora Project
 +Vendor ​     : Fedora Project
 +URL         : https://​wiki.gnome.org/​Apps/​EyeOfGnome
 +Summary ​    : Eye of GNOME image viewer
 +Description :
 +The Eye of GNOME image viewer (eog) is the official image viewer for the
 +GNOME desktop. It can view single image files in a variety of formats, as
 +well as large image collections.
 +
 +eog is extensible through a plugin system.
 +</​code>​
 +
 +يمكن عرض الملفات الموجودة في الحزمة من خلال l أي  list أو من وثائق d أي documents أو من ملفات إعدادات ​ c أي configurations أو ماذا تقدم من مزايا provides ​ أو ماذا تتطلب من اعتماديات R أي Requires ​
 +
 +<code bash>
 +rpm -ql httpd
 +rpm -qc httpd
 +rpm -qd httpd
 +rpm --provides -q httpd
 +rpm -R -q httpd
 +</​code>​
 +
 +إذا كان ملف rpm موجود عندك لكنه غير مثبت يمكن استخلاص أي معلومة تريدها بإضافة p أو package file وهذا ينطبق على جميع الأوامر مثل استعلام المزايا المقدم أو المطلوبة أو الملفات الموجودة وليس على i فقط.
 +
 +<code bash>
 +$ rpm -qip ~/​Downloads/​google-chrome-stable_current_x86_64.rpm
 +Name        : google-chrome-stable
 +Version ​    : 43.0.2357.125
 +Release ​    : 1
 +Architecture:​ x86_64
 +Install Date: (not installed)
 +Group       : Applications/​Internet
 +Size        : 187123138
 +License ​    : Multiple, see https://​chrome.google.com/​
 +Signature ​  : DSA/SHA1, Thu 11 Jun 2015 01:21:42 AM EEST, Key ID a040830f7fac5991
 +Source RPM  : google-chrome-stable-43.0.2357.125-1.src.rpm
 +Build Date  : Thu 11 Jun 2015 12:54:47 AM EEST
 +Build Host  : precise64build1.chrome.corp.google.com
 +Relocations : /opt 
 +Packager ​   : Chrome Linux Team <​chromium-dev@chromium.org>​
 +Vendor ​     : Google Inc.
 +URL         : https://​chrome.google.com/​
 +Summary ​    : Google Chrome
 +Description :
 +The web browser from Google
 +
 +Google Chrome is a browser that combines a minimal design with sophisticated technology to make the web faster, safer, and easier.
 +
 +$ rpm --provides -qp google-chrome-stable_current_x86_64.rpm
 +google-chrome = 43.0.2357.125
 +google-chrome-stable = 43.0.2357.125-1
 +google-chrome-stable(x86-64) = 43.0.2357.125-1
 +
 +$ rpm -R -qp google-chrome-stable_current_x86_64.rpm | grep -i gdk
 +libgdk_pixbuf-2.0.so.0()(64bit)
 +libgdk-x11-2.0.so.0()(64bit)
 +
 +</​code>​
 +
 +يمكن استعراض ماذا تغير على الحزمة (من ومتى وماذا)
 +<code bash>
 +$ rpm --changelog -q httpd | head
 +* Wed Jul 15 2015 Jan Kaluza <​jkaluza@redhat.com>​ - 2.4.12-4
 +- update to 2.4.16
 +
 +* Tue Jul 07 2015 Joe Orton <​jorton@redhat.com>​ - 2.4.12-3
 +- mod_ssl: use "​localhost"​ in the dummy SSL cert if len(FQDN) > 59 chars
 +
 +* Wed Jun 17 2015 Fedora Release Engineering <​rel-eng@lists.fedoraproject.org>​ - 2.4.12-2
 +- Rebuilt for https://​fedoraproject.org/​wiki/​Fedora_23_Mass_Rebuild
 +
 +* Fri Mar 27 2015 Jan Kaluza <​jkaluza@redhat.com>​ - 2.4.12-1
 +</​code>​
 +
 +=== الاستعلام عن المزايا ===
 +
 +ما هي الحزمة المثبتة التي توفر كذا؟
 +
 +  - ما هي الحزمة المسؤولة عن إصدار النظام؟
 +  - ما هي الحزمة المثبتة التي يمكنها فتح ملفات ai ؟
 +
 +<code bash>
 +rpm -q --whatprovides system-release
 +rpm -q --whatprovides '​mimehandler(application/​illustrator)'​
 +</​code>​
 +
 +=== الاستعلام عن ملفات ===
 +
 +ما هي الحزمة المثبتة التي جاء منها الملف الفلاني أو البرنامج الفلاني؟
 +<code bash>
 +$ rpm -qf /​etc/​system-release
 +fedora-release-22-1.noarch
 +$ rpm -qf `which netstat`
 +net-tools-2.0-0.31.20141124git.fc22.x86_64
 +</​code>​
 +
 +
 +
 +==== مستودعات yum وأداتي dnf و yum ====
 +
 +=== الأعمال اليومية البسيطة ===
 +
 +فيدورا أعادت كتابة الجيل الجديد من yum واسمه dnf ليستعمل أفضل مزايا zypper وهي libsolv لكن الأجمل من ذلك هو أنها لم تغير شيء من الأوامر فقط ضع dnf مكان yum.
 +
 +تثبيت حزمة ما أو ميزة ما تكون بمجرد كتابة yum أو dnf ثم مسافة ثم install ثم مسافة ثم أسماء الحزم أو المزايا المطلوب تثبيتها. كذلك إزالتها بنفس الطريقة لكن remove مكان install هكذا
 +
 +<code bash>
 +yum install my-package
 +yum install my-feature
 +yum remove my-package
 +</​code>​
 +
 +يمكن تمرير الخيار y لتجنب السؤال هل أنت متأكد معتبرا الجواب ضمنيا نعم.
 +
 +يمكن تحديث النظام (كل الحزم المثبتة) بالأمر update ويمكن تحديد عدد من الحزم التي تريد تحديثها بعينها ويمكن استعمال الأنماط أيضا كأن تقول التي تبدأ بكذا فقط ويمكن استخدام الخيار x  لاستثناء حزم بعينها من التحديث كما في هذه الأمثلة:​
 +
 +<code bash>
 +yum update -y
 +yum update -y kernel akmod*
 +yum update -y -x google-chrome-stable
 +</​code>​
 +
 +يمكنك أيضا عرض تقرير عن التحديثات دون تطبيقها من خلال updateinfo summary
 +
 +<code bash>
 +# yum updateinfo summary
 +Loaded plugins: fastestmirror,​ langpacks, refresh-packagekit
 +Updates Information Summary: available
 +     8 Security notice(s)
 +    21 Bugfix notice(s)
 +     5 Enhancement notice(s)
 +updateinfo summary done
 +</​code>​
 +
 +=== تفعيل تفضيل أسرع المواقع ===
 +
 +إذا كنت تستخدم dnf تأكد من أن الخيار انتقاء أسرع وأقرب المرايا مفعل fastestmirror في dnf.conf الموجود في ''/​etc/​dnf/​dnf.conf''​ بحيث يكون شكل الملف هكذا
 +
 +<​code>​
 +[main]
 +gpgcheck=1
 +installonly_limit=3
 +clean_requirements_on_remove=true
 +fastestmirror=1
 +keepcache=1
 +</​code>​
 +
 +لاحظ أنني أيضا فعلت الاحتفاظ بالحزم التي ينزلها keepcache ​ وذلك لأنه عند عمل ذلك سيتابع التنزيل حيث توقف في حال حدوث مشكلة (لكن عليك حذف ملفات الحزم من فترة لأخرى)
 +
 +إذا كنت تستخدم yum تأكد من أن yum-fastestmirror مثبت
 +
 +<code bash>
 +yum install yum-fastestmirror
 +</​code>​
 +
 +<​note>​ميزة أسرع المرايا غير مفعلة تلقائيا لأنك قد تكون على لابتوب يتنقل من مدينة لأخرى أو من حي لآخر فهذه الميزة قد تجعله يجلب الحزم من موقع أبعد. الخوادم مواقعها ثابتة لذا يفضل تفعيها وفي الوطن العربي لا يوجد لدينا مرايا في كل حي ولا حتى في كل بلد لذا أيضا ننصح بتفعيلها.</​note>​
 +
 +<​note>​
 +المعلومات الفوقية الخاصة بمستودعات yum تتلخص في ملف واحد هو ''​repodata/​repomd.xml''​ يشير هذا الملف للمعلومات الفوقية الموقعة حيث أن اسم الملف يحتوي بصمة checksum مثل sha256 بحيث يتغير اسم الملف بتغير محتواه مما يمنع المرايا الخبيثة من العبث بالمعلومات الفوقية كذلك يضمن لك أن تحصل على المعلومات الفوقية من أحدث المرايا (بعض المرايا أحدث من غيرها).
 +</​note>​
 +
 +=== تفعيل الفروقات ===
 +
 +تأكد من تثبيت deltarpm حيث تمكنك من جلب الفروقات عوضا عن جلب حزم كاملة وبهذا توفر وقت التنزيل الطويل للحزم الكبيرة. ​ عيب هذه الميزة أنها تزيد من استخدام المعالج عند إعادة بناء الحزمة من الفرق وإعادة البناء أيضا تستغرق وقت. إذا كان عندك إنترنت غير محدود وسرعة إنترنت عالية جدا جدا فلعلك تفضل إزالتها وليس تفعليها.
 +
 +=== البحث وجمع المعلومات ===
 +
 +هل لديك حزمة (سواء مثبتة أو غير مثبتة) ولا تعرف ماذا تفعل؟ ما إصدارها؟ من أي موقع جلبت؟ ما حجمها؟ هل تريد وصف مطول لما تفعله؟ يمكنك سؤال مدير الحزم من خلال info ويمكنك استعمال الخيار C للعمل دون إنترنت لأجل السرعة.
 +
 +<code bash>
 +# yum -C info screen
 +Loaded plugins: fastestmirror,​ langpacks, refresh-packagekit
 +Installed Packages
 +Name        : screen
 +Arch        : x86_64
 +Version ​    : 4.1.0
 +Release ​    : 0.18.20120314git3c2946.fc20
 +Size        : 926 k
 +Repo        : installed
 +From repo   : updates
 +Summary ​    : A screen manager that supports multiple logins on one terminal
 +URL         : http://​www.gnu.org/​software/​screen
 +License ​    : GPLv2+
 +Description : The screen utility allows you to have multiple logins on just one
 +            : terminal. Screen is useful for users who telnet into a machine or are
 +            : connected via a dumb terminal, but want to use more than just one
 +            : login.
 +            : 
 +            : Install the screen package if you need a screen manager that can
 +            : support multiple logins on one terminal.
 +</​code>​
 +
 +إذا لم تكن تعرف اسم الحزمة بالضبط هناك اكثير من الطرق للبحث عنها منها
 +  * نمط لاسم الحزمة مثلا بكذا أو تنتهي بكذا أو تحتوي كذا
 +  * البحث عن كلمات في وصف الحزمة
 +  * البحث عن ميزة معينة (حزمة افتراضية) أو ملف داخل الحزمة أو مكتبة ​
 +
 +
 +يمكن سرد الحزم التي تطابق نمط معين من خلال الأمر ''​list''​ مثلا الحزم التي يبدأ اسمها ب python-doc
 +
 +<code bash>
 +# yum -C list '​python-doc*'​
 +Loaded plugins: fastestmirror,​ langpacks, refresh-packagekit
 +Installed Packages
 +python-docutils.noarch ​                        ​0.11-1.fc20 ​              ​@fedora
 +Available Packages
 +python-docker-py.x86_64 ​                       0.5.3-2.fc20 ​             updates
 +python-docker-registry-core.noarch ​            ​2.0.1-2.fc20 ​             updates
 +python-docopt.noarch ​                          ​0.6.1-3.fc20 ​             updates
 +python-docs.noarch ​                            ​2.7.5-6.fc20 ​             updates
 +python-docs-info.noarch ​                       2.7.5-6.fc20 ​             updates
 +</​code>​
 +
 +يمكن البحث عن كلمات مفتاحية في وصف الحزم من خلال الامر ''​search''​ مثلا للبحث عن كلمتي io و benchmark أو كلمتي python pdf
 +
 +<code bash>
 +yum -C search io benchmark
 +yum -C search python pdf
 +</​code>​
 +
 +فيدورا وريدهات وسنتوس وغيرها تحتوي ميزات مثل حزمة system-release الافتراضية والتي في فيدورا تكون fedora-release وفي سنتوس تكون centos-release يمكنك السؤال عنها.
 +
 +في لغة بيرل هناك مكتبة اسمها XML::​Parser::​Expat يمكنك سؤال مدير الحزم ما هي الحزمة التي توفر هذه المكتبة؟
 +
 +في لغة nodejs يوجد حزمة npm اسمها less غير حزمة less في التوزيعة يمكنك أن تسأل مدير الحزم ما هي حزمة rpm التي تحتوي حزمة npm التي اسمها less؟
 +
 +ما هي الحزمة التي يمكنها فتح ملفات برنامج الأوتوكاد؟ ما هي الحزمة التي يمكنها فتح ملفات adobe illustrator؟ ​
 +
 +طيب ما هي الحزمة التي تحتوي الأمر killall أو الأمر nc؟ ما هي الحزمة التي تحتوي مكتبة libz.so.1؟
 +
 +في كل هذه الحالات نحن لا نبحث عن اسم الحزمة ولا عن وصفها بل عن ميزة أو ملف موجود داخلها في مثل هذه الحالات نستخدم الأمر ''​whatprovides''​ وهذه هي الأوامر التي تقوم بذلك
 +
 +<code bash>
 +yum -C whatprovides system-release
 +yum -C whatprovides '​perl(XML::​Parser::​Expat)'​
 +yum -C whatprovides '​npm(less)'​
 +yum -C whatprovides '​mimehandler(image/​vnd.dxf)'​
 +yum -C whatprovides '​mimehandler(application/​illustrator)'​
 +yum -C whatprovides '​*bin/​killall'​
 +yum -C whatprovides '​*bin/​nc'​
 +yum -C whatprovides '​*libz.so.1'​
 +</​code>​
 +
 +==== مستودعات ZYpp وأداة Zypper ====
 +
 +===== حزم deb =====
 +ديبيان (وبالتالي أوبنتو) يستخدم ملفات حزم خاصة به اسمها deb وهي عبارة عن أرشيف ar. يتم تحضيرها من خلال سكربتات متعددة ومتداخلة ومعقدة وغير موحدة توضع في مجلد اسمه debian إن لم يكن موجودا في كود الحزمة يتم حقنه فيها من خلال ملف الرقاع. ويتوفر برنامج ​ alien كوسيلة لنقل حزم rpm القياسية المعتمدة من مؤسسة لينكس إلى النظام كوسيلة لاجتياز التوافقية مع معايير LSB.
 +
 +إلى جانب أرشيف الملفات والمعلومات الفوقية تحتوي توزيعة ديبيان أداة لإعداد الحزمة بعد تثبيت ملفاتها اسمها debconf.
 +
 +الأدوات المرتبطة بحزم ديبيان هي
 +
 +  * apt-get - للمستودعات وما يتعلق بها (يمكنه أن يجلب الحزمة من المستودع)
 +  * aptitude - واجهة قوائم نصية
 +  * apt-cache
 +  * synaptic - أداة رسومية
 +  * dpkg - لملفات الحزم (هذه الأداة لا تعلم شيء عن المستودعات ولا يمكنها جلب شيء)
 +  * dpkg-query
 +  * dpkg-deb
 +
 +
 +مع الاسف إن كنت تحاول أتمتت تثبيت الخوادم دون متابعة unattended فإنك ستواجه مشكلة مع debconf حيث أنه أداة تفاعلية (رسومية إن شئت) لا يتم تثبيت الحزم إلا بأن تكون قائما عليها تتابعها وتتجاوب معها. للتخلص منه يمكنك وضعه في الطور غير التفاعلي من خلال DEBIAN_FRONTEND
 +
 +<code bash>
 +DEBIAN_FRONTEND='​noninteractive'​ apt-get install -y postfix
 +</​code>​
 +
 +<​note>​
 +من السهل أن يؤدي debconf إلى كوارث مثل تعطيل تحديث أمني بانتظار أن توافق على EULA لحزمة حلت محل أخرى أو بانتظار اختيار إعداد معين لحزمة معينة. استخدام الطور غير التفاعلي أمر مهم وضروري في الكثير من الأحيان خصوصا السكربتات.
 +</​note>​
 +
 +
 +للبحث في الحزم المثبتة (تقريبا)
 +
 +<code bash>
 +dpkg -l '​python-doc*'​
 +dpkg -l | grep -v '​^ii'​
 +</​code>​
 +
 +لمعرفة معنى ii و un و rc انظر [[http://​askubuntu.com/​questions/​18804/​what-do-the-various-dpkg-flags-like-ii-rc-mean|هذه الوثيقة]] ​
 +
 +لمعرفة الملفات الموجودة في حزمة مثبتة مثل apache2
 +
 +<code bash>
 +dpkg -L apache2
 +</​code>​
 +
 +للقيام بالبحث النصي في وصف الحزم المثبتة
 +
 +<code bash>
 +dpkg -S benchmark
 +</​code>​
 +
 +البحث عن الحزمة المثبتة التي تمتلك ملف معين نعمل بحث نصي
 +
 +<code bash>
 +dpkg -S /​etc/​lsb-release ​
 +</​code>​
 +
 +لعرض معلومات عن حزمة مثبتة نستخدم الخيار p ثم اسم الحزمة
 +
 +<code bash>
 +dpkg -p base-files
 +</​code>​
 +
 +أما إذا كان معك ملف الحزمة فتستخدم أداة أخرى بخيار آخر
 +
 +<code bash>
 +dpkg -I my-file.deb
 +</​code>​
 +
 +لتثبيت حزمة ما نستخدم i ولأن غالبا ذلك يتطلب اعتماديات غير متوفرة نكرهه على ذلك ثم نصلحه
 +
 +<code bash>
 +dpkg --force-all -i ~/​Downloads/​myfile.deb
 +apt-get install -y -f
 +</​code>​
 +
 +<​note>​
 +في yum يمكنك تثبيت ملف مع اعتمادياته فيما يعرف ب local install حيث يمكنك تمرير ملفات rpm إلى yum وهو يتولى اعتمادياته. ولا أعمل طريقة مكافئة لذلك في apt سوى كسر الاعتماديات بالإكراه ثم إصلاح الأمر كما في آخر مثال.
 +</​note>​
 +
 +==== مستودعات apt وأدواتها ====
 +
 +=== التثبيت والحذف ===
 +
 +بعكس yum لا يقوم ​ apt بتحديث معلوماته مع كل عملية بمعنى قد يبدأ بجلب حزم وبعد تنزيل أغلب الملفات وفي وسط العملية يكتشف بأن هذا الملف أصبح يتضارب مع ذاك أو أن هناك إصدار أحدث من كذا وتفشل العملية. لذا وقبل كل عملية عليك تحديث المعلومات الفوقية بالأمر
 +
 +<code bash>
 +apt-get update
 +</​code>​
 +
 +لتثبيت حزمة مثل خادم أباتشي استخدم install ​ لكن كن مستعدا للإجابة على debconf الذي قد يعمل ويستجوبك هل تريد كذا أم كذا أم لا تعلم؟
 +
 +<code bash>
 +apt-get install apache2
 +</​code>​
 +
 +يمكن تمرير الخيار y لتجنب السؤال هل أنت متأكد معتبرا الجواب ضمنيا نعم. وبما أن المعلومات الفوقية قد تكون غير سليمة يفضل أن تكتب
 +
 +<code bash>
 +apt-get update && apt-get install -y apache2 ​
 +</​code>​
 +
 +وحتى هذه لا تعمل دائما كما يجب وتتطلب بعض الحظ حيث أن عدد ملفات المعلومات الفوقية كبير جدا وموزع على خوادم مختلفة مما يعني أنها قد تختلف أثناء تنفيذ الأمر نفسه. إذا لم يحالفك الحظ حاول مرة أخرى لعل وعسى.
 +
 +
 +<​note>​
 +إضافة إلى الإدارة غير المجدية للمعلومات الفوقية فإن apt معرض لهجوم المرايا الخبيثة حيث يمكن للشخص خبيث أن يتطوع لعمل مرآة لخوادم أوبنتو أو ديبيان وبعد أن يقبل يقوم بعمل هجوم الإعادة replay attach وهو ينجح حتى لو كانت الحزم موقعة إلكترونيا لأن المعلومات الفوقية غير موقعة.
 +</​note>​
 +
 +هناك نوعان من حذف الحزم حذف الحزم مع الإبقاء على إعداداتها وهذا يسمى remove وحذفها مع كل متعلقاتها من إعدادات وهذا يسمى purge. ​
 +
 +<code bash>
 +apt-get purge apache2
 +</​code>​
 +
 +<​note>​
 +قد يقرر apt أن هناك حزمة ما لم تعد ضرورية ويحذفها بالمعية لذا لا أنصحك باستعمال y مع purge. قم بقراءة الحزم التي سيحذفها بالمعية وتأكد أنك لا تريد أيا منها.
 +</​note>​
 +
 +=== التحديث ===
 +
 +يسمى تحديث الحزم في ديبيان وأوبنتو بالترقية upgrade وذلك لتمزيه عن تحديث المعلومات الفوقية update. وهو يقسم إلى نوعين أيضا upgrade و distupgrade وهذا الأخير اسمه غير موفق فهو لن يرقي إصدار التوزيعة بل فقط سيرقي الحزم المثبتة فيها. لتحديث جميع الحزم الموجودة عندك يمكنك أن تكتب
 +
 +
 +
 +
 +<code bash>
 +apt-get update && apt-get upgrade -y && -get upgrade distupgrade -y
 +</​code>​
 +
 +ربما عليك تنفيذ الأمر السابق عدة مرات حتى تكون متأكد.
 +
 +=== إصلاح الأخطاء ===
 +
 +أحيانا ولأسباب مجهولة يتوقف apt عن العمل أو يكون عندك اعتماديات غير متحققة ونظام غير سليم يمكنك إصلاح ذلك بالأمر
 +
 +<code bash>
 +apt-get install -y -f
 +</​code>​
 +
 +في أحيان أخرى يكون عليك كتابة الأمر التالي لإصلاح الحزم المثبتة كي يعود apt للعمل
 +
 +<code bash>
 +dpkg-reconfigure --force -a
 +</​code>​
 +
  
docs/package-manager.txt · آخر تعديل: 2015/10/02 19:05 بواسطة alsadi