عمل نسخة احتياطية لبعض/لكامل الحزم في ديبيان ومشتقاتها


(علي لينكس) #1

السلام عليكم ورحمة الله وبركاته, كيف حالكم أخواني الاعزاء ؟

مقدمة بسيطة :
البعض منا قد يتسائل في يوم ما: إذا أردت الانتقال من توزيعة ديبيان/مشتقاتها، إلى توزيعة أخرى من توزيعات ديبيان/مشتقاتها، هل بإمكاني عمل نسخة احتياطية لبعض الحزم لتي أحتاجها وتثبيتها محليًا ( بدون اتصال إنترنت ) خصوصًا إذا كان الإنترنت لدي بطيء؟
نعم يمكنك، الحل بسيط إن شاء الله!

مدير حزم ديبيان/مشتقاتها APT يعمل إفتراضيًا؛ عندما تقوم بتحميل/تثبيت حزمة معينه .deb من أحد المستودعات المضافة إليه سواءً في ملف /etc/apt/sources.list ، أو عن طريق مستودعات PPA ( اوبنتو/مشتقاتها ) سيحفظ منها نسخة في مجلد/var/cache/apt/archives ما لم يقم المستخدم بحذفها فستكون موجودة هناك ويمكن استعمالها مستقبلًا.

لمعرفة الحزم التي تتوفر لها نسخ لديك، قم بكتابة الأمر:

ls -la /var/cache/apt/archives

ستظهر لك قائمة تفيدك باسماء الحزم المتوفرة لديك نسخة منها، بإمكانك نسخها على قرص خارجي سواءً على USB او DVD ، وتنصيبها على توزيعة أخرى.
في بعض الأحيان قد لا يظهر لك أي نتيجة بسبب عدم توفر الملفات! قد تتسائل ماهو السبب الذي جعل من مدير الحزم APT يحذفها من المسار؟!

السبب هو أن الأمر apt-get clean يقوم بحذف جميع الملفات المتوفرة في هذا الملف، ولكن ماذا إذا ما أردت القيام بعمل نسخة من جميع الحزم المثبتة على النظام الخاص بك؟
قم باستعمال الأمر

dpkg -l | grep "^ii"| awk ' {print $2} ' | xargs sudo apt-get -y install --reinstall --download-only

سيكون كفيلًا بتحميل جميع الحزم المتوفرة لديك بالنظام، وستكون متوفرة في ملف /var/cache/apt/archives تلقائيًا.
لا تقلق! لن يقوم بتثبيت الحزم على النظام الخاص بك بسبب أمر --download-only

هُناك طريقة أخرى، لعمل نسخة من الحزم الخاصة بك لتثبيتها عن طريق الامر “apt-get” بواسطة عمل مستودع محلي، وهي كالتالي:

قم بعمل مجلد يدعى “localrepo” المنزل الخاص بك home وضع جميع الحزم المتوفرة في ملف /var/cache/apt/archives به عن طريق الأوامر الآتية:

cp /var/cache/apt/archives/*.deb .```

ستحتاج لعمل فهرس index للمستودع الخاص بك؛ لكي يتم معرفة الحزم من قبل "apt-get" بواسطة حزمة ```dpkg-dev``` ( لن تحتاج لهذه الحزمة في التوزيعة التي ستقوم بتثبيتها )
عن طريق الاوامر التالية : 

```sudo apt-get install dpkg-dev
cd ~/localrepo
dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz```

سيقوم بإنشاء فهرس index باسم "Packages.gz" في المجلد "localrepo" ( عندما تضيف حزم جديدة على الملف، ستحتاج لتحديث الفهرس index بواسطة تطبيق نفس الأوامر السابقة )
سيكون المجلد جاهز للنسخ على القرص الخارجي ( قم بتطبيق الطريقة الثانية التي سيتم شرحها لاحقًا ).

الآن، وبعد أن عملت نسخة من ملفات الحزم المتوفرة لديك، ونسختها على قرص خارجي، قد تتسائل: ماهي الطرق التي تُمكنك من تثبيت كافة/أحد الحزم المتوفرة على القرص الخارجي بواسطة أمر بسيط؟
هُناك طريقتان لعمل هذه الفكرة، وهما كالتالي:

الأولى ( المختصرة ): وهي التثبيت عن طريق مدير حزم deb المسمى "dpkg" بواسطة الأمر : 
```sudo dpkg -i packagename.deb```
مع استبدال "packagename" باسم الحزمة المراد تثبيتها. أو تثبيت جميع الحزم عن طريق الأمر 
```sudo dpkg -i *.deb```
سيكون كفيلًا بتثبيت كافة ملفات الحزم المتوفرة على القرص الخارجي.

الثانية: وهي عن طريق مدير الحزم "apt-get" قم بنسخ الملف "localrepo" من القرص الخارجي إلى مجلد المنزل لديك home ( في التوزيعة الحديثة )، ثم قم بتعديل ملف ```/etc/apt/sources.list``` لكي يقوم بتثبيت الحزم من المستودع المحلي.
أولاً سنقوم بعمل نسخة احتياطية من ملف ```/etc/apt/sources.list``` تفاديًا للمشاكل المستقبلية، عن طريق الأمر التالي: 
```sudo cp /etc/apt/source.list /etc/apt/source.list.original```
بعدها نقوم بتعديل الملف عن طريق المحرر "gedit" بواسطة الأمر الآتي: 
```sudo gedit /etc/apt/source.list```
ثم قم بكتابة السطر التالي : 
```deb file:/home/user_name/localrepo ./```
مع استبدال "user_name" باسم المستخدم الخاص بك، وقم بحفظ الملف، ثم إغلاق المحرر.
الآن، وبعدما قمت بإضافة المستودع المحلي، بإمكانك تثبيت أي حزمة محلية بواسطة الأوامر الآتية: 
```sudo apt-get update```
```sudo apt-get install package_name```
مع استبدال "package_name" باسم الحزمة التي تريد تثبيتها.
بالمناسبة مدير التطبيقات software center لن يعمل مع المستودع المحلي؛ بسبب أنه غير موثوق ( سأتطرق لطريقة عمل مستودع محلي موثوق في موضوع منفصل - بإذن الله - ) لكنه سيأخذ حيطته من ناحية التبعيات للحزمة dependencies for a package من تلقاء نفسه.

هذه هي نهاية الدرس .. إن أحسنت فمن الله، وإن أسأت أو أخطأت فمن نفسي والشيطان
إلى اللقاء نراكم في دروس أخرى إن شاء الله تعالى.
المصادر : [1](http://askubuntu.com/questions/86358/how-to-obtain-installed-package-files) [2](http://ubuntuforums.org/showthread.php?t=1090731).

مشكلة في الترقية من linux mint 17.3 rosa الى linux mint 18 Sarah!
مشكلة في الترقية من linux mint 17.3 rosa الى linux mint 18 Sarah!
مشكلة في الترقية من linux mint 17.3 rosa الى linux mint 18 Sarah!
(على ) #2

جميل جداً …بارك الله فيك.


(رائد) #3
  • يَـ ؏ـ’ــطْيّگ آلعّ’ــافُيــہ معلومآت جداً مفيدهه جزيت خيراً أخي الحبيب ali linux. :slight_smile:

(Tknunt Amir) #4

اتسأل عن المستودعات الموثوقة فهى ما ابحث عنه منذ ايام ولكن استطع انشاء واحد موثوق
انشأت مستودع عادى محلى باكثر من طريقة ولكن المشكلة هنا انها غير موقعة\موثوقه ,
وسؤال اخر : هل الحزم التى اضعها انا تحتاج الى توقيع منى ؟ اي بمعنى الحزم التى تأتى من المستودعات الرسمية لو وضعتها فى مستودعى الخاص فلا احتاج الى اعادة توقيعها من جديد ؟