بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
مجدد شرح
التعامل مع مستودعات فيدورا
وما بني عليها :
قبل أن أبدأ أريد أن أشكر الأخ مهند الرسيني الذي قام بمراجعة الموضوع وتصحيح بعض الأخطاء إذا كان هناك من مراجعة أو إضافة أرجو أن لا تترددو بالتواصل معي .
أولا ما هي المستودعات وماذا تحتوي المستودعات بشكل بسيط هي غالبا مواقع على الإنترنت كأي موقع قد تكون http أو مثلا ftp إلخ ...أو ممكن حتى أن تكون مجلد نضيفه نحن .وهي من إسمها واضح معناها مستودع يتم تخزين
الأشياء
فيه وبداخل هذه المستودعات يتم تخزين حزم مثلا معنا الأن في فيدورا حزم rpm هذه الحزم حتى
يُفهم معناها بشكل بسيط ممكن تشبهها بملفات التثبيت exe في ويندوز ...
في فيدورا أو أي توزيعة بنية عليها ستجدون عناوين هذه المستودعات في مجلد بهذا المسار etc/yum.repos.d/ داخل هذا المجلد ستجدون ملفات نصية عادية تنتهي باللاحقة repo. يمكن قراءة ما بداخل هذه الملفات ستجدون بداخلها مثلا إسم المستودع و رابط المستودع وحالته هل هو مفعل أو تم تعطيله حيث يمكن التحكم بالمستودعات يدويا أو من مدير الحزم كما سأشرح في الأسفل وهناك بعض التفاصيل اﻷخرى التي ليس وقتها الأن .
الأن هناك أكثر من طريقة للتعامل مع المستودعات من حذف إضافة إلخ...:
1-بكل بساطة كما قلنا أن رابط المستودعات والمعلومات عنه يكونوا بملف نصي بأي إسم وبنتهي ب repo. وهذا الملف يكون في مجلد etc/yum.repos.d/ الأن بكل بساطة ممكن إضافة المستودع من خلال الدخول على هذا المجلد وتنزيل هذا الملف بداخله من خلال أي برنامج تنزيل مثلا برنامج wget تصفحو معي هذا الملف النصي الذي ينتهي ب repo. في الرابط في الأسفل وهو مستودع لأخ إسمه أبو زكريا فيه الكثير من البرامج من تطويره وواجهة العقاب المستودع لفيدورا 23 وما بنيه عليها.
لاحظو أنه ملف نصي عادي جدا بداخله معلومات عن المستودع ولاحظو رابط المستودع في baseurl إعملو نسخ لصق للرابط وقومو بتصفحه بأي متصفح مواقع لتلاحظو أنه ممكن تصفح الحزم الموجودة فيه كأي موقع على الإنترنت ونلاحظ رابط لملف gpgkey وهو مفتاح المستودع لن أدخل بالتفاصيل لأني لا أعلم الكثير عنه لكنه شيء للأمان لاحظو gpgcheck=1 رقم 1 يعني هذا الخيار مفعل رقم 0 يعني غير مفعل وممكن أيضا أن يتم حفظ ملف التحقق في مجلد /etc/pki/rpm-gpg/ لاحظو أيضا أن المستودع سيكون مفعل enabled=1 وطبعا مذكور إسم المستودع name على العموم قومو بقراءة الملفات داخل مجلد etc/yum.repos.d/ لتعرفو كيف يكون شكل ملف المستودع لأنه قد يحتوي أكثر من رابط لأكثر من معمارية وبعض التفاصيل اﻷخرى.
الأن كيف سأضيف هذا المستودع بكل بساطة كما قلت في الأعلى أدخل على مجلد etc/yum.repo.d/ وأقوم بتنزيل هذا الملف النصي الذي يحتوي المعلومات وينتهي بي repo. ونلاحظ أننا نحتاج صلاحيات الجذر root .
cd /etc/yum.repos.d
sudo wget http://download.opensuse.org/repositories/home:/abouzakaria/Fedora_23/home:abouzakaria.repo
الأن ممكن حذف المستودع عن طريق حذف هذا الملف .
sudo rm /etc/yum.repos.d/home:abouzakaria.repo
و ممكن الإبقاء عليه لكن إقافه من خلال تحرر الملف بأي برنامج تحرير النصوص وجعل enablde=1 إلى قيمة 0 أي enabled=0 ثم نحفظ الملف ولإعادة تفعيله نجعل القيمة 1 .
2-الان من مدير الحزم التحكم بالمستودعات .
-عرض كل المستودعات الموجودة على الجهاز .
sudo dnf repolist all
-عرض فقط المستودعات المفعلة .
sudo dnf repolist enabled
-عرض فقط المستودعات الغير مفعلة .
sudo dnf repolist disabled
-إضافة مستودع ما مثلا مستودع الأخ أبو زكريا.
sudo dnf config-manager --add-repo http://download.opensuse.org/repositories/home:/abouzakaria/Fedora_23/home:abouzakaria.repo
sudo dnf config-manager --set-disabled home_abouzakaria
-ممكن أيضا أثناء تثبيت أو تحديث شيء أو تحديث النظام إقاف مستودع ما لمرة واحدة فقط وعند إنتهاء عملية التثبيت يرجع المستودع إلى وضعه الطبيعي .
sudo dnf --disablerepo=home_abouzakaria install gedit
-تفعيل مستودع ما ممكن أن نحصل عل إسمه من خلال مثلا أمر عرض المستودعات الغير مفعلة في الأعلى ... مثال .
sudo dnf config-manager --set-enabled home_abouzakaria
-ممكن أيضا أثناء تثبيت أو تحديث شيء أو تحديث النظام تفعيل مستودع ما لمرة واحدة فقط وعند إنتهاء عملية التثبيت يرجع المستودع إلى وضعه الطبيعي .
sudo dnf --enablerepo=home_abouzakaria update
-ممكن مؤقتا أيضا إقاف كل المستودعات وتشغيل مستودع محدد مثال في الأسفل.
sudo dnf update --disablerepo=* --enablerepo=fedora
sudo dnf install gedit --disablerepo=* --enablerepo=fedora
-امر إضافي قد يفيدكم لعرض كل ما يمكن إضافته من متغيرات مثل متغير enabled و gpgcheck و... إلى المستودعات وعرض وضعها في كل المستودعات الحالية الموجودة لدينا لمن يريد التعمق أكثر في هذا الموضوع أو مثلا في موضوع إنشاء مستودع محلي مثلا في أي مجلد لدينا وتفعيل هذا المستودع يمكنه البحث أكثر في مواقع الإنترنت أو من الوثائق الرسمية لفيدورا أو rpm أو dnf .
sudo dnf config-manager --dump
وممكن لمستودع واحد فقط مثال
sudo dnf config-manager --dump home_abouzakaria
-ممكن إضافة متغير غير موجود لمستودع أو أكثر من خلال تحرير ملف المستودع باي محرر نصوص وإضافة الخيار الجديد وممكن إستخدام أمر setopt-- مع خيار save-- مثال في الأسفل لإضافة proxy طبعا أستخدم الامر للشرح ال proxy ليس حقيقي .
sudo dnf config-manager --setopt proxy=http://proxy.example.com:3128/ home_abouzakaria --save
-ممكن أيضا إستخدام setopt من دون save يعني يستخدم هذا ال option لمرة واحدة أثناء تثبيت شيء مثلا.
sudo dnf update --setopt deltarpm=False
الامر بكل بساطة نقوم بإنشاء ملف نصي عادي داخل مجلد etc/yum.repos.d/ ونقوم بتسميه الملف كما نشاء لكن نراعي أن الإسم لم يتكرر ويدل على الهدف منه و إسم الملف يجب أن ينتهي ب repo. ثم نضيف معلومات المستودع يدويا ممكن إستخدام أي محرر نصي مثال سأستخدم محرر نصوص gedit .
sudo gedit /etc/yum.repos.d/yucef_google_chrome.repo
ثم نضيف معلومات المستودع إليه مثال كما في الأسفل نضيفهم سطر سطر ثم نحفظ الملف.
[google-chrome]
name=google-chrome
baseurl=http://dl.google.com/linux/chrome/rpm/stable\$basearch
enabled=1
gpgcheck=1
gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub
ملاحظة نلاحظ أنه سيتم التحقق من المفاتح من خلال موقع على الإنترنت وليس من مجلد etc/pki/rpm-gpg/ وممكن أيضا أحيانا إذا توفر أن يتحقق من ملف في مجلد etc/pki/rm-gpg/ كما في اﻷسفل.
gpgkey=file:///etc/pki/rpm-gpg/linux_signing_key.pub
- ممكن تثبيت شيء من دون التحقق من gpg من خلال إضافة هذا الباراميتر nogpgcheck-- مثال .
sudo dnf --nogpgcheck install geany
4-تنزيل المستودع كحزمة .
شرح قليلا عن الحزمة الحزمة هي عبارة عن ملف مضغوط يكون بداخله ملفات وتعليمات قد تكون بعد أو أثناء أو التثبيت مثلا نقل هذا الملف إلى هنا و....الأمر بكل بساطة انه ممكن أن تكون هناك حزمة تحتوي ملف معلومات المستودع الذي ينتهي ب repo. وملف gpg الذي قلنا أنه عند وجوده يحفظ في مجلد etc/pki/rpm-gpg/ إلى جانب هذه الملفات تكون هناك تعليمات لإصال هذه الملفات إلى اماكنها الصحيحة مثال عن إضافة مستودع adobe من حزمة موجودة على الإنترنت ممكن تنزيلها وتثبيتها وممكن تثبيتها من الرابط وهذا أمر ممكن في مدير حزم dnf أو من أداة rpm فقط نمرر الرابط ويقومو بالتنزيل والتثبيت .
sudo rpm -ivh http://linuxdownload.adobe.com/adobe-release/adobe-release-i386-1.0-1.noarch.rpm
الأن الامر يختلف عن مستودع google chrome نحتاج إضافة المفتاح الذي تم حفظه في مجلد
etc/pki/rpm-gpg/ على العموم هذه التفاصيل ستجدونها في الشرح الذي سيكون في الموقع نفسه مثلا من وثائق adobe أو بكل بساطة من البحث في google أو ممكن أن تقومو به أنتم بشكل بديهي عند طلب مفاتح gpg البحث في هذا المجلد وإضافته أو ممكن البحث في الموقع الرسمي للمستودع.
sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-adobe-linux
5- شرح بعض الأمور .
ممكن إضافة أي خاصية لتعمل على كل المستودعات عند كل تشغيل لمدير الحزم dnf مثلا عندي قمت بتفعيل خاصية fastesmirror من خلال تحرير ملف
etc/dnf/dnf.conf/ بأي محرر نصوص مثال شكل الملف عند .
[main]
gpgcheck=1
installonly_limit=3
clean_requirements_on_remove=true
keepcache = True
fastestmirror=true
gpgcheck=1
installonly_limit=3
clean_requirements_on_remove=true
keepcache = True
fastestmirror=true
[main]
deltarpm=False
repo_gpgcheck = False
repo_gpgcheck = False
sudo dnf update -c /home/youcef/my_dnf_config
6-بعض الأمور المفيدة :
-أولا منغير releasever$ يدل على رقم إصدار التوزيعة مثلا 23 لفيدورا 23 .
-ثانيا متغير arch$ تعني معمارية الجهاز مثال 64bit أي x86_64.
-ثالثا متغير basearch$ تعني أيضا معمارية النظام لكن تتحدد على ضوء معمارية النظام لديك .
مثال يوضح بعض الأمور ممكن إستخدام أمر releasever-- عند تثبيت شيء في مدير الحزم يعني لنفترض أن هناك مستودعين لذات البرنامج واحد لفيدورا 22 وواحد لفيدورا 23 ولمعماريتين 32bit أو i386 ومعمارية 64bit أو x86_64 لنفترض أن رابط المستودع هكذا
-ثالثا متغير basearch$ تعني أيضا معمارية النظام لكن تتحدد على ضوء معمارية النظام لديك .
مثال يوضح بعض الأمور ممكن إستخدام أمر releasever-- عند تثبيت شيء في مدير الحزم يعني لنفترض أن هناك مستودعين لذات البرنامج واحد لفيدورا 22 وواحد لفيدورا 23 ولمعماريتين 32bit أو i386 ومعمارية 64bit أو x86_64 لنفترض أن رابط المستودع هكذا
http://download.opensuse.org/repositories/home:/abouzakaria/$releaserver/$basearch
إذا كنت تستخدم فيدورا 22 مثلا تلقائيا مدير الحزم dnf سيستبدل releasever$ برقم 22 و basearch$ بمعمارية نظامك الحالي يعني شيء كهذا لنظام 64bit سيصبح رابط المستودع شيء كالذي في الأسفل .
http://download.opensuse.org/repositories/home:/abouzakaria/22/x86_64
إذا كان النظام لديك فيدورا 23 سيصبح الرابط شيء كالذي في اﻷسفل
http://download.opensuse.org/repositories/home:/abouzakaria/23/x86_64
إذا كان هذا الأمر متوفر وهو متوفر للمستودعات الرسمية ومستودعات rpmfusion أستطيع
من فيدورا 23 تثبيت برنامج من فيدورا 22 عن طريق إعطاء قيمة releaserver$ لمدير الحزم.
وممكن أيضا العكس ممكن تثبيت برنامج من مستودعات فيدورا 23 على فيدورا 22 وممكن أيضا من فيدورا الغير مستقرة rawhide
من فيدورا 23 تثبيت برنامج من فيدورا 22 عن طريق إعطاء قيمة releaserver$ لمدير الحزم.
sudo dnf install mpv --releasever=22
وممكن أيضا العكس ممكن تثبيت برنامج من مستودعات فيدورا 23 على فيدورا 22 وممكن أيضا من فيدورا الغير مستقرة rawhide
sudo dnf install geany --releasever=23
sudo dnf install geany --releasever=rawhide
طبعا كل ما ذكر في الأعلى أمثلة بغرض الشرح والرابط الموجود غير صحيح لا كن مثال في الأسفل لأحد مستودعات فيدورا لاحظ التدرج كأننا نتصفح مجلد نلاحظ أيضا أن هناك معمارية إسمها armh .
فإذا إذا كان نظامي فيدورا 23 64bit لا فرق بين الرابطين في الأسفل لأن قيمة basearch$ و releasever$ تحدد تلقائيا على ضوء أي فيدورا أستخدم وأنا أستخدم فيدورا 23 64bit.
أخر شيء غالبا في المستودعات الرسمية عند تصفحك محتويات ملف المستودعات الرسمية في مجلد etc/yum.repos.d/ ستجد رابط المستودعات أمام metalink وليس baseurl هذا أفضل هذا الرابط عبارة عن ملف نصي بداخله أكثر من رابط سرفر حتى إذا فشل التنزيل من أي رابط ينتقل إلى رابط أخر وهذا غالبا ستجده في المستودعات الرسمية .
أخيرا أريد أن أقول أنه لا ينصح بإستخدام releasever-- إلا لمن يعرف ماذا يفعل ولا أظن أنك ستحتاجه.
فإذا إذا كان نظامي فيدورا 23 64bit لا فرق بين الرابطين في الأسفل لأن قيمة basearch$ و releasever$ تحدد تلقائيا على ضوء أي فيدورا أستخدم وأنا أستخدم فيدورا 23 64bit.
أخر شيء غالبا في المستودعات الرسمية عند تصفحك محتويات ملف المستودعات الرسمية في مجلد etc/yum.repos.d/ ستجد رابط المستودعات أمام metalink وليس baseurl هذا أفضل هذا الرابط عبارة عن ملف نصي بداخله أكثر من رابط سرفر حتى إذا فشل التنزيل من أي رابط ينتقل إلى رابط أخر وهذا غالبا ستجده في المستودعات الرسمية .
أخيرا أريد أن أقول أنه لا ينصح بإستخدام releasever-- إلا لمن يعرف ماذا يفعل ولا أظن أنك ستحتاجه.