البحث في الموقع
المحتوى عن 'دبيان'.
-
يعد دوكر Docker أداة فعالة لأتمتة تثبيت تطبيقات لينكس داخل حاويات للبرامج، للاستفادة الكاملة من إمكاناته، يجب تشغيل كل مكون من مكونات التطبيق في حاويته الخاصة. وبالنسبة للتطبيقات المعقدة التي تحوي الكثير من المكونات، يمكن أن يصبح تنسيق جميع الحاويات لبدء التشغيل والاتصال وإيقاف التشغيل معًا أمرًا غير عملي. توصل مجتمع دوكر إلى حل شائع يسمى Fig، والذي يسمح باستخدام ملف YAML واحد لتنظيم جميع حاويات دوكر وتكويناتها. حيث أصبح هذا شائعًا جدًا لدرجة أن مجتمع دوكر قرر جعل Docker Compose يعتمد على مصدر Fig، والذي تم إلغاؤه الآن. يتيح Docker Compose للمستخدمين تنظيم عمليات حاويات دوكر، بما في ذلك بدء وإيقاف التشغيل وإعداد الربط بين الحاويات ووحدات التخزين. في هذا الدليل، ستقوم بتثبيت أحدث إصدار من Docker Compose لمساعدتك في إدارة التطبيقات متعددة الحاويات على خادم دبيان 10. المتطلبات الأساسية لكي تتمكن من المتابعة مع هذه المقالة، ستحتاج إلى: خادم دبيان 10 ومستخدم عادي (non-root) بامتيازات sudo. حيث يشرح هذا الإعداد الأولي للخادم مع دليل دبيان 10 التعليمي كيفية إعداد ذلك. دوكر مثبّت بإرشادات من الخطوة الأولى والخطوة الثانية لكيفية تثبيت واستخدام دوكر على دبيان 10 ملاحظة: على الرغم من أن المتطلبات المسبقة تعطي تعليمات لتثبيت دوكر على دبيان 10، فإن أوامر docker في هذه المقالة يمكن أن تعمل على أنظمة تشغيل أخرى طالما أن دوكر مثبت. الخطوة الأولى - تثبيت Docker Compose على الرغم من أنه يمكن تثبيت Docker Compose من مستودعات Debian الرسمية، إلا أن هناك عدة إصدارات ثانوية ظهرت بعد الإصدار الأخير، لذلك في هذا الدليل ستقوم بتثبيته من مستودع GitHub الخاص بــدوكر. يختلف الأمر التالي قليلاً عن الأمر الذي ستجده في صفحة الإصدارات. فباستخدام الراية -o لتحديد ملف الإخراج أولاً بدلاً من إعادة توجيه الإخراج، هذه الصيغة تتجنب حدوث خطأ "رفض الإذن" الذي يحدث عند استخدام sudo. تحقق من الإصدار الحالي، وإذا لزم الأمر قم بتحديثه في الأمر التالي: $ sudo curl -L https://github.com/docker/compose/releases/download/1.25.3/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose بعد ذلك سنقوم بتعيين الأذونات: $ sudo chmod +x /usr/local/bin/docker-compose ثم سنتحقق من نجاح التثبيت عن طريق التحقق من الإصدار: $ docker-compose --version سيؤدي ذلك إلى طباعة النسخة التي قمنا بتثبيتها: $ docker-compose version 1.25.3, build d4d1b42b الخطوة الثانية - تشغيل حاوية مع Docker Compose يتضمن سجل دوكر العام Docker Hub، صورة Hello World للتوضيح والاختبار. حيث توضح الحد الأدنى من التكوين المطلوب لتشغيل حاوية باستخدام Docker Compose: ملف YAML الذي يستدعي صورة واحدة. سنقوم بإنشاء أصغر ملف إعدادت ممكن لتشغيل حاوية hello-world الخاصة بنا. أولاً ، قم بإنشاء دليل لملف YAML وقم بالتحويل إليه: $ mkdir hello-world cd hello-world ثم قم بإنشاء ملف YAML: $ nano docker-compose.yml ضع المحتويات التالية في الملف docker-compose.yml واحفظ الملف واخرج من محرر النصوص: $ my-test: image: hello-world يتم استخدام السطر الأول في ملف YAML كجزء من اسم الحاوية. ويحدد السطر الثاني الصورة التي سيتم استخدامها لإنشاء الحاوية. فعندما نقوم بتنفيذ الأمر docker-compose up، سيبحث عن صورة محلية بالاسم الذي حددناه، ألا وهو hello-world. بعد ذلك سنقوم بحفظ الملف والخروج منه. يمكنك النظر يدويًا إلى الصور الموجودة على نظامنا باستخدام الأمر docker images: $docker images عندما لا تكون هناك صور محلية على الإطلاق، يتم عرض عناوين الأعمدة فقط: REPOSITORY TAG IMAGE ID CREATED SIZE الآن ، أثناء وجودك في مجلد ~/hello-world، نفّذ الأمر التالي: $docker-compose up في المرة الأولى التي تقوم فيها بتنفيذ هذا الأمر، إذا لم تكن هناك صورة محلية باسم hello-world، فسوف يسحبها Docker Compose من مستودع Docker Hub العام: Pulling my-test (hello-world:)... latest: Pulling from library/hello-world 9db2ca6ccae0: Pull complete Digest: sha256:4b8ff392a12ed9ea17784bd3c9a8b1fa3299cac44aca35a85c90c5e3c7afacdc Status: Downloaded newer image for hello-world:latest . . . بعد سحب الصورة، يقوم docker-compose بإنشاء حاوية تقوم بإرفاق وتشغيل برنامج hello، والذي بدوره يؤكد أن التثبيت يعمل: . . . Creating helloworld_my-test_1... Attaching to helloworld_my-test_1 my-test_1 | my-test_1 | Hello from Docker. my-test_1 | This message shows that your installation appears to be working correctly. my-test_1 | . . . ثم يطبع شرحًا لما فعله: To generate this message, Docker took the following steps: my-test_1 | 1. The Docker client contacted the Docker daemon. my-test_1 | 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. my-test_1 | (amd64) my-test_1 | 3. The Docker daemon created a new container from that image which runs the my-test_1 | executable that produces the output you are currently reading. my-test_1 | 4. The Docker daemon streamed that output to the Docker client, which sent it my-test_1 | to your terminal. تعمل حاويات دوكر فقط عندما يكون الأمر نشطًا، لذلك بمجرد الانتهاء من تشغيل [hello]، تتوقف الحاوية. وبالتالي عندما ننظر إلى العمليات النشطة ستظهر عناوين الأعمدة، لكن لن يتم إدراج حاوية hello-world كونها لا تعمل: $docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES يمكنك الاطلاع على معلومات الحاوية، وهذا ما ستحتاجه في الخطوة التالية باستخدام الراية -a. يعرض هذا الأمر جميع الحاويات وليس فقط الحاويات النشطة: $docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 06069fd5ca23 hello-world "/hello" 35 minutes ago Exited (0) 35 minutes ago hello-world_my-test_1 و يعرض هذا المعلومات التي ستحتاج إليها لإزالة الحاوية عند الانتهاء منها. الخطوة الثالثة - إزالة الصورة (اختياري) لتجنب استخدام مساحة قرص غير ضرورية، سنقوم بإزالة الصورة المحلية. وللقيام بذلك، سنحتاج إلى حذف جميع الحاويات التي تشير إلى الصورة باستخدام الأمر docker rm، متبوعًا إما بمعرف الحاوية CONTAINER ID أو الاسم NAME. في المثال التالي، نستخدم معرف الحاوية CONTAINER ID من الأمر docker ps -a الذي قمنا بتشغيله للتو. وتأكد من استبدال معرف الحاوية: $docker rm 06069fd5ca23 بمجرد إزالة جميع الحاويات التي تشير إلى الصورة، يمكننا إزالة الصورة: $docker rm 06069fd5ca23 الخلاصة لقد قمت بتثبيت Docker Compose على دبيان 10، واختبرت التثبيت عن طريق تشغيل مثال Hello World، وأزلت صورة الاختبار والحاوية. بينما أكد مثال Hello World التثبيت، فإن هذا التكوين الأساسي لا يُظهر إحدى الفوائد الرئيسية لـ Docker Compose – وهي القدرة على إحضار مجموعة من حاويات دوكر للأعلى وللأسفل في نفس الوقت. ترجمة -وبتصرف- للمقال How To Install Docker Compose on Debian 10 لصاحبيه Brian Hogan و Kathleen Juell
-
- دبيان
- docker compose
-
(و 1 أكثر)
موسوم في:
-
يعد دوكر تطبيقًا يبسّط إدارة عمليات التطبيق في الحاويات. حيث تتيح لك الحاويات تشغيل تطبيقاتك في عمليات معزولة الموارد فيما بينها. فهي من ناحية المبدأ تشبه Virtual Machines، لكن الحاويات أكثر قابلية للنقل وأكثر ملاءمة للموارد وأكثر اعتمادًا على نظام تشغيل المضيف. وللحصول على مقدمة تفصيلية للمكونات المختلفة لحاوية دوكر، راجع المقال نظام Docker Ecosystem: مقدمة إلى المكونات المشتركة.. في هذا الدليل، ستقوم بتثبيت واستخدام Docker Community Edition (CE) على دبيان 10. حيث ستقوم بتثبيت دوكر بذاته والتعامل مع الحاويات والنِسخ، ورفع نسخة إلى مستودع دوكر. المتطلبات لمتابعة هذا الدليل، ستحتاج إلى ما يلي: خادم دبيان 10 مع مستخدم عادي بصلاحيات sudo بالإضافة لجدار الحماية. حساب على Docker Hub في حال كنت ترغب في إنشاء نسخك الخاصة ورفعها إلى Docker Hub، كما هو موضح في الخطوتين 7 و 8. الخطوة 1- تثبيت دوكر قد لا تكون حزمة تثبيت دوكر المتوفرة في مستودع دبيان الرسمي حزمًة ذو أحدث إصدار. لذا لضمان حصولنا على أحدث إصدار، سنقوم بتثبيت دوكر من مستودع دوكر الرسمي وذلك بإضافة مصدر حزمة جديد مع مفتاح GPG من دوكر للتأكد من صلاحية التنزيلات، ومن ثم تثبيت الحزمة. أولاً، قم بتحديث قائمة الحزم الموجودة لديك: $ sudo apt update بعد ذلك قم بتثبيت بعض الحزم الأساسية التي تتيح لـ apt استخدام الحزم عبر HTTPS: $ sudo apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common ثم أضف مفتاح GPG لمستودع دوكر الرسمي إلى نظامك: $ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add أضف مستودع دوكر إلى مصادر APT: $ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" بعد ذلك قم بتحديث قاعدة بيانات الحزم بحزم دوكر من المستودع المضاف حديثًا: $ sudo apt update تأكد من أنك على وشك التثبيت من مستودع دوكر بدلاً من مستودع دبيان الافتراضي: $ apt-cache policy docker-ce سترى مخرجات مثل هذا على الرغم من أن رقم إصدار دوكر قد يكون مختلفًا: $ docker-ce: Installed: (none) Candidate: 5:18.09.7~3-0~debian-buster Version table: 5:18.09.7~3-0~debian-buster 500 500 https://download.docker.com/linux/debian buster/stable amd64 Packages لاحظ أن docker-ce غير مثبت، لكن المرشح للتثبيت هو من مستودع دوكر لـ دبيان 10 (buster) أخيرًا، قم بتثبيت دوكر: $ sudo apt install docker-ce تم الآن تثبيت دوكر وبدأ البرنامج الخفي (daemon، العفريت كما يطلق عليه مستخدمو لينكس)، و تم تمكين العملية للبدء في التشغيل. تحقق من أنه يعمل بتنفيذ الأمر التالي: $ sudo systemctl status docker سيكون الناتج مشابهًا لما يلي، مما يدل على أن الخدمة نشطة وتعمل: docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2019-07-08 15:11:19 UTC; 58s ago Docs: https://docs.docker.com Main PID: 5709 (dockerd) Tasks: 8 Memory: 31.6M CGroup: /system.slice/docker.service └─5709 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock لا يمنحك تثبيت دوكر خدمة Docker daemon وحسب، بل يمنحك أيضًا خط أوامر docker، أو عميل دوكر. سنكتشف كيفية استخدام أمر docker لاحقًا في هذا الدليل التعليمي. الخطوة 2- تنفيذ أمر دوكر دون sudo (اختياري) افتراضيًا، لا يمكن تشغيل أمر docker إلا للمستخدم الجذر أو بواسطة مستخدم في مجموعة docker، والتي يتم إنشاؤها تلقائيًا أثناء عملية تثبيت دوكر. وإذا حاولت تشغيل الأمر docker دون أن تضيفه إلى sudo أو دون أن تكون في مجموعة docker، فستحصل على ناتج مثل هذا: docker: Cannot connect to the Docker daemon. Is the docker daemon running on this host?. See 'docker run –help'. إذا كنت تريد تجنب كتابة sudo كلما قمت بتشغيل أمر docker، أضف اسم المستخدم الخاص بك إلى مجموعة docker: $ sudo usermod -aG docker ${USER} لتطبيق عضوية المجموعة الجديدة، قم بتسجيل الخروج من الخادم والعودة مرة أخرى أو اكتب ما يلي: $ su - ${USER} عندها سيُطلب منك إدخال كلمة مرور المستخدم للمتابعة. تأكد من إضافة المستخدم الآن إلى مجموعة docker عن طريق كتابة: $ id -nG sammy sudo docker وإذا كنت بحاجة إلى إضافة مستخدم آخر إلى مجموعة docker التي لم تسجل الدخول بها من قبل، فيمكنك الإعلان عن اسم المستخدم هذا باستخدام: $ sudo usermod -aG docker username تفترض بقية المقالة هذه أنك تقوم بتشغيل أمر docker كمستخدم في مجموعة docker. في حال اخترت عدم القيام بذلك، يرجى إلحاق الأوامر بـsudo. دعنا نستكشف أمر docker تاليًا. الخطوة 3- استخدام أمر docker يتكون استخدامdocker من تمرير سلسلة من الخيارات والأوامر متبوعة بالوسطاء (arguments). حيث تأخذ الصيغة هذا الشكل: $ docker [option] [command] [arguments] لعرض كافة الأوامر الفرعية المتاحة، اكتب: $ docker فبالنسبة لـ دوكر 18، تتضمن القائمة الكاملة للأوامر الفرعية المتاحة ما يلي: Attach إرفاق تدفقات الإدخال والإخراج والخطأ القياسية المحلية إلى حاوية قيد التشغيل Build إنشاء نسخة من ملف Dockerfile Commit إنشاء نسخة جديدة من تغييرات الحاوية Cb نسخ الملفات / المجلدات بين الحاوية ونظام الملفات المحلي Create إنشاء حاوية جديدة Diff فحص التغييرات بالملفات أو المجلدات على نظام ملفات الحاوية Events معرفة الأحداث مباشرًة من الخادم Exec تشغيل أمر في حاوية قيد التشغيل Export استخراج نظام ملفات الحاوية كإنشاء محفوظة (tar archive) History إظهار تاريخ النسخة Images عرض قائمة النسخ Import استيراد المحتويات من tarball لإنشاء نسخة نظام ملفات Info عرض المعلومات على مستوى النظام Inspect إظهار معلومات منخفضة المستوى عن كائنات دوكر Kill إيقاف حاوية واحدة قيد التشغيل أو أكثر Load تحميل نسخة من أرشيف tar أو STDIN Login تسجيل الدخول إلى سجل دوكر Logout تسجيل الخروج من سجل دوكر Logs عرض سجلات الحاوية Pause إيقاف جميع العمليات مؤقتًا داخل حاوية واحدة أو أكثر Port سرد تعيينات المنافذ (port mappings) أو تعيين معين للحاوية Ps قائمة الحاويات Pull سحب نسخة أو وحدة تخزين (repository) من سجل Push رفع نسخة أو وحدة تخزين إلى السجل Rename إعادة تسمية الحاوية Restart إعادة تشغيل حاوية واحدة أو أكثر Rm إزالة حاوية واحدة أو أكثر Rmi إزالة نسخة واحدة أو أكثر Run تشغيل أمر في حاوية جديدة Save حفظ نسخة أو أكثر في أرشيف tar (يتم بثها إلى STDOUT افتراضيًا) Search بحث في Docker Hub عن النسخ Start بدء تشغيل حاوية واحدة أو أكثر Stats عرض بث مباشر لإحصائيات استخدام موارد الحاوية Stop إيقاف تشغيل حاوية واحدة أو أكثر Tag إنشاء علامة TARGET_IMAGE تشير إلى SOURCE_IMAGE Top عرض العمليات الجارية للحاوية Unpause إلغاء الإيقاف المؤقت لجميع العمليات داخل حاوية واحدة أو أكثر Update تحديث التكوين لحاوية واحدة أو أكثر Version إظهار معلومات إصدار دوكر Wait القيام بالحظر حتى تتوقف حاوية واحدة أو أكثر، ثم اطبع رموز الخروج الخاصة بها لعرض الخيارات المتاحة لأمر معين، اكتب: $ docker docker-subcommand –help أما لعرض معلومات على مستوى النظام حول دوكر، يمكنك استخدام: $ docker info دعنا نستكشف بعضًا من هذه الأوامر. حيث سنبدأ بالعمل مع النسخ. الخطوة 4 – التعامل مع نسخ دوكر يتم إنشاء حاويات دوكر من نسخ دوكر عندها يقوم تلقائيًّا بسحب هذه النسخات من Docker Hub، وهو سجل تديره الشركة المسؤولة عن مشروع دوكر. حيث يمكن لأي شخص إنزال نسخ دوكر على Docker Hub، لذا فإن معظم التطبيقات وتوزيعات Linux التي ستحتاج إليها ستتم استضافتها هناك. للتحقق مما إذا كان يمكنك الوصول إلى النسخ وتنزيلها من Docker Hub، اكتب: $ docker run hello-world سيشير الإخراج إلى أن دوكر يعمل بشكل صحيح: Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 1b930d010525: Pull complete Digest: sha256:41a65640635299bab090f783209c1e3a3f11934cf7756b09cb2f1e02147c6ed8 Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. … بدايةً لم يتمكن دوكر من العثور على نسخة hello-world محليًا، لذلك تم تنزيل النسخة من وحدة التخزين الافتراضية Docker Hub. فبمجرد تنزيل النسخة، يقوم دوكر بإنشاء حاوية من النسخة ويتم تنفيذ التطبيق ضمن الحاوية عارضاً الرسالة. يمكنك البحث عن النسخات المتاحة على Docker Hub باستخدام أمر docker مع الأمر الفرعي search. على سبيل المثال، للبحث عن نسخة Ubuntu، اكتب: $ docker search ubuntu سيقوم هذا البرنامج بالبحث ضمن Docker Hub ويعرض قائمة بجميع النسخات التي يتطابق اسمها مع سلسلة البحث. وفي هذه الحالة، سيكون الناتج مشابهًا لما يلي: NAME DESCRIPTION STARS OFFICIAL AUTOMATED ubuntu Ubuntu is a Debian-based Linux operating sys… 9704 [OK] dorowu/ubuntu-desktop-lxde-vnc Docker image to provide HTML5 VNC interface … 319 [OK] rastasheep/ubuntu-sshd Dockerized SSH service, built on top of offi… 224 [OK] consol/ubuntu-xfce-vnc Ubuntu container with "headless" VNC session… 183 [OK] ubuntu-upstart Upstart is an event-based replacement for th… 99 [OK] ansible/ubuntu14.04-ansible Ubuntu 14.04 LTS with ansible 97 [OK] neurodebian NeuroDebian provides neuroscience research s… 57 [OK] 1and1internet/ubuntu-16-nginx-php-phpmyadmin-mysql-5 ubuntu-16-nginx-php-phpmyadmin-mysql-5 50 [OK] ubuntu … في العمود OFFICIAL، تشير OK إلى نسخة تم إنشاؤها ودعمها من قبل الشركة المسؤولة عن المشروع. فبمجرد تحديد النسخة التي ترغب باستخدامها، يمكنك تنزيلها على الحاسوب باستخدام الأمر الفرعي pull. قم بتنفيذ الأمر التالي لتنزيل نسخة ubuntu الرسمية على الحاسب: $ docker pull ubuntu سترى الناتج التالي: Using default tag: latest latest: Pulling from library/ubuntu 5b7339215d1d: Pull complete 14ca88e9f672: Pull complete a31c3b1caad4: Pull complete b054a26005b7: Pull complete Digest: sha256:9b1702dcfe32c873a770a32cfd306dd7fc1c4fd134adfb783db68defc8894b3c Status: Downloaded newer image for ubuntu:latest يمكنك بعد ذلك تشغيل حاوية باستخدام النسخة التي تم تنزيلها بالأمر run. وكما رأيت في مثال hello-world، في حال لم يتم تنزيل صورة عند تنفيذ docker باستخدام الأمر الفرعي run، فسيقوم عميل دوكر بتنزيل النسخة أولاً ثم تشغيل حاوية باستخدامها. لرؤية النسخات التي تم تنزيلها على الحاسوب، اكتب: $ docker images ستبدو المخرجات مشابهة لما يلي: REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu latest 4c108a37151f 2 weeks ago 64.2MB hello-world latest fce289e99eb9 6 months ago 1.84kB كما سترى لاحقًا في هذا الدليل، يمكن تعديل النسخ التي تستخدمها لتشغيل الحاويات واستخدامها لإنشاء نسخ اخرى جديدة، والتي قد يتم رفعها بعد ذلك (يعني يتم عمل push لها حسب المصطلح التقني) إلى Docker Hub أو سجلات دوكر الأخرى. سنرى في الخطوة التالية كيفية تشغيل الحاويات بمزيد من التفاصيل. الخطوة 5 - تشغيل حاوية دوكر إن حاوية hello-world التي قمت بتشغيلها في الخطوة السابقة هي مثال على حاوية يتم تشغيلها والخروج منها بعد بث رسالة اختبار. فيمكن للحاويات ان تكون تفاعلية و أكثر فائدة من ذلك. فهي تشبه الآلات الافتراضية، لكن أكثر ملاءمة للموارد. كمثال، لنقم بتشغيل حاوية باستخدام أحدث نسخة لـ Ubuntu. حيث يمنحك الجمع بين المبدلين -i و -t إمكانية الوصول التفاعلي إلى القشرة في الحاوية (interactive shell access): $ docker run -it ubuntu يجب تغيير موجه الأوامر ليعكس حقيقة أنك تعمل الآن داخل الحاوية ويجب أن يأخذ هذا النموذج: root@d9b100f2f636:/# لاحظ معرف الحاوية في موجه الأوامر. نظرًا الى هذا المثال، يكون المعرف d9b100f2f636. فستحتاج إلى معرّف الحاوية هذا لاحقًا لتحديد الحاوية عندما تريد إزالتها. الآن يمكنك تشغيل أي أمر داخل الحاوية. فعلى سبيل المثال، فلنقم بتحديث قاعدة بيانات الحزمة داخل الحاوية. لست بحاجة إلى إضافة أي أمر باستخدام sudo، لأنك تعمل داخل الحاوية كمستخدم جذر (root): root@d9b100f2f636:/# apt update ثم قم بتثبيت أي تطبيق فيه. دعنا نثبت Node.js: root@d9b100f2f636:/# apt install nodejs يؤدي هذا إلى تثبيت Node.js في الحاوية من مستودع Ubuntu الرسمي. وعند انتهاء التثبيت، تحقق من تثبيت Node.js: root@d9b100f2f636:/# node -v سترى رقم الإصدار المعروض في جهازك الطرفي: v8.10.0 أي تغييرات تجريها داخل الحاوية تنطبق فقط على الحاوية نفسها. للخروج من الحاوية، اكتب exit في واجهة الأوامر. دعنا نلقي نظرة على إدارة الحاويات على نظامنا بعد ذلك. الخطوة 6- إدارة حاويات دوكر بعد استخدام دوكر لفترة من الوقت، سيكون لديك العديد من الحاويات النشطة (قيد التشغيل) وغير النشطة على الحاسوب الخاص بك. ولعرض الحاويات النشطة، استخدم: $ docker ps سترى ناتج مشابه لما يلي: CONTAINER ID IMAGE COMMAND CREATED في هذا الدليل التعليمي، بدأت حاويتين؛ واحدة من نسخة hello-world والأخرى من نسخة ubuntu. بحيث لم يعد كلا الحاويتين قيد التشغيل، لكنهما لا تزالان موجودتان على نظامك. لعرض جميع الحاويات - النشطة وغير النشطة، قم بتشغيل docker ps باستخدام المبدّل -a: $ docker ps -a سترى مخرجات مشابهة لهذا: CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d42d0bbfbd35 ubuntu "/bin/bash" About a minute ago Exited (0) 20 seconds ago friendly_volhard 0740844d024c hello-world "/hello" 3 minutes ago Exited (0) 3 minutes ago elegant_neumann لعرض أحدث حاوية قمت بإنشائها، قم بتشغيل docker ps باستخدام -l: $ docker ps -l CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d42d0bbfbd35 ubuntu "/bin/bash" About a minute ago Exited (0) 34 seconds ago friendly_volhard لبدء تشغيل حاوية ما، استخدم docker start، متبوعًا بمعرف الحاوية أو اسم الحاوية. لنبدأ الحاوية القائمة على Ubuntu بمعرف d9b100f2f636: $ docker start d42d0bbfbd35 عندها ستبدأ الحاوية، ويمكنك استخدام docker ps لمعرفة حالتها: CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d42d0bbfbd35 ubuntu "/bin/bash" About a minute ago Up 8 seconds friendly_volhard لإيقاف حاوية جارية، استخدم docker stop، متبوعًا بمعرف الحاوية أو الاسم. وهذه المرة سنستخدم الاسم الذي خصصه دوكر للحاوية، الا وهو friendly_volhard: $ docker stop friendly_volhard بمجرد أن تقرر أنك لم تعد بحاجة إلى الحاوية بعد الآن، قم بإزالتها باستخدام الأمر docker rm، مرة أخرى باستخدام إما معرف الحاوية أو إسمها. يمكنك استخدام الأمر docker ps -a للعثور على معرف الحاوية أو اسم الحاوية المرتبط بصورة hello-world وإزالتها. $ docker rm elegant_neumann يمكنك بدء حاوية جديدة وتسميتها باستخدام المفتاح--name. ويمكنك أيضًا استخدام المبدل --rm لإنشاء حاوية تزيل نفسها عندما تتوقف. راجع الأمر help docker run للحصول على مزيد من المعلومات حول هذه الخيارات وغيرها. يمكن تحويل الحاويات إلى صور يمكنك استخدامها لبناء حاويات جديدة. دعونا نلقي نظرة على كيفية عمل ذلك. الخطوة 7- إحداث التغييرات في حاوية لنسخة دوكر عند بدء تشغيل نسخة من دوكر، يمكنك إنشاء الملفات وتعديلها وحذفها تمامًا كما يمكنك باستخدام جهاز افتراضي (virtual machine). حيث ستنطبق التغييرات التي تجريها على تلك الحاوية فقط.. يمكنك تشغيلها وإيقافها، لكن بمجرد ازالتها باستخدام الأمر docker rm، ستفقد التغييرات للأبد. يوضح لك هذا القسم كيفية حفظ حالة الحاوية كنسخة دوكر جديدة. بعد تثبيت Node.js داخل حاوية Ubuntu، لديك الآن حاوية تعمل على نسخة معينة، لكن هذه الحاوية مختلفة عن النسخة (image) التي استخدمتها لإنشائها. عندها قد ترغب في إعادة استخدام حاوية Node.js هذه كأساس للنسخ الجديدة لاحقًا. ثم قم بتنفيذ التغييرات على نسخة دوكر جديدة باستخدام الأمر التالي. $ docker commit -m "What you did to the image" -a "Author Name" container_id repository/new_image_name إن المفتاح -m مخصص لرسالة التنفيذ (commit message) التي تساعدك والآخرين على معرفة التغييرات التي أجريتها، بينما يُستخدم -a لتحديد المؤلف. معرف الحاوية container_id هو الحاوية التي لاحظتها سابقًا في الدليل عندما بدأت جلسة دوكر التفاعلية. إلا إذا قمت بإنشاء مستودعات إضافية على Docker Hub، فعادة ما يكون المستودع هو اسم مستخدم Docker Hub. على سبيل المثال، بالنسبة للمستخدم sammy بمعرّف الحاوية d9b100f2f636، سيكون الأمر كما يلي: $ docker commit -m "added Node.js" -a "sammy" d42d0bbfbd35 sammy/ubuntu-nodejs وعند تنفيذك نسخة ما، يتم حفظ النسخة الجديدة محليًا على جهاز الحاسب الخاص بك. لاحقًا في هذا الدليل، ستتعلم كيفية رفع نسخة إلى سجل دوكر مثل Docker Hub حتى يتمكن الآخرون من الوصول إليها. سيؤدي إدراج نسخ دوكر مرة أخرى إلى إظهار النسخة الجديدة، بالإضافة إلى النسخة القديمة التي تم اشتقاقها منها: $ docker images سترى مخرجات مثل هذا: REPOSITORY TAG IMAGE ID CREATED SIZE sammy/ubuntu-nodejs latest d441c62350b4 10 seconds ago 152MB ubuntu latest 4c108a37151f 2 weeks ago 64.2MB hello-world latest fce289e99eb9 6 months ago 1.84kB في هذا المثال، ubuntu-nodejs هي النسخة الجديدة التي تم اشتقاقها من نسخة ubuntu الموجودة من Docker Hub. حيث يعكس اختلاف الحجم التغييرات التي تم إجراؤها. وفي هذا المثال، كان التغيير هو تثبيت NodeJS. لذا في المرة القادمة التي تحتاج فيها إلى تشغيل حاوية باستخدام Ubuntu مع NodeJS مثبتة مسبقًا، يمكنك فقط استخدام النسخة الجديدة. يمكنك أيضًا إنشاء نسخ من ملف Dockerfile، والذي يتيح لك أتمتة تثبيت البرنامج في نسخة جديدة. لكن يعد هذا خارج نطاق المقال. الآن دعنا نشارك النسخة الجديدة مع الآخرين حتى يتمكنوا من إنشاء حاويات منها. الخطوة 8- رفع نسخ دوكر إلى مستودع دوكر الخطوة المنطقية التالية بعد إنشاء نسخة جديدة من نسخة موجودة هي مشاركتها مع عدد قليل من أصدقائك أو العالم كله على Docker Hub أو أي سجل دوكر آخر يمكنك الوصول إليه. و لرفع نسخة ما إلى Docker Hub أو أي سجل دوكر آخر، يجب أن يكون لديك حساب هناك. يوضح لك هذا القسم كيفية رفع نسخة دوكر إلى Docker Hub. ولمعرفة كيفية إنشاء سجل دوكر الخاص بك، تفقد كيفية إعداد سجل دوكر خاص على Ubuntu 14.04 لرفع نسختك، قم أولاً بتسجيل الدخول إلى Docker Hub. $ docker login -u docker-registry-username عندها ستتم مطالبتك بالمصادقة باستخدام كلمة مرور Docker Hub. و إذا حددت كلمة المرور الصحيحة، فيجب أن تنجح المصادقة. ملاحظة: إذا كان اسم مستخدم سجل دوكر الخاص بك مختلفًا عن اسم المستخدم المحلي الذي استخدمته لإنشاء النسخة، فسيتعين عليك وضع علامة على نسختك باسم مستخدم التسجيل خاصتك. بالنسبة للمثال الوارد في الخطوة الأخيرة، اكتب: $ docker tag sammy/ubuntu-nodejs docker-registry-username/ubuntu-nodejs ثم يمكنك رفع نسختك باستخدام: $ docker push docker-registry-username/docker-image-name لرفع نسخة ubuntu-nodejs إلى مستودع sammy، سيكون الأمر على الشكل التالي: $ docker push sammy/ubuntu-nodejs قد تستغرق العملية بعض الوقت حتى تكتمل أثناء تحميل النسخ، ولكن عند اكتمالها سيبدو الإخراج كما يلي: The push refers to a repository [docker.io/sammy/ubuntu-nodejs] e3fbbfb44187: Pushed 5f70bf18a086: Pushed a3b5c80a4eba: Pushed 7f18b442972b: Pushed 3ce512daaf78: Pushed 7aae4540b42d: Pushed … بعد رفع النسخة إلى السجل، يجب أن تكون مدرجة في لوحة تحكم حسابك مثل تلك التي تظهر في الصورة أدناه. إذا أظهرت محاولة الرفع خطأ من هذا النوع، فمن المحتمل أنك لم تقم بتسجيل الدخول: The push refers to a repository [docker.io/sammy/ubuntu-nodejs] e3fbbfb44187: Preparing 5f70bf18a086: Preparing a3b5c80a4eba: Preparing 7f18b442972b: Preparing 3ce512daaf78: Preparing 7aae4540b42d: Waiting unauthorized: authentication required قم بتسجيل الدخول باستخدام docker login وتكرار محاولة الرفع. ثم أثبت وجوده في صفحة مستودع Docker Hub الخاص بك. يمكنك الآن استخدام docker pull sammy/ubuntu-nodejs لسحب النسخة إلى جهاز جديد واستخدامها لتشغيل حاوية جديدة. الخلاصة لقد قمت بتثبيت دوكر، وعملت بالنسخ والحاويات، ورفعت نسخة معدلة إلى Docker Hub. الآن بعد أن تعرفت على الأساسيات، استكشف بقية دروس أكاديمية حسوب قسم DevOps. ترجمة -وبتصرف- للمقال How To Install and Use Docker on Debian 10 لصاحبه Brian Hogan
-
لغة Go (والتي يشار إليها golang أيضًا) هي لغة برمجة عصرية مفتوحة المصدر طورتها Google، وازداد انتشارها في كثير من الاستخدامات، وهي تنتهج منهج التبسيط (minimalist) في التطوير وتُسهِّل بناء برمجيات عملية ذات كفاءة عالية. سيشرح هذا الدرس كيفية تحميل وتثبيت Go 1.7، إضافةً إلى شرح تصريف (compile) وتنفيذ برنامج بسيط («!Hello World») على خادوم دبيان 8. المتطلبات المسبقة يفترض هذا الدرس أنَّ لديك وصولًا إلى خادوم دبيان 8 مضبوط فيه حساب مستخدم ليس جذرًا لكنه يمتلك امتيازات الجذر عبر الأمر sudo. الخطوة الأولى: تحميل حزمة لغة Go سنبدأ بتحميل حزمة Go على خادومنا من الموقع الرسمي. اذهب إلى صفحة تنزيل لغة Go الرسمية وابحث عن رابط URL لأرشيف النسخة الحالية من النسخة الثنائية (binary) من اللغة. احرص على أن تنسخ رابط آخر نسخة متوافرة ومتوافقة مع معمارية 64 بت. استعمل الأمر curl من مجلد المنزل لتحميل الأرشيف: curl -O https://storage.googleapis.com/golang/go1.7.4.linux-amd64.tar.gz وصحيحٌ أننا حمّلنا الملف من مصدر موثوق، إلا أنَّه من الأفضل التحقق من سلامة الملفات التي نحمّلها عبر الإنترنت، وهذا يعني أننا سنضمن أنَّ الملف لم يُعدَّل أو يتلاعب به أو يعطَب أثناء عملية التحميل. الأمر sha256sum يُظهِر رمزًا فريدًا من 256 بت: sha256sum go1.7*.tar.gz الناتج: 47fda42e46b4c3ec93fa5d4d4cc6a748aa3f9411a2a2b7e08e3a6d80d753ec8b go1.7.4.linux-amd64.tar.gz قارن الرمز الظاهر في ناتج الأمر السابق مع القيمة الموجودة في صفحة تحميل Go، إذا وجدتهما متطابقين فهذا يعني أنَّ عملية التحميل قد نجحت. لنحاول تثبيت لغة Go بعد أن تحققنا من سلامة الملف. الخطوة الثانية: تثبيت لغة Go سنستخدم الأمر tar لاستخراج محتويات الأرشيف، إذ يطلب الخيار x من الأمر tar أن يستخرج محتويات الملف، والخيار v أن يعرض مخرجات (والتي هي قائمة بالملفات التي ستُستخرَج)، أما الخيار f فيطلب من الأمر tar قراءة ملف الأرشيف المُحدَّد: tar xvf go1.7.4.linux-amd64.tar.gz يجب أن يُنشَأ مجلدٌ باسم go في مجلد العمل الحالي (وهو مجلد Home)، عليك الآن تبديل المستخدم المالك والمجموعة المالكة لمجلد go إلى الجذر، ثم نقله إلى مجلد /usr/local: sudo chown -R root:root ./go sudo mv go /usr/local ملاحظة: على الرغم من أنَّ المسار /usr/local/go هو المسار المنصوح به رسميًا، لكن بعض المستخدمين يفضلون استخدام مسارات مختلفة. عند هذه النقطة يجب تحديد مسار التثبيت عند استدعاء لغة Go من سطر الأوامر، ولجعل التعامل مع Go أسهل قليلًا ، سنضبط بعض المسارات. الخطوة الثالثة: ضبط مسارات Go سنضبط في هذه الخطوة بعض المسارات في البيئة (environment) عندك. لنضبط أولًا قيمة مجلد الجذر للغة Go، الذي يخبر Go أين عليها أن تبحث عن ملفاتها: sudo nano ~/.profile أضف السطرين الآتيين في نهاية الملف: export GOPATH=$HOME/work export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin إذا اخترت تثبيت Go في مجلد آخر، فأضف الأسطر الآتية بدلًا مما سبق، فلو ثبتنا Go في مجلد Home على سبيل المثال، فسنضيف: export GOROOT=$HOME/go export GOPATH=$HOME/work export PATH=$PATH:$GOROOT/bin:$GOPATH/bin بعد تعديل الملف بما هو مناسب، احفظ الملف وأغلق المحرر، ثم أعد قراءة ملف .profile في جلسة bash الحالية: source ~/.profile لقد أنهينا تثبيت Go، لذا لنتأكد من ذلك بكتابة برنامج قصير. الخطوة الرابعة: تجربة Go بعد أن ثبتنا Go وضبطنا المسارات في خادومنا، يمكننا تجربتها للتأكد من أنها تعمل كما هو متوقع. أنشِئ مجلدًا جديدًا لبيئة عمل Go، وهو المكان الذي ستبني فيها Go ملفاتها: mkdir $HOME/work ثم أنشِئ هيكلة المجلدات اللازمة في ذاك المجلد لإنشاء برنامج بسيط، وسنستخدم my_project اسمًا لمشروعنا في هذا المثال: mkdir -p work/src/my_project/hello يمكنك الآن إنشاء ملف «Hello, World!» بلغة Go: nano ~/work/src/my_project/hello/hello.go ألصق الشيفرة الآتية داخل محررك، والذي يستخدم حزمة main في لغة go، ثم يستورد المكوِّن fmt، ثم يُنشِئ دالةً جديدةً لطباعة Hello, World! عند تشغيله: package main import "fmt" func main() { fmt.Printf("Hello, World!\n") } سيطبع البرنامج السابق العبارة «Hello, World!» إلى الطرفية إذا عَمِلَ دون مشاكل، مما يشير إلى إمكانية تصريف تطبيقات Go بنجاح. احفظ الملف وأغلق المحرر، ثم صرِّف (compile) الملف بتنفيذ التعليمة install التابعة للغة Go: go install my_project/hello يمكنك تشغيل الملف بعد التصريف بتنفيذ الأمر: hello إذا شاهدت المخرجات الآتية فاعلم أنَّ لغة Go مثبتة بشكل صحيح: Hello, World! يمكنك معرفة مكان وجود الملف التنفيذي hello في نظامك باستخدام الأمر which: which hello الناتج: /home/user/work/bin/hello تأكدنا من أنَّ بيئة تطوير Go تعمل بسلاسة بعد تشغيلنا لبرنامج Hello World البسيط السابق. الخلاصة بعد تحميل وتثبيت آخر حزمة Go وضبط المسارات الخاصة بها، أصبح نظامك جاهزًا لتطوير تطبيقات Go. لاحظ أنَّ التطبيقات الاعتيادية تستخدم مكتبات وحزم أخرى، ولتعلم المزيد من المعلومات حول تلك المكونات، انظر إلى صفحة How to Write Go Code في الدليل الرسمي. ترجمة –وبتصرّف– للمقال How To Install Go 1.7 on Debian 8 لصاحبته Lisa Tagliaferri
-
نواصل معكم في هذا المقال استعراض أساسيات إدارة الحزم في أوبنتو ودبيان. إذا لم تقرأ الجزء الأول فأنصحك بقراءته أوّلا قبل مواصلة قراءة هذا المقال. إزالة الحزم وحذف الملفات العمليات المعاكسة لعملية التنصيب والتحميل الحِزم متاحة أيضًا من مدير الحِزم. هذا القسم سيناقش كيفية إزالة تنصيب الحِزم وتنظيف الملفات التي قد تبقى كنتيجة لعمل الحزمة. إزالة حزمة لإزالة حزمة منصبة، يجب إضافة الأمر الفرعي remove إلى الأمر apt-get. سيقوم هذا الأمر بإزالة الملفات التي قامت الحزمة بتنصيبها على نظامك مع استثناء جدير بالاهتمام. الأمر يُبقي ملفات الإعدادات محفوظة في مكانِ ما في حال تم إعادة تنصيب الحزمة مرة أخرى فيما بعد. تعتبر هذه الطريقة مفيدة في حالة الحذف المفاجئ للحزمة؛ حيث لا تضيع جهودك هدرًا في إعادة ضبط الإعدادات وتخصيصها. لإكمال العملية يلزمك تزويد الأمر باسم الحزمة المراد إزالتها أو إلغاء تصيبها: sudo apt-get remove package ستتم إزالة الحزمة، باستثناء ملف الإعدادات. إزالة حزمة وكل ملفات الإعدادات ذات العلاقة إذا كنت ترغب في إزالة حزمة وكل الملفات المتعلقة بها من نظامك، متضمنة ملفات الإعدادات، يمكنك استخدام الأمر الفرعي purge من الأمر apt-get. بخلاف الأمر remove -الذي تم ذكره بالأعلى- فإن الأمر purge يزيل كل شيء. تعتبر هذه الطريقة مفيدة في حال عدم رغبتك الاحتفاظ بملفات الإعدادات، أو في حال ما كانت لديك بعض المشاكل وترغب في البدء من الصفر. تجدر الإشارة هنا إلى أن ملفات الإعدادات لا يمكن استرجاعها في حال تم حذفها: sudo apt-get purge package في هذه الحالة، عندما تقوم بإعادة تنصيب الحزمة مرة أخرى فسيتم استخدام الإعدادات الافتراضية. إزالة الاعتماديات التلقائية التي لم تعد لها حاجة تتم إزالة الحِزم من النظام باستخدام الأوامر apt-get remove أو apt-get purge، لكن بعض هذه الحزم كان قد تطلّب وقت التنصيب بعض الاعتماديات لاستكمال التنصيب، وبعد إزالة الحزمة تبقى هذه الاعتماديات. لإزالة أي حِزم تم تنصيبها كاعتماديات ولم تعد مطلوبة لأي حزمة أخرى، يمكنك تنفيذ الأمر autoremove كما يلي: sudo apt-get autoremove إذا كنت ترغب في إزالة كل ملفات الإعدادات المتعلقة من الاعتماديات التي تمت إزالتها، يجب إضافة purge-- إلى الأمر autoremove. سيقوم هذا الأمر بإزالة ملفات الإعدادات مثل وظيفة الأمر purge: sudo apt-get --purge autoremove تنظيف ملفات الحزم المهجورة Obsolete بعض الحِزم تُصبح قديمة ومهجورة مع مرور الوقت. بإمكان الأداة apt-get إزالة أيٍ من ملفات هذه الحِزم عن النظام المحلي، تلك الملفات المرتبطة بالحِزم والتي لم تعد متاحة من قِبل المستودعات باستخدام الأمر autoclean. يقوم هذا الأمر بتحرير المزيد من المساحة على الخادوم، ويسمح بتحديث الذاكرة المؤقتة على النظام المحلي وتجنّب الاحتفاظ ببيانات غير مستخدمة. sudo apt-get autoclean الحصول على معلومات حول الحزم كل حزمة تحتوي على كمية كبيرة من البيانات التي يمكن الوصول إليها من خلال أدوات إدارة الحِزم. في هذا القسم سنقوم بتسليط الضوء على بعض الطرق الشائعة للحصول على المعلومات حول الحزم المتاحة والمنصبة. عرض المعلومات حول حزمة لعرض المعلومات التفصيلية حول حزمة في التوزيعة التي تستخدمها، يمكنك استخدام الأمر الفرعي show من الأمر apt-cache. هذا الأمر يعتمد على اسم الحزمة في المستودع: apt-cache show package سيقوم الأمر بعرض معلومات حول الحِزم التي تظهر في نتاج البحث عن تلك الحزمة التي يتم الاستفسار عنها. كل حزمة مرشحة تتضمن معلومات حول اعتمادياتها، الإصدار، التركيبة أو المعمارية، التعارضات، الاسم الفعلي للحزمة، حجم الحزمة وحجم تنصيبها، الوصف التفصيلي، بالإضافة إلى معلومات أخرى. لعرض المزيد من المعلومات حول كل حزمة مرشحة، شاملة لقائمة كاملة للاعتماديات العكسية ( قائمة الحِزم التي تعتمد على الحزمة التي نستفسر عنها) استخدم الأمر showpkg بدلا من الأمر المذكور أعلاه، والذي سيتضمن الكثير من المعلومات حول علاقة هذه الحزمة بالحِزم الأخرى: apt-cache showpkg package عرض المعلومات حول حزمة deb. لعرض تفاصيل حول ملف deb. يمكنك استخدام المؤشر info-- مع الأمر dpkg، الهدف لهذا الأمر يجب أن يكون مسار ملف deb.: dpkg --info debfile.deb سيعرض لك هذا الأمر بعض البيانات الوصفية حول الحزمة التي تستفسر عنها، المعلومات تتضمن اسم الحزمة وإصدارها، المعمارية التي بُنيت لها، الحجم والاعتماديات المطلوبة، الوصف والتعارضات. عرض الاعتماديات والاعتماديات العكسية لعرض الاعتماديات (اعتماد حزمة على أخرى) بشكل دقيق، وكذلك الاعتماديات العكسية (الحِزم التي تعتمد على هذه الحزمة) يمكنك استخدام الأداة apt-cache. لعرض معلومات الاعتماديات بشكل جيد، يمكنك استخدام الأمر الفرعي depends: apt-cache depends package سيقوم الأمر بعرض معلومات حول كل حِزمة تم التعرف عليها كاعتمادية، بالإضافة إلى الاقتراحات، التوصيات أو التعارضات. إذا كنت ترغب في معرفة أي حِزم تعتمد على حزمة معينة، يمكنك إضافة اسم الحزمة إلى الأمر الفرعي rdepends: apt-cache rdepends package عرض إصدارات الحزمة المنصبة والمتاحة في الكثير من الأحيان تتوفر عدّة إصدارات من حزمة ما في المستودع، مع حزمة واحدة افتراضية. لعرض الإصدارات المتاحة لحزمة ما، يمكنك استخدام الأمر الفرعي policy من الأمر apt-cache: apt-cache policy package سيقوم الأمر بعرض أي إصدار تم تنصيبه (إذا كان الحزمة منصبة)، الحزمة المرشحة والتي سيتم تنصيبها بشكل افتراضي إذا لم تقم بتحديد إصدار في أمر التنصيب، بالإضافة إلى جدول إصدارات الحزم، منتهيًا بمؤشر يشير إلى أولوية كل إصدار. يمكنك استخدام تلك الطريقة لتحديد أي إصدار سيتم تنصيبه والبدائل المتاحة. ولأن هذه الطريقة ترصد المستودعات التي يتواجد فيها كل إصدار، فإنه يمكن استخدامها لتحديد إذا ما توافرت مستودعات أخرى أو الأرشيف الشخصي للحِزم (PPAs) تقوم بنسخ الحِزم من المستودع الافتراضي. عرض الحزم المنصبة باستخدام الأمر dpkg -l لعرض الحِزم التي تم تنصيبها على نظامك، لديك القليل من الخيارات، اعتمادًا على هيئة المخرجات، وكذلك حجم المعلومات المطلوبة. الطريقة الأولى تتضمن استخدام dpkg أو dpkg-query مع l-. المخرجات من الأمرين كليهما ستكون متطابقة، بلا شك ستعطي قائمة لكل حزمة منصبة (جزئيا أو كليّا) على النظام، وشكلها كما يلي: dpkg -l Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) ||/ Name Version Architecture Description +++-===========================================-=======================================-============-===================================================================================================================== ii account-plugin-generic-oauth 0.10bzr13.03.26-0ubuntu1.1 amd64 GNOME Control Center account plugin for single signon - generic OAuth ii accountsservice 0.6.34-0ubuntu6 amd64 query and manipulate user account information ii acl 2.2.52-1 amd64 Access control list utilities ii acpi-support 0.142 amd64 scripts for handling many ACPI events ii acpid 1:2.0.18-1ubuntu2 amd64 Advanced Configuration and Power Interface event daemon . . . ستستمر المخرجات لكل حزمة في النظام على المخرجات يمكنك رؤية مدلولات الحروف الثلاثة الأولى في كل سطر. الحرف الأولى يشير إلى الحالة المرغوب فيها للحزمة، وتكون أحد ما يلي: u: غير معروف i: تم التنصيب r: تمت إزالتها. p: تمت إزالتها كليّا ( تنظيف بعد الإزالة) h: إصدار معلّق. الحرف الثاني يشير إلى الحالة الحقيقة للحزمة كما هو معروف لنظام التحزيم Packaging system، يمكن أن تكون إحدى الحالات التالية: n: لم يتم تنصيبها. i: تم تنصيبها. c: ملف الإعدادات موجود، لكن الحزمة تمت إزالتها. u: تم فك ضغط الحزمة لكن لم يُشرع في إعدادها بعد. f: الحزمة منصبة (جزئيًا) مما يعني حدوث فشل أثناء عملية التنصيب مما لم يسمح باكتمال عملية التنصيب. w: الحزمة تنتظر حدثًا من حزمة منفصلة. p: الحزمة تم تفعيلها من قِبل حزمة أخرى. الحرف الثالث، والذي يكون عبارة عن مسافة فارغة لأغلب الحِزم، له خيار واحد كما يلي: r: إشارة إلى ضرورة إعادة التنصيب، مما يفيد أن الحزمة غير مكتملة ولا يمكن الاستفادة من وظائفها. باقي الأعمدة تحتوي اسم الحزمة، الإصدار، المعمارية وكذلك الوصف. عرض حالة التنصيب للحِزم التي تم ترشيحها إذا قمت بإضافة معيار بحث بعد l- ، فإن dpkg سيعرض كل الحِزم التي تحوي معيار البحث، سواءً كانت منصّبة أم لا، على سبيل المثال، نستطيع البحث عن عمليات المكتبات YAML كما يلي: dpkg -l libyaml* Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) ||/ Name Version Architecture Description +++-===============-============-============-=================================== ii libyaml-0-2:amd 0.1.4-2ubunt amd64 Fast YAML 1.1 parser and emitter li ii libyaml-dev:amd 0.1.4-2ubunt amd64 Fast YAML 1.1 parser and emitter li un libyaml-perl <none> (no description available) un libyaml-syck-pe <none> (no description available) ii libyaml-tiny-pe 1.51-2 all Perl module for reading and writing كما ترى في العمود الأول، النتيجة الثالثة والرابعة غير منصبة. هذا الأمر يعرض كل حزمة يتوفر فيها معيار البحث، بالإضافة إلى الحالة الحالية والمرغوب فيها. عرض الحِزم المنصبة بالأمر dpkg --get-selections يمكنك استعراض الحِزم المنصبة على نظامك بطريقة أخرى، باستخدام مؤشر get-selections-- مع الأداة dpkg، حيث يزودنا هذا الأمر بقائمة لكل الحِزم التي تم تنصيبها، والتي تمت إزالتها دون التنظيف بعد الإزالة: dpkg --get-selections للتفريق بين تلك الحالتين، يمكنك استخدام awk للتصفية حسب الحالة. لاستعراض الحِزم المنصّبة فقط، اطبع: dpkg --get-selections | awk '$2 ~ /^install/` لعرض قائمة الحِزم التي تمت إزالتها لكن لم يتم إزالة ملفات الإعدادات، يمكنك استخدام الأمر: dpkg --get-selections | awk '$2 !~ /^install/' البحث ضمن الحزم المنصبة للبحث في الحِزم المنصبة عن حزمة معينة، يمكنك إضافة نص التصفية/الترشيح بعد خيار get-selections--. هذا الأمر يستخدم البدائل لمحاولة العثور على تطابق ما. مرة أخرى، يقوم هذا الأمر بعرض أي حزمة منصبة، أو ملفات الإعدادات الخاصة بها ما زالت على النظام: dpkg --get-selections libz* مرة أخرى، يمكنك التصفية باستخدام تعبيرات awk من القسم أعلاه. استعراض الملفات المنصبة من خلال حزمة لاستعراض الملفات الخاصة بحزمة ما، يمكنك استخدام مؤشر L- مع الأمر dpkg: dpkg -L package سيقوم هذا الأمر بطباعة المسار الكامل لكل ملف خاص بتلك الحزمة. بالطبع لن تتضمن القائمة ملفات الإعدادات التي يتم إنشاؤها من خلال عمليات الحزمة البحث عن ما تنصبه الحزمة لموقع ما لاستكشاف أي حزمة مسؤولة عن ملف معين في نظام الملفات، يمكنك إضافة الملف الكامل إلى الأمر dpkg مع مؤشر S-. سيقوم الأمر بطباعة اسم الحزمة التي قامت بتنصيب الملف: dpkg -S /path/to/file تجدر الإشارة إلى أن أي ملفات تم نقلها إلى مكان ما من خلال عملية ما بعد التنصيب، لا يمكن ربطها بحزمتها من خلال هذا الأمر. معرفة أي حزمة تقوم بتوفير ملف ما دون تنصيبها قد تحتاج في بعض الأحيان لمعرفة أي حزمة تزودك بملف ما أو أمر ما، حتى بدون أن تقوم بتنصيب الحزمة على نظامك. من السهل معرفة إذا ما كانت حزمة معينة تحتوي ملفًا ما باستخدام dpkg بإضافة الخيار S-. لعمل ذلك يلزم تنصيب الأداة apt-file. تمتلك هذه الأداة قاعدة بيانات لمعلوماتٍ حول الحزم، من ضمن هذه المعلومات مسار التنصيب لكل ملف خاص بالحزمة من قاعدة البيانات تلك. قم بتنصيب الأداة بتنفيذ: sudo apt-get update sudo apt-get install apt-file الآن، قم بتحديث قاعدة البيانات الخاصة بالأداة وقم بالبحث عن ملف بتنفيذ: sudo apt-file update sudo apt-file search /path/to/file سيعمل هذا الأمر فقط للمواقع التي تم تنصيبها مباشرة بواسطة حزمة ما. لن يتم إيجاد الملفات التي تم إنشاؤها بواسطة برامج ما بعد التثبيت. تحويل قوائم الحزم بين الأنظمة في كثير من الأحيان قد تحتاج لعمل نسخة احتياطية لقائمة الحِزم التي تم تنصيبها على نظامك، واستخدامها لتنصيب نفس القائمة من الحِزم على نظام آخر. بالطبع تعتبر هذه الطريقة مفيدة لأغراض النسخ الاحتياطي. هذا القسم يوضح آلية تصدير واستيراد قوائم الحِزم. تصدير قائمة الحزم إذا كنت ترغب في تكرار مجموعة الحزم التي تم تنصيبها على نظامك إلى نظام آخر، يتوجب عليك في البداية تصدير قائمة الحزم. يمكنك تصدير قائمة الحزم المنصّبة إلى ملف بتلك الصيغة المطلوبة لاحقًا لعمية الاستيراد عن طريق مخرجات الأمر dpkg --get-selections : dpkg --get-selections > ~/packagelist.txt يمكنك نسخ هذه القائمة إلى نظام أو حاسوب آخر واستيرادها. قد تحتاج أيضًا لأخذ نسخة احتياطية لقوائم المصادر وقائمة المفاتيح الموثوقة. يمكنك أخذ نسخة احتياطية من المصادر بإنشاء مجلد بالملفات الضرورية ونسخها: mkdir ~/sources cp -R /etc/apt/sources.list* ~/sources المفاتيح الموثوقة يمكن نسخها احتياطيًا بتنفيذ: apt-key exportall > ~/trusted_keys.txt الآن يمكنك تحويل الملف packagelist.txt ومجلد sources والملف trusted_keys.txt إلى حاسوب آخر بغرض استيرادها. استيراد قائمة الحزم إذا قمت بإنشاء قائمة الحزم باستخدام dpkg --get-selections كما تم شرحه أعلاه، بإمكانك استيراد الحِزم على حاسوب آخر باستخدام الأمر dpkg . في البداية يجب أن تقوم بإضافة مفاتيح الثقة، وتحضير قوائم المصادر التي تم نسخها من الحاسوب الأول. على افتراض أنك قمت بنسخ جميع الملفات المنقولة إلى مجلد home في الحاسوب الثاني، يمكنك تنفيذ: sudo apt-key add ~/trusted_keys.txt sudo cp -R ~sources/* /etc/apt/ ثم قم بإزالة الحالة عن الحزِم غير الضرورية من الحاسوب الجديد. مما يعني أنك تقوم بتطبيق التغييرات من جديد. يجب تطبيق هذا من خلال حساب root أو صلاحيات sudo: sudo dpkg --clear-selections سيقوم الأمر باختيار كل الحِزم التي لا ترغب بتنصيبها. يجب أيضا تحديث قائمة الحِزم المحلية لضمان أن عمليات التنصيب سيكون لديها سجل أو معلومات لكل البرامج التي نحتاج تنصيبها. عملية التنصيب والتحدث الفعلية سيتم معالجتها من خلال أداة dselect. يجب التأكد أن الأداة dselect قد تم تنصيبها. تمتلك هذه الأداة قاعدة بيانات خاصة بها، لذا يجب تحديثها قبل الاستكمال: sudo apt-get update sudo apt-get install dselect sudo dselect update الآن نستطيع تطبيق قائمة الحزم فوق القائمة الحالية؛ لمعرفة أي حزم يجب الاحتفاظ بها أو تحميلها: sudo dpkg --set-selections < packagelist.txt يقوم هذا الأمر بضبط حالات الحزم التي نريدها. لتطبيق التغييرات يجب تطبيق الأمر الفرعي dselect-upgrade من الأمر apt-get: sudo apt-get dselect-upgrade سيقوم هذا الأمر بتحميل وتنصيب الحزم الضرورية. وسيقوم بإزالة الحزم التي لم يتم اختيارها. وفي النهاية فإن قائمة الحزم يجب أن تتطابق مع تلك التي تم استيرادها من الحاسوب الأول، بغض النظر عن أن ملفات الإعدادات ما زالت تحتاج لأن يتم نسخها أو تعديلها. إضافة المستودعات والأرشيف الشخصي للحزم PPA تحتوي المجموعة الافتراضية من المستودعات التي يتم توفيرها في أغلب التّوزيعات على حِزم كافية لأغلب المستخدمين. بالرغم من ذلك فإنك تحتاج في الكثير من الأحيان إلى مصادر إضافية. سنقوم في هذا القسم بمناقشة آلية أعداد أدوات الحزم لتتعامل مع مصادر إضافية. إضافة أرشيف شخصي للحزم يعتبر الأرشيف الشخصي للحزم (PPAs) بديلا عن المستودعات التقليدية. الأرشيف الشخصي للحزم متاح فقط لأنظمة أوبنتو، حتى كتابة هذا المقال. عادة ما يتميز الأرشيف الشخصي للحزم بمجال أصغر من المستودعات، ويحتوي مجموعة مركزة من التطبيقات التي يتم الاحتفاظ بها مِن خلال مَن يمتلك الأرشيف الشخصي للحِزم. إضافة أرشيف الشخصي للحزم لنظامك، يسمح لك بإدارة الحِزم التي يحتويها مع أدوات إدارة الحِزم التي اعتدت عليها. هذه الطريقة ستزودنا بحزمة أو مجموعة من الحِزم المحدّثة والتي لا يتضمنها مستودع الحِزم الخاص بالتوزيعة. يجب الانتباه إلى ضرورة إضافة الأرشيف الشخصي للحزم الذي تثق به، حيث أنك تسمح لحافظة غير رسمية ببناء الحِزم لنظامك. لإضافة أرشيف الشخصي للحزم، يمكنك استخدام الأمر add-apt-repository. يجب أن تضيف الاسم ppa:، متبوعًا باسم مالك الأرشيف الشخصي للحزم على Launchpad، شرطة مائلة ثم اسم الأرشيف الشخصي للحزم: sudo add-apt-repository ppa:owner_name/ppa_name قد يتطلب الأمر الموافقة على قبول مفتاح صاحب الحِزم. بعد ذلك سيتم إضافة الأرشيف الشخصي للحزم لنظامك، مما يسمح لك بتنصيب الحزم بأوامر apt الاعتيادية. قبل البحث عن الحزم أو تنصيبها، قمت بالتأكد من تحديث ذاكرة التخزين المؤقت المحلية بالمعلومات حول الأرشيف الشخصي الجديد للحِزم: sudo apt-get update إضافة مستودعات لإضافة المزيد من المستودعات لأنظمة أوبنتو أو دبيان، يمكنك اتباع أحدِ مسارين. المسار الأول يتم بتعديل قوائم المصادر لديك مباشرة. بإمكانك تعديل ملف etc/apt/sources.list/ أو استبدال ملف قائمة جديد في مجلد /etc/apt/sources.list.d/. إذا قمت باستخدام الطريقة الثانية فيجب الانتباه إلى أن اسم الملف الذي قمت بإنشائه يجب أن ينتهي بـ list.: sudo nano /etc/apt/sources.list.d/new_repo.list يمكنك إضافة موقع المستودع الجديد في الملف الجديد باستخدام الشكل التالي: deb_or_deb-src url_of_repo release_code_name_or_suite component_names الأجزاء المختلفة لمواصفات المستودع موضحة كما يلي: deb أو deb-src: لتحديد نوع المستودع. تستخدم deb لتحديد المستودع العادي، بينما مستودعات المصادر تبدأ بـ deb-src. url: العنوان الرئيسي للمستودع. يجب أن يكون الموقع الذي يتواجد فيه المستودع. release code name or suite: عادة ما يكون الاسم الرسمي لإصدار التوزيعة، لكن قد يكون أي اسم مستخدم لتعريف مجموعة محددة من الحِزم التي تم إنشاؤها للإصدار الذي تستخدمه من التوزيعة. component names: علامات لاختيار الحِزم التي ترغب بتوفرها. وتعتبر ميزة يتم توفيرها من القائمين على التوزيعة؛ لتقديم توضيح حول المصداقية أو قيود الترخيص للبرامج التي تحتويها. باستطاعتك إضافة هذه الأسطر بداخل الملف. معظم المستودعات تحتوي معلومات حول الهيئة التي يجب استخدامها. الطّريقة الأخرى لإضافة المزيد من المستودعات يتم باستخدام الأمر add-apt-repository. توزيعات أوبنتو تحتوي هذا الأمر بشكل افتراضي، بينما يمكن تنصيبها إلى توزيعات دبيان من خلال حزمة software-properties-common: sudo apt-get update sudo apt-get install software-properties-common بعد ذلك يمكن إضافة الأسطر التي تريد إضافتها إلى الأمر add-apt-repository. بالطبع يجب أن تكون الإضافات بنفس الهيئة أو الشكل الذي تستخدمه في حالة الإضافات اليدوية: sudo add-apt-repository 'deb url release component' يجب التأكد من تحديث الذاكرة المؤقتة المحلية للحِزم بعد تطبيق أي تحديث للمستودع؛ كي يكون النظام على وعي بالحِزم المتاحة حديثًا: sudo apt-get update خاتمة هناك العديد من عمليات إدارة الحِزم التي يمكنك إجراؤها، لكننا حاولنا تغطية أغلب الخطوات الشائعة هنا. إذا كان لديك أي تفضيلات أو اهتمامات أخرى، يرجى استخدام قسم التعليقات أدناه لنعرفها. ترجمة -وبتصرف- للمقال Ubuntu and Debian Package Management Essentials لصاحبه Justin Ellingwood.
-
إدارة الحزم هي أحد الميزات الرئيسة التي تتحفنا بها توزيعات أنظمة لينكس. طريقة التحزيم وأدوات إدارة الحِزم تختلف من توزيعة إلى أخرى، رغم ذلك ظهرت مجموعتان وتم تصنيفهما الأكثر انتشارًا. بخصوص التوزيعات المبنية على ريدهات لينكس، فإنها تستخدم أدوات RPM مثل rpm و yum. أما المجموعة الأخرى والتي يتم استخدامها من قِبل دبيان ، أوبنتو ، والتوزيعات ذات العلاقة، فإنها تستخدم هيئة التحزيم بطريقة deb وأدوات مثل apt و dpkg. سيُعني المقال بمناقشة هذه المجموعة الأخيرة. ما الذي سيغطيه هذا المقال سيغطي هذا المقال أدوات إدارة الحِزم على مستوى المستخدم، والتي تستخدم غالبًا في أنظمة دبيان وأوبنتو، لن يتم تغطية الأدوات الضرورية لإنشاء الحِزم بسبب الآراء المتباينة حول السياسات بين مختلف التوزيعات والتعقيدات المتضمنة بأمثلة لها اعتبارها. سوف نناقش كل أداة متاحة بشكل منفرد في ملخص أدوات إدارة نظام الحِزم في دبيان، لكن أغلبية هذا المقال سيكون مرتبًا حسب الوظيفة وليس حسب الأداة؛ حيث أن هذا المقال يعتبر مرجعًا وظيفيًا. لتحقيق الاستفادة القصوى من هذا المقال يرجى وضع النقاط التالية في الاعتبار: إذا كنت مبتدئًا في أدوات إدارة الحِزم في دبيان يرجى قراءة ملخص أدوات إدارة الحِزم في دبيان أدناه، هذا القسم سيوفر لك ملخصًا شاملا عن ميّزات كل أداة، وكيف ترتبط ببعضها. استخدم كل قسم من هذا المقال كضرورة للوصول لما تريده. هذا المقال ليس إجرائيًا؛ لذا لك الحرية في الوصول إلى ما تراه مناسبًا لك. قم بنسخ ولصق أمثلة الأوامر المعطاة، مع استبدال القيم المذكورة بالقيم الخاصة بك. نظرة عامة حول أدوات إدارة الحزم الخاصة بدبيان نظام البيئة المتاح في دبيان / أوبنتو يستخدم أدوات إدارة حِزم مختلفة إلى حدِ ما لإدارة البرامج في النظام. أغلب هذه الأدوات غير مترابطة، وتعمل على نفس قاعدة البيانات للحزمة، بعض هذه الأدوات يحاول تقديم واجهات ذات مستوى عالٍ لأنظمة الحِزم، بينما تركّز أدوات أخرى على تزويد وظيفة في مستوى متدنّي. Apt-get يعتبر الأمر Apt-get الأكثر استخدامًا من مجموعة apt، هدفه الرئيسي هو عمل واجهة مع المستودعات البعيدة التي يتم الاحتفاظ بها من قِبل فريق الحِزم الخاص بالتوزيعة، بالإضافة إلى تنفيذ العمليات على الحِزم المتاحة. تعمل مجموعة apt بشكل عام عن طريق سحب المعلومات من المستودعات إلى الذاكرة المؤقتة التي يتم إدارتها من خلال النظام المحلي. الأمر apt-get يستخدم لتحديث الذاكرة المؤقتة المحلية، ويستخدم أيضًا للتعديل على حالة الحِزمة؛ نقصد تنصيب أو إزالة الحزمة من النظام. Apt-cache أحد الأوامر الأخرى المهمة في مجموعة apt هو الأمر apt-cache، والذي يستخدم الذاكرة المؤقتة المحلية ليستعلم عن المعلومات المتعلقة بالحِزم المتاحة في مستودعاته. على سبيل المثال، في أي وقت ترغب في البحث عن حزمة معينة أو أداة لتنفيذ وظيفة معينة، فإن الأمر apt-cache يُعتبر نقطة جيدة للبداية. يمكن أن تكون مفيدة أيضًا لمعرفة أيّ إصدار حزمة سيتم استخدامه من لأي إجراء. كما وتعتبر apt-cache مفيدة في حالة معلومات الاعتمادية، والاعتمادية العكسية. Aptitude يقوم الأمر aptitude بدمج الكثير من وظائف الأمرين المذكورين أعلاه، تتوفر فيه ميزة العمل كأداة سطر الأوامر حيث تدمج وظائف الأداتين المذكورتين أعلاه، وتستطيع أيضًا العمل باستخدام ncurses والتي تعتبر واجهة قائمة نصية. عند العمل من سطر الأوامر، العديد من الأوامر تقوم بتمثيل الإمكانيات الخاصة بـ apt-get و apt-cache بالضبط. لن نناقش aptitude باستفاضة في هذا المقال بسبب التداخل الواضح في وظائف الأوامر. إذا كنت تفضل هذه الأداة فإنك تستطيع دومًا استخدام aptitude بالمبادلة مع apt-get أو apt-cache. Dpkg بينما تركّز الأدوات السابقة على إدارة الحِزم المحفوظة في المستودعات، إلا أن الأمر dpkg يمكن استخدامه ليعمل على حزم deb. بشكل منفرد. هذا الأمر مسؤول بالضبط عن الأعمال التي تجري في كواليس الأوامر المذكورة أعلاه. Tasksel يعتبر برنامج tasksel نوعًا مختلفًا من أدوات إدارة البرامج. فبدلاً من إدارة الحزم أو حتى التطبيقات بشكل منفرد، فإن tasksel تركّز على تجميع البرامج المطلوبة لتنفيذ مهام محددة. يمكن اختيار المهام المنظمة باستخدام واجهة نصيَة، أو يمكن استهدافها مثلما تستهدف بعض الحِزم في أدواة الحزم المعتادة. تعتبر الأداة مفيدة جدًا للبداية والمضي قدمًا في العمل، بالرغم من أنها ليست الطريقة الأمثل. أدوات أخرى هناك العديد من الأدوات المتاحة لإدارة الحزم والتي تزودنا بالعديد من المهام والوظائف، أو تستحضر معلومات بطرق مختلفة. بعض هذه الأدوات مفيدة في مواقف معينة لكننا سنذكر بعض هذه الأدوات عند الضرورة. تحديث الذاكرة المؤقتة للحزم والنظام تزودنا أدوات إدارة الحزم بطرق ممتازة لدوام تحديث قائمة النظام الخاصة بالحزم المتاحة، كما وتزودنا بطرق بسيطة لتحدث الحزم المنصبة حاليا على خادومك. تحديث الذاكرة المؤقتة للحزم المحلية تعتبر المستودعات التي تعتمد عليها أدوات الحزم الخاصة بك في الحصول على معلومات الحزمة محدثة على الدوام، لكن معظم أدوات إدارة الحِزم تعمل بالذاكرة المؤقتة لهذه المعلومات. يحبذ دائمًا عمل تحديث للذاكرة المؤقتة الخاصة بالحِزم لكل جلسة قبل إجراء أي أوامر خاصة بالحزم، هذا سوف يضمن أنك تعمل على المعلومات المحدثة حول البرنامج المتاح. إضافة إلى أن بعض أوامر التنصيب سوف لن تتم إذا كنت تعمل على معلومات قديمة لبعض الحِزم. لتحديث الذاكرة المؤقتة، استخدم الأمر apt-get مع اللاحقة update: sudo apt-get update هذا سوف يجلب قائمة المعلومات المحدثة من المستودعات عن الحزم التي تتابعها. تحديث الحزم بدون إزالة مجموعة الحزم apt تسهل عملية تحديث كل البرامج المنصبة على الخادوم. الأمر apt يميّز بين عمليتي تحديثٍ مختلفتين، العملية الأولى (والتي سيتم تفصيلها في هذا القسم) يمكن استخدامها لتحديث أي جزء لا يتطلب إزالة أجزاء أخرى. تعتبر هذه الطريقة مهمة جدا عندما لا ترغب في إزالة أي حزمة مـُنصبّة تحت أي ظرف. لكن – في الحقيقة – بعض التحديثات تتضمن استبدال أجزاء النظام أو إزالة ملفات التعارض. سوف تتجاهل هذه الطريقة أي تحديثات تتطلب إزالة حِزم: sudo apt-get upgrade بعد تنفيذ هذا الإجراء، سيتم تطبيق أي تحديث لا يتضمن إزالة أجزاء. تحديث الحِزم والإزالة حسب الضرورة تقوم مجموعة apt بتسهيل عملية التحديث لكافة البرامج المنصبة على الخادوم. يقوم الأمر بالتمييز بين عمليتي تحديث مختلفتين، الأولى تقوم بتجاهل أي عملية تحديث تتطلب إزالة أي حزمة، وهذه العملية تم شرحها في القسم أعلاه. العملية الثانية، تقوم بتحديث كل الحِزم، حتى تلك التي تتطلب إزالة حزم معينة. هذا الأمر ضروري غالبًا كاعتمادية لتغيير الحِزم. عادة، يتم استبدال الحِزم التي تمت إزالتها ببديل وظيفي خلال عملية التحديث، مما يجعل عملية التحديث آمنة. على أي حال يجب الانتباه إلى الحزم التي يتوجب إزالتها. لإجراء هذه الوظيفة، نفّذ الأمر: sudo apt-get dist-upgrade سيقوم بتحديث كل الحزم على النظام، تعتبر هذه العملية تحديث كامل أكبر التحديث السّابق. تحميل وتنصيب الحزم تُعد مهمة تسهيل تحميل وتنصيب الحِزم على النظام كإحدى المهام الرئيسة في أدوات إدارة الحِزم. البحث عن الحزم بعد عملية تحميل وتنصيب الحِزم، أول خطوة هي البحث في مستودعات التوزيعة عن الحِزم التي تلزمك. أغلب أوامر apt تعمل بشكل رئيسي على الذاكرة المؤقتة لمعلومات الحِزم المحفوظة على الحاسوب المحلي. بالطبع فإن هذا الأمر يسمح بالمزيد من السرعة في التنفيذ، والتقليل من حركة البيانات عبر الشبكة. البحث عن الحِزم هي عملية تستهدف المعلومات في الذاكرة المؤقتة للحِزم. الأمر الفرعي apt-cache search هو الأداة المستخدمة في البحث عن الحِزم المتاحة. يرجى الانتباه إلى ضرورة التأكد من تحديث الذاكرة المؤقتة المحلية قبل عملية البحث من خلال الأمر sudo apt-get update: apt-cache search package حيث أن هذه العملية تستعلم عن المعلومات فقط، فإنها لا تتطلب صلاحيات sudo. أي بحث يتم إجراؤه سيبحث عن أسماء الحِزم بالإضافة إلى الوصف الكامل لها. على سبيل المثال، إذا كنت تبحث عن htop، ستكون النتائج كما يلي: apt-cache search htop aha - ANSI color to HTML converter htop - interactive processes viewer libauthen-oath-perl - Perl module for OATH One Time Passwords كما ترى، لدينا حزمة اسمها htop، لكننا نرى أيضا برنامجين آخرين، كلاهما أشار إلى htop في حقل الوصف الكامل للحزمة (الوصف الذي يلي المخرجات هو وصف مختصر). تنصيب الحزم من المستودعات لتنصيب حزمة من المستودعات، بالإضافة إلى كل الحزمة المعتمدة عليها، نستخدم الأمر apt-get مع الأمر الفرعي install. المدخلات مع هذا الأمر يجب أن تكون اسم أو أسماء الحزم كما هو ظاهر/مُستخدم في المستودع: sudo apt-get install package بإمكانك تنصيب عدة حِزم دفعة واحدة، مع الفصل بينها بمسافة: sudo apt-get install package1 package2 إذا طلبت حِزمة تتطلب اعتمادات أخرى، سيتم عرضها ويُطلب منك تأكيد العملية، ستكون شبيهة بما يلي: Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: apache2-data Suggested packages: apache2-doc apache2-suexec-pristine apache2-suexec-custom apache2-utils The following NEW packages will be installed: apache2 apache2-data 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. Need to get 236 kB of archives. After this operation, 1,163 kB of additional disk space will be used. Do you want to continue [Y/n]? كما ترى، بالرغم من أننا طلبنا تنصيب apache2 فأن الحزمة apache2-data مطلوبة كاعتمادية. في هذه الحالة يمكنك الاستكمال بالضغط على زر الإدخال ENTER أو "y" أو تجاهل العملية بالضغط على حرف "n". تنصيب إصدار حِزمة معين من المستودعات إذا كنت تريد تنصيب إصدار محدد لحزمة ما، يمكنك إضافة الإصدار الذي ترغب به مع إشارة التساوي، كما يلي: sudo apt-get install package=version الإصدار في هذه الحالة يجب أن يتوافق مع الأرقام المتاحة في المستودع. هذا يعني استخدام نموذج الإصدارات الموجود في التوزيعة التي تستخدمها. تستطيع إيجاد الإصدارات المتاحة عبر تنفيذ الأمر apt-cache policy package إعادة ضبط الإعدادات العديد من الحِزم تتضمن إعدادات ما قبل التنصيب، والتي يتم تنفيذها بعد اكتمال عملية التنصيب. غالبا يكون لمدير النظام الحرية في اختيار الإعدادات. إذا كنت تريد تأجيل خطوات هذه الإعدادات الإضافية، يمكنك استخدام الأمر dpkg-reconfigure، الذي بدوره يبحث في الحزمة التي يتم تمريرها له، ويعيد تنفيذ أي أوامر للإعدادات اللاحقة المتضمنة في مواصفات الحزمة: sudo dpkg-reconfigure package هذا سيسمح لك بالوصول إلى الإعدادات الإضافية (وربما غيرها) التي تجاوزتها خلال التنصيب. إجراء محاكاة لعمليات الحزمة في بعض الأحيان، تحتاج لترى التأثيرات الجانبية لعملية ما بدون الاعتماد الفعلي لتنفيذ الأمر. لحسن الحظ فإن apt تسمح لك بإضافة s- لمحاكاة العملية. على سبيل المثال، تريد أن ترى ما يمكن أن يحصل عندما تختار تنصيب حزمة، يمكنك تنفيذ الأمر: apt-get install -s package هذا سيسمح لك برؤية كل الاعتمادات والتغييرات على نظامك، والتي سوف تحدث لو قمت بإزالة لاحقة s-. إحدى فوائد هذه الطريقة هو تمكينك من رؤية نتائج عملية ما، والتي تتطلب صلاحية root، بدون استخدام sudo. على سبيل المثال، لتقييم ما يمكن تنصيبه مع apache2، يمكنك تنفيذ الأمر: NOTE: This is only a simulation! apt-get needs root privileges for real execution. Keep also in mind that locking is deactivated, so don't depend on the relevance to the real current situation! Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: apache2-data Suggested packages: apache2-doc apache2-suexec-pristine apache2-suexec-custom apache2-utils The following NEW packages will be installed: apache2 apache2-data 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. Inst apache2-data (2.4.6-2ubuntu2.2 Ubuntu:13.10/saucy-updates [all]) Inst apache2 (2.4.6-2ubuntu2.2 Ubuntu:13.10/saucy-updates [amd64]) Conf apache2-data (2.4.6-2ubuntu2.2 Ubuntu:13.10/saucy-updates [all]) Conf apache2 (2.4.6-2ubuntu2.2 Ubuntu:13.10/saucy-updates [amd64]) سنحصل على كل المعلومات عن الحِزم والإصدارات دون الحاجة إلى إكمال العملية فعليًا. هذه الطريقة تعمل أيضا مع عمليات أخرى مثل تحديثات النظام: apt-get -s dist-upgrade عدم التنبيه لطلب التأكيد مع إجراءات الحزمة تقوم apt بتنبيه المستخدم بشكل افتراضي لتأكيد العديد من العمليات، هذا يتضمن عمليات التنصيب التي تتطلب اعتماديات إضافية وتحديث للحزم. لتجاوز هذه التحديثات، يمكنك إضافة y- عند تنفيذ هذه الأوامر: sudo apt-get install -y package سيقوم هذا الأمر بتنصيب الحزمة وأي اعتماديات دون طلب التأكيد من المستخدم، يستخدم أيضا في عملية التحديث أيضًا: sudo apt-get dist-upgrade –y إصلاح الاعتماديات غير المكتملة والحِزم في بعض الأحيان لا تكتمل بعض عمليات التنصيب بسبب الاعتماديات أو أي مشاكل أخرى. إحدى هذه الحالات الشائعة لحدوث مثل هذه المشاكل عند تنصيب حزمة من نوع deb. من خلال dpkg، والتي لا تقوم بتحليل الاعتماديات. يقوم الأمر apt-get بمحاولة تنظيم الوضع بتمرير الأمر f-. sudo apt-get install -f سيقوم بالبحث عن أي اعتماديات غير متوفرة ومحاولة تنصيبها لإصلاح شجرة الاعتماديات. إذا كان التنصيب غير مكتمل بسبب مشكلة في الاعتماديات، فيجب أن تكون هذه الخطوة الأولى لمحاولة الحل. تحميل حزمة من المستودعات في الكثير من الأحيان يكون من المفيد تحميل الحِزم من المستودعات دون تنصيبها فعليًا. يمكنك تنفيذ ذلك من خلال الأمر الفرعي download التابع للأمر apt-get. بما أن الحالة هي تحميل ملف فقط، فلا يتأثر النظام، وبالتالي لا حاجة لصلاحيات sudo: apt-get download package يقوم هذا الأمر بتحميل حزمة / حِزم معينة إلى المجلد الحالي. تحميل مصدر الحزمة من المستودعات يمكنك تحميل الملفات المصدرية للحِزم على الرغم من أن الأمر apt يتعامل بشكل رئيسي مع حِزم deb.، طالما أن قوائم المصدر الخاصة بـ apt تكون مجهّزة بتلك المعلومات. لتحميل مصدر الحزمة، يجب أن يكون هناك سطر deb-src مُوافق لذلك في ملف source.list لتلك الـ apt. بإمكانك الاطلاع على كيفية عمل ذلك في قسم إضافة مستودعات apt. بعد أن يتم إعداد المستودعات، يمكنك تحميل مصدر حزمة ما من خلال تنفيذ: sudo apt-get source package هذا الأمر سيقوم بتحميل ملفات الحزمة إلى المجلد الحالي. بالطبع فإن التحميل يشمل مجلد الحزمة، ملف الوصف dsc، وملف الحزمة مضغوطًا ومؤرشفًا. ls -F sublime-text-2.0.2/ sublime-text_2.0.2-1~webupd8~3.tar.gz sublime-text_2.0.2-1~webupd8~3.dsc إذا كنت تود استخدام حِزم التوزيعة كأساس لتعديلات مستقبلية، يمكنك استخدام الطريقة المذكورة. تنصيب حزمة deb. بعض المزودين يقدمون الملفات الخام deb. لبرامجهم، والتي يمكنك تنصيبها على نظامك، ولكن أغلب التوزيعات توصِي بتنصيب البرامج من مستودعاتهم التي تنال قدرًا كافيًا من اهتمامهم. لتنصيب ملفات deb.، نستخدم أداة dpkg والتي تستخدم بشكل رئيسي للعمل مع الحِزم المستقلة. لا تقوم الأداة بإجراءات التنصيب، بدلا من ذلك تبحث عن حِزم deb. في المجلد الحالي، أو المسار الذي يتم تزويده: sudo dpkg --install debfile.deb من المهم ملاحظة أن أداة dpkg لا تقوم بالتعامل مع الاعتماديات، مما يعني أن التنصيب سيبوء بالفشل في حال عدم وجود الحزم التي تعتمد عليها الحزمة الحالية. لحُسن الحظ تقوم الأداة بتحديد الاعتماديات المطلوبة، حيث أنه إذا كانت الاعتماديات متوفرة في المستودعات يمكنك توفيرها بسهولة فيما بعد من خلال تنفيذ الأمر sudo apt-get install -f سيقوم هذا الأمر بتنصيب الاعتماديات المطلوبة، من بينها تلك التي قامت الأداة dpkg بتحديدها. تنصيب "مهام" البرامج من خلال Tasksel من الممكن تنصيب مجموعة كبيرة من البرامج ذات العلاقة من خلال استخدام المهام "tasks". المهام – ببساطة – هي مجموعات من الحِزم التي تقوم بتجهيز بيئة معينة عندما يتم تنصيبها مع بعضها البعض. من الأمثلة على هذه المهام ما يلي: خادوم LAMP (خاص ببيئة تطوير مواقع الويب)، بيئة سطح المكتب، خادوم التطبيقات. قد تحتوي بعض الأنظمة على حزمة tasksel موجودة بشكل افتراضي. للحصول عليها يمكنك تنفيذ: sudo apt-get update sudo apt-get install tasksel كما ويمكنك اختيار حِزم مهام مختلفة بتنفيذ: sudo tasksel سيقوم هذه الأمر بعرض واجهة تسمح لك باختيار مجموعات حِزم مختلفة وتطبيق التغييرات. يمكنك استعراض قائمة المهام المتاحة وحالتها (من حيث التنصيب) بتنفيذ الأمر: tasksel --list-task أخيرًا، يمكنك تنصيب مهام من سطر الأوامر بتنفيذ: sudo tasksel install task_name سنواصل في الجزء القادم المزيد من أساسيات إدارة الحزم في أوبنتو ودبيان. ترجمة -وبتصرف- للمقال Ubuntu and Debian Package Management Essentials لصاحبه Justin Ellingwood.
-
تعدّ توزيعتا دبيان وأوبنتو من أكثر توزيعات لينكس تأثيرا، فمن بين حوالي 285 توزيعة نشطة، تُشتقّ 132 من دبيان بما فيها أوبنتو نفسها، إضافة إلى 67 أخرى مشتقة مباشرة من أوبنتو. على الرغم من ذلك تختلف تجربة استخدام الاثنتين في جميع الجوانب تقريبا؛ الأمر الذي يجعل الاختيار، الذي يجب أن يُبنى على التفضيلات في نواح أساسية مثل الدّعم، مستوى تحكّم المستخدِم، سهولة الاستخدام؛ أمرا غير يسير بتاتا. يميل الكثيرون عند وصف الاختلاف بين التوزيعتين إلى أن أوبنتو "توزيعة للمبتدئين"، بينما دبيان هي "خيار الخبراء". رغم أن هذا التوصيف صحيح جزئيا إلا أنه يميل في نفس الوقت إلى المبالغة. لم تتغيّر النظرة إلى دبيان كثيرا في السنوات العشر الأخيرة رغم أنها أصبحت تتيح تسهيلات أكثر للمستخدم الذي يرغب في ذلك. على نحو مشابه؛ يظهر أن استخدام أوبنتو سهل جدا إذا نظرنا للأمر من ناحية مبادئ التصميم إلا أن العادات قد تجعل المستخدِم يختلف في هذا التوصيف. تظهر الفروقات بين التوزيعتين جليةً رغم التشابه؛ بدءًا من التثبيت وسطح المكتب، إلى إدارة الحزم Packages والمجتمع Community، وهي أمور تجعل اختيار المناسب لخطّة عمل مؤسستك غير بديهي. الاختلافات في التثبيت يعتمد اختيار التوزيعة بدرجة مهمّة على نوعية العتاد Hardware لديك. تعمل دبيان حاليا على 13 معمارية عتاد تشمل معماريات 32bit و 64bit المعيارية من Intel، معمارية ARM و PowerPC. بينما تدعم أوبنتو رسميا معماريتي 32bit و 64bit، وتعمل على تطوير دعم معماريات ARM. يجب أيضا أخذ مثبّت Installer كل توزيعة في الحسبان. صُمِّم مثبِّت أوبنتو لكي لا يحتاج إلا إلى الحد الأدنى من المُدخلات من المستخدِم من أجل تسهيل التثبيت وجعله أسرع ما يمكن. يمكنك إن واجهت صعوبة تجربة وضع الخبير في المثبِّت والذي هو في الأساس إعادة تصميم لمثبّت دبيان. مثبِّت دبيان لديه، على الجانب الآخر، أولوياته الخاصة. مثلا، لا يختلف المثبّت الرسومي عن المثبّت على سطر الأوامر سوى في الواجهة. يمكن، على عكس الشائع عن دبيان، تثبيت التوزيعة بسهولة بقبول الخيارات المبدئية في كل مرحلة من مراحل التثبيت. أما إذا كنت تفضّل التخصيص فيمكنك الاختيار من بين الاختيارات المتاحة في كلّ خطوة، مما يزيد بدرجة ملحوظة مدّة التثبيت. يختار مثبِّت دبيان مخاطبة جميع مستويات المستخدمين بدلا من التوجّه إلى المبتدئين. لن تجد، على الأرجح، مثبّتا على نفس المستوى من المرونة. الفروق في إدارة النظام والحزم تنقسم المستودعات في دبيان إلى ثلاثة أساسية: المستودع المستقر Stable، المستودع الاختباري Testing والمستودع غير المستقر Unstable. يمثّل المستودع المستقرّ الإصدار المنصوح به من حزم البرمجيات لبيئات الإنتاج نظرًا لمرورها بالكثير من الاختبارات لتأكيد صلاحيتها، أما المستودع الاختباري فهو نسخة تخضع للاختبار وتتهيأ للمرور إلى المستوى الأعلى (المستودع المستقر)، في حين لا تزال النسخة في المستودع غير المستقر في مرحلة التطوير. أضيفت في السنوات الأخيرة مستودعات أخرى (رسمية وغير رسمية) مثل الحمل العكسي Backports، التجريبي Experimental، الأمان Security وغيرها. إلا أن تلك التي يجب على المستخدمين الانتباه إليها هي الثلاثة الأساسية. يختار مستخدمو دبيان بين الاستقرار منقطع النظير على حساب حداثة الحزم من جهة، والجدّة على حساب استقرار الحزم وتغييرات قد تكون كارثية وتشلّ النظام من جهة أخرى. يختلف تأثير خيار المستودعات أكثر على نوعية الحزم، هل هي حزم أساسية للنظام مثل النواة أو أخرى أقل أهمية مثل أدوات مساعِدة. يمكن مثلا اختيار مستودعات مستقرة للحزم الأساسية ومستودعات اختبارية لأدوات غير أساسية. تأخذ أوبنتو حزمها من مستودعات دبيان الاختبارية أو غير المستقرة وبدلا من تنظيمها حسب مستوى الاستقرار ترتّبها في أربع مستودعات أساسية: Main وتوجد به البرامج المدعومة من Canonical، مستودع Universe وتوجد به برامج حرّة يشرف عليها المجتمع، Restricted ويحوي برامج غير حرّة مُصنَّفة على أنها مهمّة و Multiverse الذي توجد به برامج غير حرة لا تدخل ضمن برامج المستودع السابق. تُضاف بضعة مستودعات أخرى، إلا أن هذه الأربعة هي الأساسية. يوجد فرق مهمّ آخر بين دبيان وأوبنتو وهو في طريقة التعامل مع البرامج غير الحرة؛ فدبيان لا تثبّت مبدئيا سوى الحزم الحرّة ونفس المبدأ يطبّقه المثبِّت الخاصّ بها والذي لا يثبّت الوِحدات غير الحرة في النواة. إنْ احتجت إلى برامج غير حرة فسيلزمك إضافة مقاطع Nonfree و Contrib لكلّ مستودع. لا تظهر التفرقة بين البرامج الحرّة وغير الحرّة بنفس الوضوح في أوبنتو. فرغم أن دبيان تتيح استخدام برامج غير حرّة إلا أنها لا تشجّع على ذلك وتجعلك تدرك أنّ استخدام هذه البرامج مخالف للمبادئ التي تشجّعها دبيان؛ في حين تشجّع أوبنتو على استخدام برامج غير حرّة من أجل توفير تجربة استخدام مشابهة لأنظمة التشغيل التجارية. من فروق إدارة النظام التي يجدر ذكرها هو أن أوبنتو تعطّل مبدئيا إمكانية الدخول المباشر إلى حساب المستخدِم الجذر، مشجّعةً استخدام sudo ما أمكن لتنفيذ المهامّ الإدارية. الفروق في بيئة سطح المكتب تختلف التوزيعتان في بيئة سطح المكتب المبدئيّة لكلّ منهما. تستخدم أوبنتو بيئة يونيتي Unity من تطوير شركة Canonical التي تقف خلف التوزيعة. إن نجحت Canonical في تسويق جوالاتها وأجهزتها اللوحية فسيمكنك في المستقبل الحصول على بيئة سطح المكتب نفسها على جميع أجهزتك (حاسوب، هاتف، حاسوب لوحيّ). تدعم كلّ من دبيان وأوبنتو أكثر من بيئة سطح مكتب. تقدّم أوبنتو أسطح مكتب في ما يشبه توزيعات مستقلة: على سبيل المثال Xubuntu لبيئة سطح المكتب Xfce و Kubuntu لبيئة سطح المكتب KDE. تشبه أسطُح المكتب المتوفّرة في دبيان تلك الموجودة في أوبنتو؛ إلا أن فِرَق التطوير التي تعدّها أقرب إلى توزيعة دبيان المعيارية. تختلف تواريخ إصدارات سطح المكتب لدبيان، فقد تتأخر بعضها قليلا بعد وقت الإصدار الرسمي لدبيان حتى تكون جاهزة (نفس الشيء يحدُث مع أوبنتو). تتوفّر أغلب حزم أوبنتو باستثناء Unity لدبيان؛ كما أن حزم دبيان تتوفّر غالبا لأوبنتو إذ أن الأخيرة تعتمد على حزم من مستودعات دبيان. تكون حزم أوبنتو عادةً أحدث من نظيراتها في دبيان التي تمر بدورة اختبار وتنقيح أطول مما يجعل حزم دبيان أكثر استقرارا. تحذير: لا تفترض أن الأصل المشترك بين الحزم يجعلها متوافقة بين التوزيعتين. يُقدَّر أن حوالي 20 بالمائة من حزم أوبنتو غير متوافقة مع دبيان للاختلافات في التسمية وأماكن الملفات. الفروق في مجتمع التوزيعة يمكن لمجتمعَيْ التوزيعتين أن يكونا معيارا ضمن معايير الاختيار. يشتهر مجتمع دبيان بمناقشته لكلّ قرار بالتفصيل. خصوصا في المسائل ذات الأهمية. تتحوّل النقاشات أحيانا عن مسارها وتصبح أقرب للشحناء. يصوّت جميع مطوّري الحزم الرسميين لاختيار قائد لمشروع دبيان، ومسؤولين آخرين. تسير الأمور على العموم حسب اقتراحات أعضاء المجتمع وإن كان للمسؤولسن المنتخبين سلطة لحدٍّ ما. يختلف مجتمع أوبنتو عن مجتمع دبيان في أن لديه مدونة سلوك Code of Conduct تحكُم التفاعلات في المجتمع. يقود Jono Bacon مجتمع أوبنتو لحدّ الساعة ويبذل مجهودا في حلّ النزاعات بين الأعضاء. يُضاف إلى ذلك مجلس إداري فني للمجتمع يُنتخب سنويا. رغم ذلك يبقى Mark Shuttleworth مؤسّس أوبنتو صاحب القرار الأخير. يملك المؤسس وممثلو Canonical السلطة في تقرير مستقبل التوزيعة وتنتُج عن قراراتهم أحيانا انتفاضات في أوساط المساهمين فيها. خاتمة توجد الكثير من المعايير لأخذها في الحسبان عند الاختيار بين دبيان وأوبنتو: مستخدم مبتدئ أم خبير؟ برنامج حرّ أم خاص؟ سهولة الاستخدام أم التحكم؟ برامج محدَّثة في مقابل برامج مستقرّة، مجتمع مفتوح أو مغلق؟ كلها أمور يجب أن تُراعى وتُدرَس قبل أن تأخذ قرارا قد يؤثّر على مستقبل مؤسستك. ربّما تجد من بين تلك المعايير ما لا يمثّل قيمة كبيرة لك، على عكس أخرى توليها أهمية شديدة. الأساسي أن تحدّد أولوياتك. ترجمة -وبتصرّف- لمقال How Ubuntu is different from Debian لصاحبه M.el Khamlichi.