بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
شرح إنشاء مستودع محلي بسيط في فيدورا ثم إستخدامه من مجلد أو بشكل بسيط من سرفر http او سرفر ftp .
1-أولا إذا أردنا إستخدام الحزم التي يتم تخزينها في النظام أثناء إستخدام مدير الحزم يجب علينا أن نتأكد ان خيار keepcache مفعل في ملف etc/dnf/dnf.conf/ هذا الأمر يبقى الحزم موجودة بعد التثبيت ولا يحذفها على العموم إذا اردنا تفعيل هذا الخيار نستخدم أي محرر نصوص ونضيف هذا الخيار كما في الصورة في الأسفل .
keepcache = True
2-ثانيا تثبيت createrepo .
sudo dnf install createrepo
3-إذا اردنا مستودع محلي يعمل في التوزيعة فقط ولا يمكن إستخدامه من خلال الأجهزة على الشبكة نقوم بإنشاء مجلد بأي مكان وبأي إسم مثلا سأفوم بإنشاء مجلد myrepo_rpm في مجلد المنزل لدي .
mkdir ~/myrepo_rpm
4-كما ذكرت في اﻷعلى ممكن أن نضيف الحزم التي تخزن في التوزيعة عند إستخدام مدير الحزم وممكن أن نضيف حزم من أي مكان لا مشكلة مثلا في الصورة في الأسفل قمت بعمل نسخة عن كل الحزم المخزنة في كاش cache مدير الحزم dnf ووضعتها في المجلد الذي قمت إنشائه سابقا في الأعلى نكتفي بالدخول على مجلد var/cache/dnf/ ثم نقوم بنسخ لصق الأمر في الأسفل.
cd /var/cache/dnf
find -iname *.rpm -exec cp -arvu {} ~/myrepo_rpm \;
5-الأن تجهيز المستودع من خلال أداة createrepo سيأخذ اﻷمر بعض وقت على حسب عدد الحزم .
createrepo ~/myrepo_rpm
6-الان ساقوم بإنشاء ملف إعدادات للمستودع داخل مجلد etc/yum.repos/ نستخدم أي محرر نصوص انا سأستخدم gedit لتوفير علي في الشرح نسمي ملف الإعادادات أي شيء لكن يجب أن ينتهي باللاحقة repo لكن طبعا الأفضل ان يدل إسم الملف عليه وأن لا يتكرر حتى لا نعدل على ملف موجود أصلا ,ثم نضيف له الأسطر كما في الصورة في الأسفل.
sudo gedit /etc/yum.repos.d/yucef_repo.repo
[yucefrepo]
name=yucef repo
baseurl=file:///home/youcef/myrepo_rpm/
enabled=1
gpgcheck=0
#priority=10
name=yucef repo
baseurl=file:///home/youcef/myrepo_rpm/
enabled=1
gpgcheck=0
#priority=10
-أولا [yucefrepo] إسم المستودع الذي يمكن التعامل معه من مدير الحزم .
-ثانيا name=yucef repo الإسم تعريفي عن المستودع هو إسم للتعريف عن المستودع نلاحظ أننا يمكننا إستخدام المسافات أي ممكن التعريف أن يكون جملة صغيرة ,على عكس الإسم في الأول الذي سنحتاجه للتعامل معه من مدير الحزم .
-ثالثا baseurl لأننا نستخدم مجلد عادي يبدء ب //:file ثم مسار المجلد المستودع مثلا عندي home/youcef/myrepo_rpm/ .
-رابعا enable أي المستودع مفعل .
-خامسا gpgcheck=0 لن أدخل في الفاصيل لكن هنا قمت بإقاف خاصية التحقق من بعض الأشياء .
-سادسا priority=10 وهي بشكل مبسط لإعطاء الأولوية للمستودع أنا في الشرح الأن وضعت علامة # قبل السطر أي أنه لن ياخذ به وسيعتبر تعليق لكن يمكنكم إزالت علامة # لا مشكلة على حسب ماذا تحتاجون أنا فقط وضعتها للفت النظر إليها على العموم لمن يريد معلومات أكثر عن إعدادات المستودعات يكتب في الترمينال man dnf.conf لكن غالبا لن نحتاج إلا الأشياء التي ذكرتها في الأعلى .
7-نستعرض كل المستودعات ونلاحظ ان المستودع مفعل .
sudo dnf repolist all
8-مثال بسيط عن تثبيت برنامج gedit لكن مع إقاف بشكل مؤقت كل المستودعات وتفعيل فقط المستودع الذي أضفنا عندي كما ذكرت في الأعلى إسمه yucefrepo .
sudo dnf --disablerepo=* --enablerepo=yucefrepo install gedit
9-الأن أسهل حل لتشغيل المستودع على الشبكة المحلية بإستخدام python لتشغيل سرفر http بسيط طبعا ممكن إستخدام httpd .
-أولا ندخل على مجلد المستودع ونشغل من خلال python سرفر http .
cd ~/myrepo_rpm
python -m SimpleHTTPServer 8080
-ثانيا من الجهازالذي يحتوي المستودع نجلب الip .
-ثالثا من الجهاز الأخر في الشبكة أو جهاز وهمي او الجهاز الأساسي لا مشكلة نضيف ملف إعدادات المستودع أو نعدل عليه إذا كان موجود مسبقا, ملاحظة نستخدم أي محرر نصوص نريد أو متوفر بدل gedit إذا لم يكن موجود هذا البرنامج.
sudo gedit /etc/yum.repos.d/yucef_repo.repo
نضيف ذات الأسطر مع إستبدال //:file ب //:http ثم عنوان ip الجهاز الذي يحتوي المستودع ثم نقطتين ثم رقم البورت port الذي إستخدمناه شيء كالذي في الأسفل .
baseurl=http://192.168.1.67:8080/
-رابع أمر إختياري يمكننا أن نتاكد أن السرفر يعمل بشكل صحيح من خلال الدخول عليه من المتصفح وعندها يكون الأمر نجح .
10-إنشاء سرفر ftp .
-اولا نقوم بتثبيت سرفر vsftpd .
sudo dnf install vsftpd
-ثانيا نشغيل ونضيفه غذا اردنا ليتم تشغيل عند كل إقلاع من خلال enable .
sudo systemctl start vsftpd.service
sudo systemctl enable vsftpd.service
-ثالثا نعدل على إعدادات الجدار الناري firewall .
sudo firewall-cmd --add-service=ftp
-رابعا إلى داخل مجلد var/ftp/ نقوم بعمل نسخة أو نقل المجلد الموجود فيه الحزم أو نقوم بإنشاء مجلد جديد داخله وننقل إليه ما نريد من حزم لا مشكلة على العموم انا هنا سأعمل نسخة عن المجلد الموجود أصلا في مجلد المنزل لدي .
sudo cp -r ~/myrepo_rpm /var/ftp
-خامسا كما في شرح سرفر http في الجهاز الثاني على الشبكة أو في جهازنا نضيف ملف إعدادت المستودع أو نعدل عليه إن وجد سابقا وبدل //:file او //:http نضيف //:ftp زائد فقط ip الجهاز الذي عليه المستودع وإسم المجلد الموجود فيه الحزم شيء كالذي في الأسفل .
baseurl=ftp://192.168.1.67/myrepo_rpm/
11-اخيرا بعض المعلومات .
-أولا إذا واجهتنا أي مشكلة نجرب تخفيف حماية selinux بشكل مؤقت من خلال الأمر في الأسفل .
sudo setenforce 0
-ثانيا لاحقا عند القيام بأي تغير في المستودع من إضافة حزم وحذف...إلخ حتى يتم الأخذ بالتغيرات التي حصلت يجب تحديث معلومات المستودع مرة أخرى من خلال أداة createrepo ممكن من خلال اﻷمثلة في الأسفل على العموم لمزيد من المعلومات عن createrepo نكتب في الترمينال man createrepo .
createrepo --update ~/myrepo_rpm
sudo createrepo --update /var/ftp/myrepo_rpm