<?xml version="1.0"?>
<rss version="2.0"><channel><title>DevOps: Linux &#x644;&#x64A;&#x646;&#x643;&#x633;</title><link>https://academy.hsoub.com/devops/linux/page/3/?d=4</link><description>DevOps: Linux &#x644;&#x64A;&#x646;&#x643;&#x633;</description><language>ar</language><item><title>&#x645;&#x62F;&#x62E;&#x644; &#x625;&#x644;&#x649; &#x645;&#x633;&#x62A;&#x648;&#x62F;&#x639;&#x627;&#x62A; &#x623;&#x648;&#x628;&#x646;&#x62A;&#x648;</title><link>https://academy.hsoub.com/devops/linux/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D9%85%D8%B3%D8%AA%D9%88%D8%AF%D8%B9%D8%A7%D8%AA-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-r629/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_07/62d8f03642ca5_-----.png.fb1f9e88ed0dcdecd38b470413af2ca8.png" /></p>

<p>
	المستودع Repository هو عبارة عن خادم يحتوي مجموعة من البرامج، وتُعَد هذه الطريقة في توفير البرامج في مكان واحد إحدى نقاط القوة التي تميز <a href="https://academy.hsoub.com/devops/linux/%D9%85%D8%A7-%D9%87%D9%88-%D9%86%D8%B8%D8%A7%D9%85-%D8%A7%D9%84%D8%AA%D8%B4%D8%BA%D9%8A%D9%84-%D9%84%D9%8A%D9%86%D9%83%D8%B3%D8%9F-r451/" rel="">نظام لينكس</a>، كونه يعتمد على المستودعات؛ كما تمتلك كل توزيعة مستودعاتها الخاصة، وسنخص في هذا المقال توزيعة أوبنتو ومستودعاتها التي تسهل على المستخدم مهامه.
</p>

<h2 id="فائدة-المستودعات">
	فائدة المستودعات
</h2>

<p>
	تسمح المستودعات بالبحث ضمنها عن أي تطبيق ثم تثبيته دون الحاجة إلى البحث على الإنترنت عن ملف التنزيل الخاص به، ويتم ذلك في أوبنتو باستخدام الأمر <code>apt</code>، وهذا الأمر هو نفسه مدير الحزم APT الذي يستخدمه مركز برمجيات أوبنتو في الخلفية، لذلك كل البرامج (عدا حزم سناب Snap) المتوفرة في مركز البرمجيات هي من APT.
</p>

<p>
	يحصل <a href="https://academy.hsoub.com/devops/linux/%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA-%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D8%A7%D9%84%D8%AD%D8%B2%D9%85-apt-%D8%8Cyum-%D8%8Cdnf-%D8%8Cpkg-r231/" rel="">مدير الحزم APT</a> على معلومات المستودع من ملف ذو المسار etc/apt/sources.list/ بالإضافة إلى الملفات المتوفرة في مجلد etc/apt/sources.list.d/ وتكون عادةً معلومات المستودع بالصيغة التالية:
</p>

<pre class="ipsCode" id="ips_uid_633_7">
deb http://archive.ubuntu.com/ubuntu/ jammy main
</pre>

<p>
	تكون هيكلية المستودع منظمة بالشكل التالي:
</p>

<p style="text-align: center;">
	<img alt="تنظيم مستوع أوبنتو.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="103285" data-unique="f8ul7xpf4" src="https://academy.hsoub.com/uploads/monthly_2022_07/62d8f0bf904da_.PNG.ebbef818a3a1f18e16e9e3a5a7a52c32.PNG" style=""></p>

<h2 id="آلية-العمل">
	آلية العمل
</h2>

<p>
	يحصل مدير الحزم باستخدام الأمر <code>apt update</code> على معلومات تشمل الحزم المتوفرة والإصدار الخاص بكل حزمة من المستودعات ويخزنها في ذاكرة مخبئيّة محلية. ويمكن الاطلاع على هذا المعلومات في مجلد <code>var/lib/apt/lists/</code>.
</p>

<p>
	يسرع الاحتفاظ بهذه المعلومات محليًّا عملية البحث لأن المستخدم لن يحتاج إلى الاتصال بالانترنت ثم البحث في قاعدة البيانات عن الحزم المتاحة بهدف التأكد فقط من أن حزمة ما متاحة أم لا.
</p>

<p>
	عند محاولة تثبيت برنامج ما xyz باستخدام الأمر <code>apt</code> قد يظهر الخطأ التالي:
</p>

<pre class="ipsCode">
E: Unable to locate package xyz
</pre>

<p>
	يشير الخطأ السابق إلى أن الحزمة xyz غير موجودة ضمن قائمة المستودعات المفعلة ويكمن الحل في تفعيل أحد مستودعات أوبنتو الذي يحوي تلك الحزمة، ثم الحصول على الحزمة المفقودة عبر تنزيلها من المستودع.
</p>

<h2 id="مستودعات-أوبنتو">
	مستودعات أوبنتو
</h2>

<p>
	تقسم البرمجيات في مستودع أوبنتو إلى خمس فئات وهي:
</p>

<ul>
<li>
		Main (رئيسي)
	</li>
	<li>
		Universe
	</li>
	<li>
		Multiverse
	</li>
	<li>
		Restricted (مُقيّد)
	</li>
	<li>
		Partner (شريك)
	</li>
</ul>
<h3 id="main">
	Main
</h3>

<p>
	يُفعّل هذا المستودع بشكل افتراضي عند تثبيت أوبنتو، ويتكون من برمجيات مجانية ومفتوحة المصدر، والتي تسمى FOSS، وهي اختصار free and open source software وتتميز بإمكانية توزيعها بحرية دون أي قيود.
</p>

<p>
	يوفر مطورو أوبنتو دعمًا كاملًا ودائمًا للبرمجيات في هذا المستودع، بالإضافة لتحديثات أمان حتى يصل النظام أو التوزيعة إلى نهاية عمره الافتراضي.
</p>

<h3 id="مستودع-universe">
	مستودع Universe
</h3>

<p>
	يحتوي هذا المستودع أيضًا على برمجيات مجانية ومفتوحة المصدر ولكن أوبنتو لا يضمن تحديثات أمان دورية للبرمجيات في هذه الفئة.
</p>

<h3 id="مستودع-multiverse">
	مستودع Multiverse
</h3>

<p>
	يجب على المستخدم التأكد من أن لديه الحق في استخدام أي برنامج ضمن هذا المستودع قبل استخدامه، وذلك لأن البرمجيات في هذه الفئة ليست FOSS أي أنها ليست حرة ومفتوحة المصدر، بالتالي لا يمكن لأوبنتو تفعيل هذه المستودع بشكل افتراضي بسبب الترخيص والمسائل القانونية، كما لا يوفر تحديثات أو حلول لمشكلات التطبيقات المثبته منه.
</p>

<h3 id="مستودع-restricted">
	مستودع Restricted
</h3>

<p>
	يحتوي هذا المستودع على مُشغّلات احتكارية على الرغم من محاولة أوبنتو الدائمة لتوفير برمجيات مجانية ومفتوحة المصدر، والتي قد لا تتحقق خاصًة عندما يتعلق الأمر بدعم العتاد.
</p>

<h3 id="مستودع-partner">
	مستودع Partner
</h3>

<p>
	يتكون هذا المستودع من برمجيات احتكارية يقوم أوبنتو بتنظيمها في حزم وتقديمها لشركائه، فقد وفر أوبنتو مثلًا في السابق سكايب Skype من خلال هذه المستودع.
</p>

<h2 id="المستودعات-الخارجية">
	المستودعات الخارجية
</h2>

<p>
	يتوفر مستودعات أخرى ولكنها غير مدعومة من أوبنتو والتي يمكن إضافتها تبعًا لرغبة المستخدم بالحصول على برمجيات إضافية أو نسخ أحدث من البرمجيات المتوفرة على مستودعات أوبنتو.
</p>

<p>
	مثلًا، عند إضافة المستودع المقدم من <a href="https://academy.hsoub.com/devops/servers/%D8%A5%D9%86%D8%B4%D8%A7%D8%A1-%D8%B4%D8%A8%D9%83%D8%A9-%D8%AF%D8%A7%D8%AE%D9%84%D9%8A%D8%A9-%D8%A7%D9%81%D8%AA%D8%B1%D8%A7%D8%B6%D9%8A%D8%A9-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-oracle-virtualbox-r263/" rel="">VirtualBox</a>، يمكن عندها الحصول على أحدث نسخة من البرنامج، وسيضاف المستخدم كحقل جديد في الملف sources.list الخاص بالمستخدم، ولكن لا ينصح بهذا الأمر، إذ يُفضّل المحافظة على هذا الملف كما هو في حالته الأصلية، وذلك لأن أي تغيير ضمنه قد يمنع المستخدم مستقبلًا من تحديث النظام أو حتى تنزيل حزم جديدة.
</p>

<p>
	وإلى جانب ما سبق، يمكن تنزيل تطبيق إضافي باستخدام أرشيف الحزمة الشخصية PPA (اختصارًا إلى Personal Package Archive).
</p>

<h2 id="إضافة-المستودعات-غير-الافتراضية">
	إضافة المستودعات غير الافتراضية
</h2>

<p>
	يجب أن يكون كل من المستودعين main و universe مفعلين افتراضيًا. وفي حال رغب المستخدم بتفعيل مستودعات إضافية، سيتحقق ذلك عن طريق سطر الأوامر وكتابة الأمر الخاص بكل مستودع كما يلي:
</p>

<p>
	تفعيل مستودع Universe باستخدام الأمر:
</p>

<pre class="ipsCode">
sudo add-apt-repository universe
</pre>

<p>
	تفعيل مستودع restricted باستخدام الأمر:
</p>

<pre class="ipsCode">
sudo add-apt-repository restricted
</pre>

<p>
	تفعيل مستودع multiverse باستخدام الأمر:
</p>

<pre class="ipsCode">
sudo add-apt-repository multiverse
</pre>

<p>
	بعد إضافة المستودع، يجب تحديث فهرس الحزم الذي يحتوي على معلوماتها، ويتم ذلك باستخدام الأمر التالي:
</p>

<pre class="ipsCode">
sudo apt update 
</pre>

<p>
	وفي حال إزالة تثبيت مستودع ما وليكن مستودع universe مثلا، سيتم ذلك بالطريقة التالية:
</p>

<pre class="ipsCode">
sudo add-apt-repository -r universe
</pre>

<p>
	تتوفر طريقة أسهل لإضافة المستودعات، وهي باستخدام الواجهة الرسومية، وذلك من خلال قسم البرامج والتحديثات في جدول برمجيات أوبنتو، وهو الجدول الأول في الواجهة:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="103287" href="https://academy.hsoub.com/uploads/monthly_2022_07/62d8f0c4568e6_.PNG.2ac142f9654b5958596f92c7da779809.PNG" rel=""><img alt="إضافة المستودعات من خلال الواجهة الرسومية.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="103287" data-unique="f5j881cz9" src="https://academy.hsoub.com/uploads/monthly_2022_07/62d8f0c66da3e_.thumb.PNG.818c9efe9c184feb4532108cd86d4e07.PNG" style="width: 750px; height: auto;"></a>
</p>

<p>
	ومن خلال جدول البرمجيات الأخرى Other Software، يمكن إضافة مستودعات أوبنتو غير الأساسية مثل مستودع partner.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="103286" href="https://academy.hsoub.com/uploads/monthly_2022_07/62d8f0c0a663f_.PNG.b1be596ea28a50282199774a2a19cd3f.PNG" rel=""><img alt="إضافة مستودع بارتنر.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="103286" data-unique="ug7c3ofav" src="https://academy.hsoub.com/uploads/monthly_2022_07/62d8f0c2711db_.thumb.PNG.47d03855abf2604b962d1bd2f1157d15.PNG" style="width: 750px; height: auto;"></a>
</p>

<p>
	ويمكن إزالة المستودع ببساطة عن طريق إلغاء تحديد هذا المستودع.
</p>

<h2 id="كيفية-تحديد-المستودع-الذي-تنتمي-إليه-حزمة-ما">
	كيفية تحديد المستودع الذي تنتمي إليه حزمة ما
</h2>

<p>
	يمتلك أوبنتو <a href="https://packages.ubuntu.com/" rel="external nofollow">موقع ويب متخصص</a> يزود المستخدم بمعلومات عن جميع الحزم المتوفرة في أرشيف أوبنتو. ويمكن البحث عن حزمة ما من خلال كتابة اسم الحزمة في حقل البحث. وتوجد خيارات إضافية لذلك، مثل تحديد إصدار أوبنتو معين أو مستودع معين، ولكن يفضل عدم التخصيص، وذلك بترك الخيار "any" في كلا الحقلين كما في الصورة التالية:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="103284" href="https://academy.hsoub.com/uploads/monthly_2022_07/62d8f0bd8d7b0_.PNG.72b3124a6259c18a90a12717cb78045d.PNG" rel=""><img alt="قسم البحث في موقع حزم أوبنتو.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="103284" data-unique="7mdmkqran" src="https://academy.hsoub.com/uploads/monthly_2022_07/62d8f0bec8c78_.thumb.PNG.2d8d846e14f4e27e370eff38185e6e28.PNG" style="width: 750px; height: auto;"></a>
</p>

<p>
	تُظهِر نتيجة البحث جميع الحزم المطابقة وإصدارات أوبنتو ومعلومات المستودع كما يلي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="103283" href="https://academy.hsoub.com/uploads/monthly_2022_07/62d8f0bb81615_.PNG.466bbdaa9aaf134c6505504f0f9f3401.PNG" rel=""><img alt="نتيجة البحث.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="103283" data-unique="fex58stts" src="https://academy.hsoub.com/uploads/monthly_2022_07/62d8f0bc4d8e0_.thumb.PNG.3a3aca787e143fee8ce714d169567962.PNG" style="width: 750px; height: auto;"></a>
</p>

<p>
	يوضح المثال السابق عملية البحث عن الحزمة tor. وفي نتيجة البحث، ظهرت معلومات توضح أن هذه الحزمة موجودة في مستودع Universe لمختلف إصدارات أوبنتو.
</p>

<h2 id="الخاتمة">
	الخاتمة
</h2>

<p>
	نأمل أن يساعدك هذا المقال في فهم مستودعات أوبنتو. وإذا كان لديك أي أسئلة أو اقتراحات حول الموضوع، يمكنك التوجه إلى قسم <a href="https://academy.hsoub.com/questions/" rel="">الأسئلة والأجوبة</a> في أكاديمية حسوب.
</p>

<p>
	ترجمة -وبتصرف- للمقال <a href="https://itsfoss.com/ubuntu-repositories/" rel="external nofollow">What are Ubuntu Repositories? How to enable or disable them?‎</a> لصاحبه Abhishek Prakash.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
<li>
		<a href="https://academy.hsoub.com/devops/linux/%D9%85%D8%B3%D8%AD-%D8%AD%D8%B2%D9%85-snap-%D8%A7%D9%84%D9%85%D8%B9%D8%B7%D9%84%D8%A9-%D9%84%D8%AA%D8%AD%D8%B1%D9%8A%D8%B1-%D8%A7%D9%84%D9%85%D8%B3%D8%A7%D8%AD%D8%A9-%D9%81%D9%8A-%D9%84%D9%8A%D9%86%D9%83%D8%B3-r623/" rel="">مسح حزم Snap المعطلة لتحرير المساحة في لينكس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/linux/%D9%85%D8%B1%D8%AC%D8%B9-%D8%A5%D9%84%D9%89-%D8%A3%D8%B4%D9%87%D8%B1-%D8%A3%D9%88%D8%A7%D9%85%D8%B1-%D9%84%D9%8A%D9%86%D9%83%D8%B3-r615/" rel="">مرجع إلى أشهر أوامر لينكس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/linux/%D9%85%D8%A7-%D8%A7%D9%84%D9%81%D8%B1%D9%82-%D8%A8%D9%8A%D9%86-%D9%86%D8%B3%D8%AE%D8%A9-%D8%A7%D9%84%D8%AE%D8%A7%D8%AF%D9%85-%D9%88%D9%86%D8%B3%D8%AE%D8%A9-%D8%A7%D9%84%D9%85%D8%B3%D8%AA%D8%AE%D8%AF%D9%85-%D9%85%D9%86-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-%D9%84%D9%8A%D9%86%D9%83%D8%B3-r578/" rel="">ما الفرق بين نسخة الخادم ونسخة المستخدم من أوبنتو لينكس</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">629</guid><pubDate>Mon, 04 Jul 2022 22:01:00 +0000</pubDate></item><item><title>&#x62A;&#x63A;&#x64A;&#x64A;&#x631; &#x627;&#x644;&#x644;&#x63A;&#x629; &#x641;&#x64A; &#x646;&#x638;&#x627;&#x645; &#x644;&#x64A;&#x646;&#x643;&#x633; &#x623;&#x648;&#x628;&#x646;&#x62A;&#x648; &#x625;&#x644;&#x649; &#x627;&#x644;&#x639;&#x631;&#x628;&#x64A;&#x629;</title><link>https://academy.hsoub.com/devops/linux/%D8%AA%D8%BA%D9%8A%D9%8A%D8%B1-%D8%A7%D9%84%D9%84%D8%BA%D8%A9-%D9%81%D9%8A-%D9%86%D8%B8%D8%A7%D9%85-%D9%84%D9%8A%D9%86%D9%83%D8%B3-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-%D8%A5%D9%84%D9%89-%D8%A7%D9%84%D8%B9%D8%B1%D8%A8%D9%8A%D8%A9-r626/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_05/6294b0b07539b_-------.png.d4b806ddeef70eda8b39f2f758fc51fc.png" /></p>

<p>
	يتناول المقال طريقة تغيير اللغة في توزيعات <a href="https://academy.hsoub.com/devops/linux/%D9%85%D8%A7-%D9%87%D9%88-%D9%86%D8%B8%D8%A7%D9%85-%D8%A7%D9%84%D8%AA%D8%B4%D8%BA%D9%8A%D9%84-%D9%84%D9%8A%D9%86%D9%83%D8%B3%D8%9F-r451/" rel="">نظام لينكس Linux </a>القائمة على <a href="https://academy.hsoub.com/devops/linux/%D9%81%D9%8A-%D9%85%D8%A7%D8%B0%D8%A7-%D9%8A%D8%AE%D8%AA%D9%84%D9%81-ubuntu-%D8%B9%D9%86-debian%D8%9F-r235/" rel="">أوبنتو Ubuntu وديبيان Debian</a> بطريقتين مع ضرب مثال إلى تغييرها إلى العربية، إذ سنشرح أولًا طريقة تغيير اللغة عبر الواجهة الرسومية ثم سنشرح بعدها كيفية تغيير اللغة عبر سطر الأوامر.
</p>

<h2>
	تغيير اللغة عبر الإعدادات من الواجهة الرسومية
</h2>

<p>
	هذه الطريقة في تغيير اللغة هي الأسهل والأشيع بين المستخدمين الذي يفضلون التعامل مع الواجهة الرسومية بدلًا من التعامل مع <a href="https://academy.hsoub.com/devops/servers/%D9%85%D8%A7-%D9%87%D9%88-%D8%B3%D8%B7%D8%B1-%D8%A7%D9%84%D8%A3%D9%88%D8%A7%D9%85%D8%B1-%D8%9F-r353/" rel="">سطر الأوامر</a>.
</p>

<p>
	لتغيير اللغة وتتم بالاعتماد على الواجهة الرسومية، نختار من نافذة إعدادات النظام دعم اللغة Language Support كما في الصورة التالية:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="100185" href="https://academy.hsoub.com/uploads/monthly_2022_05/6294b0af8a4af_.PNG.c0ec4da4e9cd57707e993aa855835d78.PNG" rel=""><img alt="الواجهة باللغة الانكليزية.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="100185" data-unique="ckvwj13sq" src="https://academy.hsoub.com/uploads/monthly_2022_05/6294b0af8a4af_.PNG.c0ec4da4e9cd57707e993aa855835d78.PNG" style="width: 550px; height: auto;"></a>
</p>

<p>
	فتظهر اللغات المتاحة ونلاحظ وجود اللغة الانكليزية فقط وهي اللغة الافتراضية للنظام، ويمكن إضافة لغة أخرى بالنقر على خيار …Install / Remove Languages كما يلي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="100190" href="https://academy.hsoub.com/uploads/monthly_2022_05/6294b0b22805e_.PNG.28a6ea5aff6277c28a99af765ab68376.PNG" rel=""><img alt="خيارات اللغة.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="100190" data-unique="pguyv0cy1" src="https://academy.hsoub.com/uploads/monthly_2022_05/6294b0b22805e_.PNG.28a6ea5aff6277c28a99af765ab68376.PNG" style="width: 550px; height: auto;"></a>
</p>

<p>
	ثم تحديد اللغة المطلوبة لتنزيل الحزم الخاصة بها، وفي مثالنا نختار اللغة العربية ثم Apply:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="100182" href="https://academy.hsoub.com/uploads/monthly_2022_05/6294b0ad14436_.PNG.3805fe286c7486b7a0bbbb12e0b17dcb.PNG" rel=""><img alt="اختيار لغة لتثبيتها.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="100182" data-unique="wmohqx101" src="https://academy.hsoub.com/uploads/monthly_2022_05/6294b0ad14436_.PNG.3805fe286c7486b7a0bbbb12e0b17dcb.PNG" style="width: 550px; height: auto;"></a>
</p>

<p>
	بعد انتهاء عملية التنزيل تظهر اللغة الجديدة ضمن الخيارات، يتم تعيينها كلغة رئيسية جديدة عن طريق سحبها إلى أعلى الخيارات كما في الصورة التالية:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="100184" href="https://academy.hsoub.com/uploads/monthly_2022_05/6294b0aec0111_.PNG.d434cdb3f86c1450244ead67420c2d4f.PNG" rel=""><img alt="اللغة الجديدة.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="100184" data-unique="zjt95pa7m" src="https://academy.hsoub.com/uploads/monthly_2022_05/6294b0aec0111_.PNG.d434cdb3f86c1450244ead67420c2d4f.PNG" style="width: 550px; height: auto;"></a>
</p>

<p>
	يجب بعدها إعادة تشغيل النظام، ثم تسجيل الدخول من جديد فتظهر خيارات للمستخدم حول تطبيق اللغة الجديدة على أسماء بعض المجلدات القياسية أو الاحتفاظ بالأسماء القديمة، يمكن الاختيار حسب رغبة المستخدم.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="100189" href="https://academy.hsoub.com/uploads/monthly_2022_05/6294b0b1a2f62_.PNG.e5706a9e8938b17a85ead231fe06b173.PNG" rel=""><img alt="خيارات اللغة الجديدة.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="100189" data-unique="uifq8i18d" src="https://academy.hsoub.com/uploads/monthly_2022_05/6294b0b1a2f62_.PNG.e5706a9e8938b17a85ead231fe06b173.PNG" style="width: 550px; height: auto;"></a>
</p>

<p>
	نتصفح الإعدادات للتأكد، ونلاحظ تطبيق التغييرات بنجاح.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="100186" href="https://academy.hsoub.com/uploads/monthly_2022_05/6294b0b04cb88_.PNG.35f46769994083a0e70e95d00f242967.PNG" rel=""><img alt="تثبيت اللغة الجديدة بنجاح.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="100186" data-unique="l4761m7at" src="https://academy.hsoub.com/uploads/monthly_2022_05/6294b0b04cb88_.PNG.35f46769994083a0e70e95d00f242967.PNG" style="width: 550px; height: auto;"></a>
</p>

<p>
	قد تختلف الواجهة عن التي تستخدمها تبعًا للإصدار والتوزيعة، ولكن تتقارب العملية والخيارات مع كل <a href="https://academy.hsoub.com/devops/linux/%d8%a7%d9%84%d8%af%d9%84%d9%8a%d9%84-%d8%a7%d9%84%d9%86%d9%87%d8%a7%d8%a6%d9%8a-%d9%84%d8%a7%d8%ae%d8%aa%d9%8a%d8%a7%d8%b1-%d8%aa%d9%88%d8%b2%d9%8a%d8%b9%d8%a9-%d9%84%d9%8a%d9%86%d9%83%d8%b3-r48/" rel="">توزيعات لينكس</a>.
</p>

<h2>
	تغيير اللغة باستخدام سطر الأوامر Command Line
</h2>

<p>
	عند بداية عملية تثبيت توزيعة لينكس يطلب النظام من المستخدم اختيار لغة رئيسية للنظام، وقد يحتاج المستخدم لاحقًا إلى تغييرها إلى لغة أخرى، ويمكن تحقيق ذلك ببساطة عن طريق كتابة أمرين فقط في سطر الأوامر.
</p>

<p>
	على فرض يريد المستخدم تغيير اللغة الرئيسية من اللغة الانجليزية إلى اللغة العربية، يجب بدايةً التحقق من اللغة التي تم تعيينها كلغة رئيسية للنظام وذلك باستخدام الأمر الآتي:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_8565_18" style="">
<span class="pln">locale</span></pre>

<p>
	ستكون نتيجة تنفيذ الأمر السابق كالتالي:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_8565_20" style="">
<span class="pln">team@itsfoss</span><span class="pun">:~</span><span class="pln">$ locale
LANG</span><span class="pun">=</span><span class="pln">en_US</span><span class="pun">.</span><span class="pln">UTF</span><span class="pun">-</span><span class="lit">8</span><span class="pln">
LANGUAGE</span><span class="pun">=</span><span class="pln">
LC_CTYPE</span><span class="pun">=</span><span class="str">"en_US.UTF-8"</span><span class="pln">
LC_NUMERIC</span><span class="pun">=</span><span class="str">"en_US.UTF-8"</span><span class="pln">
LC_TIME</span><span class="pun">=</span><span class="str">"en_US.UTF-8"</span><span class="pln">
LC_COLLATE</span><span class="pun">=</span><span class="str">"en_US.UTF-8"</span><span class="pln">
LC_MONETARY</span><span class="pun">=</span><span class="str">"en_US.UTF-8"</span><span class="pln">
LC_MESSAGES</span><span class="pun">=</span><span class="str">"en_US.UTF-8"</span><span class="pln">
LC_PAPER</span><span class="pun">=</span><span class="str">"en_US.UTF-8"</span><span class="pln">
LC_NAME</span><span class="pun">=</span><span class="str">"en_US.UTF-8"</span><span class="pln">
LC_ADDRESS</span><span class="pun">=</span><span class="str">"en_US.UTF-8"</span><span class="pln">
LC_TELEPHONE</span><span class="pun">=</span><span class="str">"en_US.UTF-8"</span><span class="pln">
LC_MEASUREMENT</span><span class="pun">=</span><span class="str">"en_US.UTF-8"</span><span class="pln">
LC_IDENTIFICATION</span><span class="pun">=</span><span class="str">"en_US.UTF-8"</span><span class="pln">
LC_ALL</span><span class="pun">=</span></pre>

<p>
	يُلاحظ من الخرج السابق أن اللغة الرئيسية هي اللغة الانجليزية، ولتغييرها يُستخدم الأمر dpkg بالشكل التالي:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_8565_22" style="">
<span class="pln">sudo dpkg</span><span class="pun">-</span><span class="pln">reconfigure locales</span></pre>

<p>
	تظهر نتيجة تنفيذ السابق في سطر الأوامر كما يلي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="100183" href="https://academy.hsoub.com/uploads/monthly_2022_05/6294b0adb5daa_dpkg.PNG.da86d5337b15b5b2214e1e02608487a5.PNG" rel=""><img alt="استخدام الأمر dpkg.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="100183" data-unique="1vbnndrdd" src="https://academy.hsoub.com/uploads/monthly_2022_05/6294b0adb5daa_dpkg.PNG.da86d5337b15b5b2214e1e02608487a5.PNG" style="width: 550px; height: auto;"></a>
</p>

<p>
	يوجد الكثير من الخيارات ويمكن استخدام الأسهم على لوحة المفاتيح للتنقل بينها والعثور على اللغة المطلوبة وكما ذُكر سابقًا سيتم اختيار اللغة العربية كلغة جديدة رئيسية.
</p>

<p>
	يوجد خيارات لتخصيص اللغة أكثر، حيث يمكن اختيار اللغة العربية السورية مثلًا، وقد لا تتوفر هذه الخيارات في جميع اللغات ولكن في حال توافرها يجب اختيار UTF-8.
</p>

<p>
	بمجرد العثور على اللغة المطلوبة، يجب الضغط على مفتاح المسطرة على لوحة المفاتيح لتحديد هذه اللغة ثم الضغط على مفتاح الدخول ENTER.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="100187" href="https://academy.hsoub.com/uploads/monthly_2022_05/6294b0b0b7e86_.PNG.3d990ed849a6681707d2bd8ce047f67f.PNG" rel=""><img alt="تحديد اللغة المطلوبة.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="100187" data-unique="vrl31qffm" src="https://academy.hsoub.com/uploads/monthly_2022_05/6294b0b0b7e86_.PNG.3d990ed849a6681707d2bd8ce047f67f.PNG" style="width: 550px; height: auto;"></a>
</p>

<p>
	تتمثل آخر خطوة في تعيين اللغة من الخطوة السابقة كلغة افتراضية ويتم ذلك بالانتقال إليها باستخدام مفاتيح الأسهم ثم الضغط على مفتاح الإدخال كما في الشكل التالي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="100188" href="https://academy.hsoub.com/uploads/monthly_2022_05/6294b0b12db69_.png.e3a5ff815726cc624a96151584daefcd.png" rel=""><img alt="تعيين اللغة الافتراضية الجديدة.png" class="ipsImage ipsImage_thumbnailed" data-fileid="100188" data-unique="4inntuypx" src="https://academy.hsoub.com/uploads/monthly_2022_05/6294b0b12db69_.png.e3a5ff815726cc624a96151584daefcd.png" style="width: 550px; height: auto;"></a>
</p>

<p>
	بمجرد الانتهاء مما سبق، ستظهر هذه الرسالة في سطر الأوامر:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_8565_27" style="">
<span class="typ">Generating</span><span class="pln"> locales </span><span class="pun">(</span><span class="kwd">this</span><span class="pln"> might take a </span><span class="kwd">while</span><span class="pun">)...</span><span class="pln">
    en_US</span><span class="pun">.</span><span class="pln">UTF</span><span class="pun">-</span><span class="lit">8.</span><span class="pun">..</span><span class="pln"> done
    ar_SY</span><span class="pun">.</span><span class="pln">UTF</span><span class="pun">-</span><span class="lit">8.</span><span class="pun">..</span><span class="pln"> done
</span><span class="typ">Generation</span><span class="pln"> complete</span><span class="pun">.</span></pre>

<p>
	وبهاتين الطريقتين يمكن تغيير لغة النظام إلى العربية أو أي لغة أخرى.
</p>

<h2>
	المصادر
</h2>

<ul>
<li>
		مقال <a href="https://itsfoss.com/change-locales-linux/" rel="external nofollow">Changing Linux System Language (Locales) From Command Line on Ubuntu and Debian Based Distros</a> لصاحبه Marco Carmona
	</li>
</ul>
<h2>
	اقرأ أيضًا
</h2>

<ul>
<li>
		<a href="https://academy.hsoub.com/devops/linux/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AA%D8%AB%D8%A8%D9%8A%D8%AA-%D8%AA%D9%88%D8%B2%D9%8A%D8%B9%D8%A9-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-%D9%85%D9%86-%D9%84%D9%8A%D9%86%D9%83%D8%B3-%D8%A8%D8%A3%D8%A8%D8%B3%D8%B7-%D8%B7%D8%B1%D9%8A%D9%82%D8%A9-r575/" rel="">كيفية تثبيت توزيعة أوبنتو من لينكس بأبسط طريقة</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/files/24-%D8%A3%D9%86%D8%B8%D9%85%D8%A9-%D8%A7%D9%84%D8%AA%D8%B4%D8%BA%D9%8A%D9%84-%D9%84%D9%84%D9%85%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D9%86/" rel="">أنظمة التشغيل للمبرمجين</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">626</guid><pubDate>Mon, 30 May 2022 12:16:26 +0000</pubDate></item><item><title>&#x645;&#x648;&#x627;&#x632;&#x646;&#x629; &#x628;&#x64A;&#x646; &#x62A;&#x648;&#x632;&#x64A;&#x639;&#x629; &#x623;&#x648;&#x628;&#x646;&#x62A;&#x648; Ubuntu &#x648;&#x622;&#x631;&#x62A;&#x634; Arch &#x645;&#x646; &#x644;&#x64A;&#x646;&#x643;&#x633; Linux</title><link>https://academy.hsoub.com/devops/linux/%D9%85%D9%88%D8%A7%D8%B2%D9%86%D8%A9-%D8%A8%D9%8A%D9%86-%D8%AA%D9%88%D8%B2%D9%8A%D8%B9%D8%A9-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-ubuntu-%D9%88%D8%A2%D8%B1%D8%AA%D8%B4-arch-%D9%85%D9%86-%D9%84%D9%8A%D9%86%D9%83%D8%B3-linux-r625/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_05/6293cb7ab0732_----Ubuntu--Arch--.png.9d62d8a3cd2083f06ea958b149ccbb10.png" /></p>

<p>
	تمتلك كل من ت<a href="https://academy.hsoub.com/devops/linux/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AA%D8%AB%D8%A8%D9%8A%D8%AA-%D8%AA%D9%88%D8%B2%D9%8A%D8%B9%D8%A9-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-%D9%85%D9%86-%D9%84%D9%8A%D9%86%D9%83%D8%B3-%D8%A8%D8%A3%D8%A8%D8%B3%D8%B7-%D8%B7%D8%B1%D9%8A%D9%82%D8%A9-r575/" rel="">وزيعة أوبنتو Ubuntu</a> وآرتش Arch ميزات وخيارات كثيرة وتقدم كل منهما تجارب مختلفة تمامًا لسطح المكتب، مما يُصعّب عملية اختيار إحداهما دون الأخرى، لذا نسلط الضوء في هذا المقال على العديد من الاختلافات بين أوبنتو وآرتش التي تساعد المستخدم على اتخاذ القرار.
</p>

<h2>
	1. الجمهور المستهدف
</h2>

<p>
	يستهدف أوبنتو المستخدمين الذين يريدون بيئة <a href="https://academy.hsoub.com/devops/linux/%D9%85%D8%A7-%D9%87%D9%88-%D9%86%D8%B8%D8%A7%D9%85-%D8%A7%D9%84%D8%AA%D8%B4%D8%BA%D9%8A%D9%84-%D9%84%D9%8A%D9%86%D9%83%D8%B3%D8%9F-r451/" rel="">نظام لينكس</a> معدّة مسبقًا ولا تحتاج إلى إعدادات كثيرة أو بذل جهد إضافي لتحسين تجربة العمل، حيث تتطلب بيئة أوبنتو تثبيت الأدوات الأساسية فقط وتوفر تجربة سطح مكتب مثالية مما يجعلها مناسبة لمعظم المستخدمين.
</p>

<p>
	من ناحية أخرى، يستهدف آرتش المستخدمين الذين لا يفضلون التعامل مع القوالب الجاهزة وإنما يفضلون ضبط كل شيء بأيديهم بما يتناسب مع احتياجاتهم، ويتحقق ذلك بفضل تجربة التخصيص Do-It-Yourself أي افعلها بنفسك وتُختصر إلى DIY التي تتيح تخصيص عناصر مختلفة من نظام لينكس مثل إنشاء حزم لتخصيص سطح المكتب مما يوفر بيئات سطح مكتب مختلفة.
</p>

<h2>
	2. التثبيت
</h2>

<p>
	يمتلك أوبنتو واجهة رسومية تسهل وتوضح عملية التثبيت، وعلى الرغم من أن <a href="https://academy.hsoub.com/devops/linux/%D8%A7%D9%84%D8%AA%D9%87%D9%8A%D8%A6%D8%A9-%D8%A7%D9%84%D8%A3%D9%88%D9%84%D9%8A%D8%A9-%D9%84%D8%AE%D8%A7%D8%AF%D9%85-%D8%A3%D9%88%D8%A8%D9%88%D9%86%D8%AA%D9%88-1804-r431/" rel="">خادم أوبنتو Ubuntu server</a> لا يمتلك واجهة رسومية إلا أنه يتيح إمكانية تثبيتها اختياريًا.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="100143" href="https://academy.hsoub.com/uploads/monthly_2022_05/6293cb6c46ece_ubuntu.PNG.fa93cba5597bae8377a06d7c69469a53.PNG" rel=""><img alt="تثبيت ubuntu.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="100143" data-unique="05rj79cap" src="https://academy.hsoub.com/uploads/monthly_2022_05/6293cb71733c7_ubuntu.thumb.PNG.482b43414c48ecf3907ec35c21c0a021.PNG" style="width: 600px; height: auto;"></a>
</p>

<p>
	بينما يُثبّت آرتش من خلال <a href="https://academy.hsoub.com/devops/servers/%D9%85%D8%A7-%D9%87%D9%88-%D8%B3%D8%B7%D8%B1-%D8%A7%D9%84%D8%A3%D9%88%D8%A7%D9%85%D8%B1-%D8%9F-r353/" rel="">سطر الأوامر</a> مما يصعب عملية التثبيت ولحسن الحظ تتوفر حديثًا أداة إرشادية لتسهل عملية التثبيت.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="100141" href="https://academy.hsoub.com/uploads/monthly_2022_05/6293cb64df157_arch1.PNG.b07d6ea013c8a7d16ebb7ad96604b2b9.PNG" rel=""><img alt="تثبيت arch 1.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="100141" data-unique="errq1epea" src="https://academy.hsoub.com/uploads/monthly_2022_05/6293cb66bf892_arch1.thumb.PNG.3a0775b7f3aa1475f150b8c218e2ce29.PNG" style="width: 600px; height: auto;"></a>
</p>

<p style="text-align: center;">
	<img alt="تثبيت arch 2.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="100142" data-unique="q69kdtyrh" src="https://academy.hsoub.com/uploads/monthly_2022_05/6293cb6ae3e03_arch2.PNG.6bd364efd615360149e43c0720dc988c.PNG" style="width: 600px; height: auto;"></p>

<p>
	لذلك يتفوق أوبنتو على آرتش في سهولة عملية التثبيت.
</p>

<h2>
	3. التعامل مع سطح المكتب
</h2>

<p>
	صُمم أوبنتو بشكل يهدف إلى توفير الراحة لمستخدميه، حيث توفر شركة كانونيكال Canonical بيئة سطح مكتب GNOME مخصصة لتسهيل الأمور، وبيئة كيدي بلازما KDE Plasma والتي تتمتع بمستوى تخصيص أكبر من بيئة GNOME.
</p>

<p>
	يقدم أوبنتو دومًا أفضل إنتاجية في مجال <a href="https://academy.hsoub.com/design/user-experience/%d9%85%d8%af%d8%ae%d9%84-%d8%a5%d9%84%d9%89-%d8%aa%d8%ac%d8%b1%d8%a8%d8%a9-%d8%a7%d9%84%d9%85%d8%b3%d8%aa%d8%ae%d8%af%d9%85-user-experience-r149/" rel="">تجربة المستخدم</a> بناءً على تعليقات وردود أفعال مستخدميه.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="100148" href="https://academy.hsoub.com/uploads/monthly_2022_05/6293cb87b5a7f_ubuntu.PNG.5cda86f919b3312edaa9c04371f21894.PNG" rel=""><img alt="سطح المكتب في ubuntu.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="100148" data-unique="dujx3l33b" src="https://academy.hsoub.com/uploads/monthly_2022_05/6293cb8b94896_ubuntu.thumb.PNG.7df2db31488b0f3a52ef6fa000962a9e.PNG" style="width: 600px; height: auto;"></a>
</p>

<p>
	لا يوجد في آرتش أي تخصيص افتراضي وفي حال رغب المستخدم بذلك يجب عليه القيام ببعض التعديلات أو اللجوء لاختيار بيئة سطح مكتب مثل GNOME أو KDE Plasma، لذا تعتمد تجربة المستخدم على كيفية الإعداد عند تثبيت آرتش.
</p>

<p>
	على الجانب، يولي آرتش عمومًا اهتمامًا للفاعلية والجوانب الفنية الأخرى أكثر من تجربة المستخدم على سطح المكتب.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="100147" href="https://academy.hsoub.com/uploads/monthly_2022_05/6293cb7fd890f_archGNOME.PNG.d18827643ba4f0f537b04f3a22f9e39d.PNG" rel=""><img alt="سطح المكتب في arch مع GNOME.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="100147" data-unique="iaimuscqz" src="https://academy.hsoub.com/uploads/monthly_2022_05/6293cb83bd2b9_archGNOME.thumb.PNG.6f6052dd4657a0709e4934958c573335.PNG" style="width: 600px; height: auto;"></a>
</p>

<p>
	يحصل مستخدم أوبنتو على خيارات محدودة لتخصيص سطح المكتب حسب رغبته، بينما يحصل مستخدم آرتش على حرية أكبر لاختيار سطح المكتب وتخصيصه وهذا يُعدّ ميزة لمستخدمي لينكس المحترفين وعائق لمستخدمي لينكس الجدد.
</p>

<h2>
	4. نظام الملفات
</h2>

<p>
	تتميز جميع أنظمة ملفات <a href="https://academy.hsoub.com/devops/linux/%d8%a7%d9%84%d8%af%d9%84%d9%8a%d9%84-%d8%a7%d9%84%d9%86%d9%87%d8%a7%d8%a6%d9%8a-%d9%84%d8%a7%d8%ae%d8%aa%d9%8a%d8%a7%d8%b1-%d8%aa%d9%88%d8%b2%d9%8a%d8%b9%d8%a9-%d9%84%d9%8a%d9%86%d9%83%d8%b3-r48/" rel="">توزيعات لينكس</a> بالموثوقية مما يوفر الراحة لجميع المستخدمين، يستخدم أوبنتو نظام الملفات ext4 والذي يتميز بالقوة وامتلاك جميع الأساسيات اللازمة لمتطلبات الحوسبة الحديثة.
</p>

<p>
	في حال الحاجة لمزايا إضافية عما يقدمه نظام الملفات ext4 يمكن استخدام آرتش الذي يوفر عدة أنظمة ملفات مثل btrfs و ext4 و xfs و f2fs، ولكن يجب التأكد من امتلاك المستخدم الخبرة الكافية قبل استخدام أحد هذه الأنظمة.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="100146" href="https://academy.hsoub.com/uploads/monthly_2022_05/6293cb7e8f93f_.PNG.4a9109e339bcf30e945ec02f6d7f28b3.PNG" rel=""><img alt="خيارات نظام الملفات.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="100146" data-unique="a5yc3gi4y" src="https://academy.hsoub.com/uploads/monthly_2022_05/6293cb7e8f93f_.PNG.4a9109e339bcf30e945ec02f6d7f28b3.PNG" style="width: 600px; height: auto;"></a>
</p>

<h2>
	5. تكامل تطبيقات المنظومة App Ecosystem
</h2>

<p>
	تعتمد معظم توزيعات لينكس الشائعة على أوبنتو وذلك بسبب دعمه مجموعة واسعة من التطبيقات ولا يشمل إمكانية اختيار هذه التطبيقات أو الحزم فقط، بل سهولة التثبيت أيضًا، إذ يمكن تثبيت الحزم المتاحة من خلال مستودعاتها الرسمية مثل مستودع PPA (اختصار إلى Personal Package Archives) أو باستخدام مركز البرامج الخاص بها بالتكامل مع Snap.
</p>

<p>
	يدعم أوبنتو أداة Flatpak وهي أداة مساعدة لإدارة الحزم وتنزيل التطبيقات، غالبًا ما تتوفر الأداة بشكل افتراضي أما في حال عدم توافرها يمكن إعدادها من Flathub وهو متجر تطبيقات Flatpak الرسمي.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="100138" href="https://academy.hsoub.com/uploads/monthly_2022_05/6293cb468f6ce_UbuntuAppEcosystem.PNG.e6c688a1bc03496254e15b8f422fcd70.PNG" rel=""><img alt="Ubuntu App Ecosystem.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="100138" data-unique="igz12jaxr" src="https://academy.hsoub.com/uploads/monthly_2022_05/6293cb4a83dd8_UbuntuAppEcosystem.thumb.PNG.bc2603df330f70bc009497434e6fce76.PNG" style="width: 600px; height: auto;"></a>
</p>

<p>
	أما بالنسبة إلى آرتش، لا يتوفر فيه Snap أو Flatpak افتراضيًا ولكن يمكن إعداد أي منهما عند الحاجة، وللوصول إلى المزيد من الحزم يمكن استخدام مستودع المستخدِم في آرتش Arch User Repository (المعروف اختصارًا AUR) والذي يتيح الوصول إلى عدد لا يحصى من التطبيقات، ومع ذلك قد لا يدعم بعض مطوري التطبيقات آرتش رسميًا.
</p>

<p>
	يستخدم آرتش مدير الحزم pacman لتثبيت وإدارة الحزم كما في الصورة التالية:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="100136" href="https://academy.hsoub.com/uploads/monthly_2022_05/6293cb2d63e42_ArchLinuxAppEcosystem1.PNG.a4939c71e166bf71971d1018f4fa25b6.PNG" rel=""><img alt="Arch Linux App Ecosystem1.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="100136" data-unique="n81ri5gco" src="https://academy.hsoub.com/uploads/monthly_2022_05/6293cb3084a5d_ArchLinuxAppEcosystem1.thumb.PNG.dd20f5bc847ba2fab3a6eb9c3536c52e.PNG" style="width: 600px; height: auto;"></a>
</p>

<p>
	تتغير الواجهة الرسومية GUI المساعدة على تثبيت التطبيقات حسب بيئة سطح المكتب التي اختارها المستخدم، على سبيل المثال يتم الوصول إلى المركز الخاص ببرامج بيئة سطح المكتب GNOME إذا جرى تثبيتها، والوصول إلى Discover إذا جرى تثبيت KDE Plasma.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="100137" href="https://academy.hsoub.com/uploads/monthly_2022_05/6293cb3a25e1b_ArchLinuxAppEcosystem2.PNG.1996d23ce28354a268fc5b4e81f71860.PNG" rel=""><img alt="Arch Linux App Ecosystem2.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="100137" data-unique="2x11fvcxu" src="https://academy.hsoub.com/uploads/monthly_2022_05/6293cb3e16ca8_ArchLinuxAppEcosystem2.thumb.PNG.c59684fffd130123aeaefbaf6754f238.PNG" style="width: 600px; height: auto;"></a>
</p>

<p>
	يتميز آرتش بمجتمع داعم للحزم ولكن قد لا يوصى به رسميًا لكل شيء، على الرغم من ذلك يُعتبر نقطة قوية لآرتش لأن الحزم التي يوفرها أشمل بالموازنة مع أوبنتو الذي يوفر منصة واحدة لتثبيت وإدارة البرامج بسهولة.
</p>

<h2>
	6. الحزم المثبتة افتراضيا
</h2>

<p>
	يتيح آرتش للمستخدم تخصيص كل شيء من بداية إعداده، حيث يمكن اختيار تثبيت أقل عدد ممكن من الحزم، بالمقابل يحتوي أوبنتو على العديد من الأدوات والخدمات المثبتة افتراضيًا، ولكن قد تكون بعض الحزم زائدة عن حاجة بعض المستخدمين لذا يتيح أوبنتو إمكانية إزالة الحزم التي لا يحتاجها المستخدم.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="100139" href="https://academy.hsoub.com/uploads/monthly_2022_05/6293cb579e4a2_ubuntu.PNG.b3628139182fb721350874a47510edb9.PNG" rel=""><img alt="أدوات ubuntu.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="100139" data-unique="zl9wbqlth" src="https://academy.hsoub.com/uploads/monthly_2022_05/6293cb5ced84e_ubuntu.thumb.PNG.82e1696dda3582cd97efa8f9e448171a.PNG" style="width: 600px; height: auto;"></a>
</p>

<h2>
	7. الحرية والقيود المفروضة
</h2>

<p>
	يمنح آرتش مستخدميه الكثير من الحرية لتخصيص تجربتهم، ولا يقتصر الأمر على بيئة سطح المكتب أو اختيار مدير ترتيب عرض النوافذ ولكن أكثر من ذلك حيث يمكن تحديد خادم الصوت المفضل بين PulseAudio و pipewire، كما يمكن للمستخدم اختيار نواة لينكس معينة، مثل إصدار hardened الذي يوفر المزيد من الأمان أو zen للحصول على تجربة مُحسّنة أو الإصدار طويل الدعم LTS من النواة.
</p>

<p>
	لا يوفر أوبنتو حرية اختيار نواة لينكس Linux Kernel المثبتة ويستعمل خادم الصوت PulseAudio دون توفير خيار آخر كما في آرتش.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="100135" href="https://academy.hsoub.com/uploads/monthly_2022_05/6293cb2832ab0_ArchLinux(Neofetch).PNG.5b601a6858f7112fa855d66f3d64aeeb.PNG" rel=""><img alt="Arch Linux (Neofetch).PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="100135" data-unique="88ifoqe7o" src="https://academy.hsoub.com/uploads/monthly_2022_05/6293cb294270c_ArchLinux(Neofetch).thumb.PNG.d9ee509df4f600d00f45d81b836c7b53.PNG" style="width: 600px; height: auto;"></a>
</p>

<h2>
	8. المجتمع الداعم
</h2>

<p>
	يمتلك أوبنتو عددًا ضخمًا من المستخدمين، لذا نجد العديد من المنتديات التي توجّه عمل المستخدمين وتساعدهم في استكشاف المشكلات وإصلاحها.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="100150" href="https://academy.hsoub.com/uploads/monthly_2022_05/6293cb94ee8cd_ubuntu.PNG.2783fb8c54fdd5a3060dba089f934bbb.PNG" rel=""><img alt="مجموعة دعم ubuntu.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="100150" data-unique="17t902yep" src="https://academy.hsoub.com/uploads/monthly_2022_05/6293cb9749fd2_ubuntu.thumb.PNG.30c2c99e83aa81a152f18227c956ff51.PNG" style="width: 600px; height: auto;"></a>
</p>

<p>
	بينما يمتلك آرتش عددًا أقل من المستخدمين وبالتالي لا يقدم هذا النوع من الدعم، ولكن يوفر آرتش ويكي wiki أي توثيقًا ممتازًا لكثير من حالات الاستخدام الشائعة مما يعوض عن نقص الدعم.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="100149" href="https://academy.hsoub.com/uploads/monthly_2022_05/6293cb8f4730f_archwiki.PNG.d869e7cdbe45ecc073526fe9a79056f4.PNG" rel=""><img alt="مجموعة دعم arch wiki.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="100149" data-unique="ey20srcy4" src="https://academy.hsoub.com/uploads/monthly_2022_05/6293cb91c825a_archwiki.thumb.PNG.c95771c20aa23a0aed379d2a6b61c702.PNG" style="width: 600px; height: auto;"></a>
</p>

<h2>
	9. الإصدارات والتحديثات
</h2>

<p>
	يتيح أوبنتو لمستخدميه الاختيار بين نوعين من الإصدارات وهي النسخ طويلة الدعم LTS والنسخ ليست طويلة الدعم non-LTS، إذ تتلقى النسخ طويلة الدعم تحديثات طفيفة كل خمس سنوات أو أكثر (للمؤسسات)، أما النسخ ليست طويلة الدعم تتلقى تحديثات خلال فترة أقصر حيث تكون التحديثات كل 9 أشهر مع توفر إصدار جديد كل 6 أشهر بالإضافة لوجود تغييرات مهمة محتملة مع كل ترقية للإصدار.
</p>

<p>
	يعد إصدار النسخ طويلة الدعم خيارًا أنسب للمستخدمين الذين لا يرغبون بتغييرات كبيرة في تجربة المستخدم مع كل تحديث.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="100145" href="https://academy.hsoub.com/uploads/monthly_2022_05/6293cb7a875d4_ubuntu.PNG.372a4b91052bfd1c5f64177c67db7f2f.PNG" rel=""><img alt="تحديثات ubuntu.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="100145" data-unique="fbjvyedhj" src="https://academy.hsoub.com/uploads/monthly_2022_05/6293cb7cdcd4a_ubuntu.thumb.PNG.257c6024e5af0b6cab88e903778ed68a.PNG" style="width: 600px; height: auto;"></a>
</p>

<p>
	لا يعتمد آرتش على أي مما سبق، بل يقوم بإرسال التحديثات للمستخدمين فور صدورها سواء كانت تحديثات جوهرية أو طفيفة، وهذا ما يضمن امتلاك المستخدم لأحدث وأهم الحزم بشكل دائم، وهو ما يعتبر ميزة ولكن نظرًا لتنوع آراء المستخدمين فقد يكون خيار غير ملائم للبعض.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="100144" href="https://academy.hsoub.com/uploads/monthly_2022_05/6293cb756b478_arch.PNG.3cdc2fd7d55a97025287839b5e11a3dc.PNG" rel=""><img alt="تحديثات arch.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="100144" data-unique="1lhcoi4w3" src="https://academy.hsoub.com/uploads/monthly_2022_05/6293cb780066d_arch.thumb.PNG.35d37ba58674efa52c8f0b027d463be9.PNG" style="width: 600px; height: auto;"></a>
</p>

<h2>
	10. التوافق مع العتاد
</h2>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="100140" href="https://academy.hsoub.com/uploads/monthly_2022_05/6293cb5f8946b_.PNG.46fe526d06ab69ad82f91d9f789717ad.PNG" rel=""><img alt="التوافق مع العتاد.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="100140" data-unique="y49zvqjyt" src="https://academy.hsoub.com/uploads/monthly_2022_05/6293cb5f8946b_.PNG.46fe526d06ab69ad82f91d9f789717ad.PNG" style="width: 500px; height: auto;"></a>
</p>

<p>
	يتميز أوبنتو بتوافق كبير وآمن مع العتاد بسبب اختبار التوافق الذي يُجرى قبل طرح أي إصدار جديد، وقد يوجد بعض حالات عدم التوافق بسبب وجود تقنية حديثة لم يتم اختبارها مسبقًا.
</p>

<p>
	لا يتم اختبار التوافق في آرتش مما يجعل بعض نسخه لا تعمل مع بعض العتاد، ولكن يعمل آرتش بشكل أفضل من أوبنتو في بعض الحالات بسبب توفيره لأحدث الحزم، لذا في حال الرغبة في اختيار آرتش ولكن مع تخوّف من عدم التوافق مع العتاد يمكن اللجوء للمنتديات وأصحاب الخبرة للتأكد من عدم وجود مشكلات معروفة في العتاد المراد تشغيل آرتش عليه.
</p>

<h2>
	11. الاستقرار
</h2>

<p>
	يعتبر آرتش أقل استقرارًا من أوبنتو بسبب التحديثات الكثيرة والتخصيص الذي يقوم به كل مستخدم حسب عمله، حيث يجب القيام بتعديلات بعد كل تحديث أو تخصيص للمحافظة على استقراره على عكس أوبنتو الذي لا يعاني من الأخطاء أو الفشل لذا هو مستقر بطبيعته.
</p>

<h2>
	أيهما أختار أوبنتو أم آرتش؟
</h2>

<p>
	يتميز أوبنتو بالاستقرار والتوافق مع العتاد بالإضافة لسهولة تعلمه، لذا يعد أوبنتو خيارًا مناسبًا للمستخدم الجديد أو الذي لا تتعدى مهامه سوى إنجاز أمور بسيطة ولا يحتاج الكثير من التعديلات.
</p>

<p>
	بينما يتصف آرتش بالنقيض، فهو أقل استقرارًا وغير متوافق مع العتاد ويحتاج إلى وقت طويل لتعلمه لذا فهو مناسب للمستخدم الخبير والذي يرغب بالحصول على أحدث الأشياء ويفضل تخصيص تجربة سطح المكتب لتتناسب مع سير عمله بيده.
</p>

<h2>
	بعض الأسئلة الشائعة
</h2>

<p>
	قد تراود القارئ بعض الأسئلة حتى مع نهاية المقال، فيما يلي بعض الأسئلة الشائعة وأجوبتها:
</p>

<h3>
	هل يعتبر آرتش أفضل من أوبنتو؟
</h3>

<p>
	لا توجد إجابة دقيقة لهذا السؤال فيمكن أخذ كلا الجوابين نعم ولا، حيث يعتبر آرتش أفضل من الناحية التقنية، ولكنه ينطوي على كثير من التفاصيل مثل الاستقرار وسهولة التعلم وتكامل تطبيقات المنظومة وغيرها، لذا يتم تحديد إجابة هذا السؤال بناءً على تفضيلات المستخدم.
</p>

<h3>
	من الأسرع، أوبنتو أم آرتش؟
</h3>

<p>
	يعتبر آرتش أسرع من أوبنتو وذلك عند تخصيصه بالحد الأدنى من الحزم وغيرها من إعدادات التثبيت، حيث لا يعتبر أوبنتو بطيء ولكنه أبطأ من آرتش نظرًا لامتلاكه المزيد من الحزم المثبتة افتراضيًا والتي قد تكون غير ضرورية.
</p>

<h3>
	متى يجب الانتقال من أوبنتو إلى آرتش؟
</h3>

<p>
	يجب على المستخدم الإكتفاء بتوزيعة أوبنتو طالما أن عمله لا يحتاج سوى المهمات الأساسية، ويمكن الإنتقال إلى آرتش في إحدى الحالات التالية:
</p>

<ul>
<li>
		امتلاك مهارة كبيرة باستعمال أوبنتو
	</li>
	<li>
		الرغبة في إضفاء تعديلات شخصية
	</li>
	<li>
		تخصيص بعض الأمور
	</li>
	<li>
		تفضيل امتلاك أحدث الحزم على الاستقرار
	</li>
</ul>
<p>
	ترجمة -وبتصرف- للمقال <a href="https://itsfoss.com/ubuntu-vs-arch/" rel="external nofollow">Ubuntu vs Arch: Which Linux Distro is better?‎</a> لصاحبه Ankush Das.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
<li>
		<a href="https://academy.hsoub.com/devops/servers/%D8%AA%D8%AD%D8%AF%D9%8A%D8%AB%C2%A0%D8%AA%D9%88%D8%B2%D9%8A%D8%B9%D8%A9-%D8%A3%D9%88%D8%A8%D9%88%D9%86%D8%AA%D9%88-%D9%85%D9%86-%D8%A7%D9%84%D8%A5%D8%B5%D8%AF%D8%A7%D8%B1-1404-lts-%D8%A5%D9%84%D9%89-1604-lts-r280/" rel="">تحديث توزيعة أوبونتو من الإصدار 14.04 LTS إلى 16.04 LTS</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/linux/%D9%85%D8%A7-%D8%A7%D9%84%D9%81%D8%B1%D9%82-%D8%A8%D9%8A%D9%86-%D9%86%D8%B3%D8%AE%D8%A9-%D8%A7%D9%84%D8%AE%D8%A7%D8%AF%D9%85-%D9%88%D9%86%D8%B3%D8%AE%D8%A9-%D8%A7%D9%84%D9%85%D8%B3%D8%AA%D8%AE%D8%AF%D9%85-%D9%85%D9%86-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-%D9%84%D9%8A%D9%86%D9%83%D8%B3-r578/" rel="">ما الفرق بين نسخة الخادم ونسخة المستخدم من أوبنتو لينكس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/servers/%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D8%A7%D9%84%D8%AD%D8%B2%D9%85-%D8%B9%D9%84%D9%89-%D9%86%D8%B3%D8%AE%D8%A9-%D8%A7%D9%84%D8%AE%D9%88%D8%A7%D8%AF%D9%8A%D9%85-%D9%85%D9%86-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-r156/" rel="">إدارة الحزم على نسخة الخواديم من أوبنتو</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">625</guid><pubDate>Sun, 29 May 2022 20:25:52 +0000</pubDate></item><item><title>&#x645;&#x633;&#x62D; &#x62D;&#x632;&#x645; Snap &#x627;&#x644;&#x645;&#x639;&#x637;&#x644;&#x629; &#x644;&#x62A;&#x62D;&#x631;&#x64A;&#x631; &#x627;&#x644;&#x645;&#x633;&#x627;&#x62D;&#x629; &#x641;&#x64A; &#x644;&#x64A;&#x646;&#x643;&#x633;</title><link>https://academy.hsoub.com/devops/linux/%D9%85%D8%B3%D8%AD-%D8%AD%D8%B2%D9%85-snap-%D8%A7%D9%84%D9%85%D8%B9%D8%B7%D9%84%D8%A9-%D9%84%D8%AA%D8%AD%D8%B1%D9%8A%D8%B1-%D8%A7%D9%84%D9%85%D8%B3%D8%A7%D8%AD%D8%A9-%D9%81%D9%8A-%D9%84%D9%8A%D9%86%D9%83%D8%B3-r623/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_05/628e0ca04e25d_--snap-----.png.08a15cbce56e7fbe70049b45a85ffdd3.png" /></p>

<p>
	تعد حزم سناب Snap جزءًا لا يتجزأ من نظام أوبنتو المتكامل ولكنها ليست خيارًا مفضلًا لدى الجميع لأنها ذات حجم كبير وتحتل مساحة كبيرة على القرص مما يسبب مشكلات كثيرة خاصةً عند محدودية مساحة القرص في الجزء الرئيسي للجذر root partition.
</p>

<p>
	يحتاج المستخدم إلى حل يخفض مساحة الكبيرة التي تحتلها حزم سناب بعض الأحيان وهو ما سيناقشه هذا المقال بالتفصيل ويعرض آلية تلقائية لحل هذه المشكلة.
</p>

<h2>
	إزالة إصدارات حزم سناب القديمة لتحرير مساحة على القرص
</h2>

<p>
	تُخزَّن ملفات النظام المتعلقة بسناب في مجلد var/lib/snapd/ والذي يمكن أن يبلغ حجمًا كبيرًا بناءً على عدد الحزم التي تم تثبيتها، ويساعد الأمر <code>du</code> على التحقق من حجم المجلد كما يلي:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_6634_7" style="">
<span class="pln">abhishek@its</span><span class="pun">-</span><span class="pln">foss</span><span class="pun">:~</span><span class="pln">$ sudo du </span><span class="pun">-</span><span class="pln">sh </span><span class="pun">/</span><span class="kwd">var</span><span class="pun">/</span><span class="pln">lib</span><span class="pun">/</span><span class="pln">snapd
</span><span class="lit">5.4G</span><span class="pln"> </span><span class="pun">/</span><span class="kwd">var</span><span class="pun">/</span><span class="pln">lib</span><span class="pun">/</span><span class="pln">snapd      </span></pre>

<p>
	كما يمكن إجراء التحقق السابق من خلال أداة Disk Usage Analyzer لتحليل استخدام مساحة القرص والمزودة بواجهة رسومية GUI.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="99778" href="https://academy.hsoub.com/uploads/monthly_2022_05/628e0cc3e3f4a_.PNG.65caf7047801db4f42c2763ffb049ea9.PNG" rel=""><img alt="مقدار استخدام سناب لمساحة القرص.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="99778" data-unique="j7ur2jsne" src="https://academy.hsoub.com/uploads/monthly_2022_05/628e0cc6c3d95_.thumb.PNG.f0c320454087982e6a983081cca9758a.PNG" style="width: 750px; height: auto;"></a>
</p>

<p>
	يُظهر خرج الأداة الحجم الكبير للمساحة المُستخدمة مما يتطلب تحرير بعض المساحة.
</p>

<p>
	صُمّم سناب ليحتفظ بإصدار واحد قديم على الأقل من الحزم التي ثُبِّتت على النظام، ويمكن رؤية هذه العملية باستخدام أمر سناب الآتي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_6634_10" style="">
<span class="pln">snap list </span><span class="pun">--</span><span class="pln">all</span></pre>

<p>
	تظهر الصورة التالية نتيجة تنفيذ الأمر السابق:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="99779" href="https://academy.hsoub.com/uploads/monthly_2022_05/628e0cf584c7b_Snap.PNG.c24395695ea170becb7294c76dfdbec9.PNG" rel=""><img alt="احتفاظ Snap بنسختين على الأقل من كل حزمة.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="99779" data-unique="aqioxe6to" src="https://academy.hsoub.com/uploads/monthly_2022_05/628e0cf83e1f8_Snap.thumb.PNG.ea9f73ba3cf99d2f1d6f43533c2ebbdb.PNG" style="width: 750px; height: auto;"></a>
</p>

<p>
	نلاحظ تكرار الحزمة مرتين ولكن مع وجود رقم إصدار مختلف لكل حزمة، تمتلك إحدى الحزمتين التسمية "معطل disabled" وهي ما يميز الحزمة الإضافية الواجب حذفها بهدف تحرير مساحة على القرص.
</p>

<p>
	إذا لم يرغب المستخدم في اتباع الطريقة اليدوية، فتوجد طريقة أخرى آلية بفضل سكريبت فعال كتبه آلان بوب Alan Pope أثناء عمله في فريق Snapcraft، ولكن يجب الانتباه أن هذا السكريبت قد لا يعمل عندما تكون لغة الحاسوب فرنسية مثلًا وبعض اللغات الأخرى لأن التسمية "disabled" في عمود الملاحظات Notes من المحتمل أن تكون مختلفة في لغات أخرى عن التسمية في اللغة الانجليزية.
</p>

<p>
	لإنشاء وتشغيل سكريبت في صدفة bash، يجب بدايةً إنشاء ملف جديد باسم clean-snap.sh ثم كتابة الأسطر الآتية فيه:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_6634_15" style="">
<span class="pun">#!</span><span class="str">/bin/</span><span class="pln">bash
</span><span class="pun">#</span><span class="pln"> </span><span class="typ">Removes</span><span class="pln"> old revisions of snaps
</span><span class="pun">#</span><span class="pln"> CLOSE ALL SNAPS BEFORE RUNNING THIS
</span><span class="kwd">set</span><span class="pln"> </span><span class="pun">-</span><span class="pln">eu
snap list </span><span class="pun">--</span><span class="pln">all </span><span class="pun">|</span><span class="pln"> awk </span><span class="str">'/disabled/{print $1, $3}'</span><span class="pln"> </span><span class="pun">|</span><span class="pln">
    </span><span class="kwd">while</span><span class="pln"> read snapname revision</span><span class="pun">;</span><span class="pln"> </span><span class="kwd">do</span><span class="pln">
        snap remove </span><span class="str">"$snapname"</span><span class="pln"> </span><span class="pun">--</span><span class="pln">revision</span><span class="pun">=</span><span class="str">"$revision"</span><span class="pln">
    done</span></pre>

<p>
	ثم حفظ ما سبق وإغلاق محرر النصوص.
</p>

<p>
	لتشغيل السكريبت يجب بدايةً حفظه في مجلد المنزل home directory ثم تشغيل <a href="https://academy.hsoub.com/devops/servers/%D9%85%D8%A7-%D9%87%D9%88-%D8%B3%D8%B7%D8%B1-%D8%A7%D9%84%D8%A3%D9%88%D8%A7%D9%85%D8%B1-%D8%9F-r353/" rel="">سطر الأوامر</a> في أوبنتو وتنفيذ الأمر التالي:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_6634_17" style="">
<span class="pln">sudo bash clean</span><span class="pun">-</span><span class="pln">snap</span><span class="pun">.</span><span class="pln">sh</span></pre>

<p>
	توضح الصورة التالية مخرجات الأمر عارضةً عملية إزالة إصدارات حزم سناب القديمة:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="99777" href="https://academy.hsoub.com/uploads/monthly_2022_05/628e0c9d01263_.PNG.64e0792a610b5dcf428162676900ac2a.PNG" rel=""><img alt="إزالة إصدارات حزم سناب القديمة.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="99777" data-unique="du44n9ue6" src="https://academy.hsoub.com/uploads/monthly_2022_05/628e0ca2b77d9_.thumb.PNG.cd5abb5b91f63adc42c1853bc90c353e.PNG" style="width: 600px; height: auto;"></a>
</p>

<p>
	نعيد التحقق من حجم المجلد على القرص باستخدام الأمر التالي:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_6634_27" style="">
<span class="pln">abhishek@its</span><span class="pun">-</span><span class="pln">foss</span><span class="pun">:~</span><span class="pln">$ sudo du </span><span class="pun">-</span><span class="pln">sh </span><span class="pun">/</span><span class="kwd">var</span><span class="pun">/</span><span class="pln">lib</span><span class="pun">/</span><span class="pln">snapd
</span><span class="lit">3.9G</span><span class="pln"> </span><span class="pun">/</span><span class="kwd">var</span><span class="pun">/</span><span class="pln">lib</span><span class="pun">/</span><span class="pln">snapd</span></pre>

<p>
	نلاحظ انخفاض حجم المجلد، ويمكن استخدام هذه الطريقة متى ما احتاج المستخدم التحقق من حجم المجلد.
</p>

<h2>
	آلية عمل سكريبت حذف حزم سناب القديمة
</h2>

<p>
	تُمرر نتيجة تنفيذ الأمر "snap list –all" إلى الأمر awk، حيث <a href="https://academy.hsoub.com/devops/linux/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D9%84%D8%BA%D8%A9-awk-%D9%84%D9%84%D8%AA%D8%B9%D8%A7%D9%85%D9%84-%D9%85%D8%B9-%D8%A7%D9%84%D9%86%D8%B5%D9%88%D8%B5-%D9%81%D9%8A-%D9%84%D9%8A%D9%86%D9%83%D8%B3-r133/" rel="">تعتبر Awk أداة فعالة للتعامل مع النصوص</a> استعملها السكريبت، ثم يبحث الجزء awk '/disabled/{print $1, $3}‎' عن الكلمة 'disabled' (التي من الممكن أن تختلف بحسب لغة النظام كما أشرنا سابقًا) في كل صف وعندما يعثر عليها يقوم باستخراج العمودين الأول والثالث والذي يُمرر بدوره إلى مجموعة من أوامر القراءة والحلقات التكرارية، فيعطي أمر القراءة Read command قيمة العمود الأول لاسم الحزمة snapname وقيمة العمود الثالث لمتغير المراجعة revision variable.
</p>

<p>
	يبدأ الآن تشغيل أمر إزالة سناب باستخدام المتغيرين السابقين، وتستمر حلقة while التكرارية بالعمل طالما أنها تجد حزمة معطلة أي تحتوي على الكلمة 'disabled' في تفاصيلها.
</p>

<p>
	آلية عمل السكريبت سهلة بالنسبة للمستخدمين الذين يعلمون كيفية كتابة السكريبت في الصدفة shell scripting، بينما ستبدو الآلية معقدة لمن لا تتوفر لهم هذه المعرفة أما إن كنت جديدًا على بيئة الصدفة وكتابة السكربتات، فننصحك بقراءة سلسلة <a href="https://academy.hsoub.com/tags/%D9%85%D8%AF%D8%AE%D9%84%20%D8%A5%D9%84%D9%89%20%D9%83%D8%AA%D8%A7%D8%A8%D8%A9%20%D8%B3%D9%83%D8%B1%D8%A8%D8%AA%D8%A7%D8%AA%20%D8%A7%D9%84%D8%B5%D8%AF%D9%81%D8%A9/" rel="">مدخل إلى كتابة سكربتات الصدفة</a>.
</p>

<h2>
	استعادة الغيغابايتات GBs الخاصة بالمستخدم
</h2>

<p>
	ينصح البعض بتحديد قيمة الاحتفاظ retention value الخاصة بحزمة سناب بالقيمة 2، ويتم ذلك باستخدام الأمر الآتي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_6634_29" style="">
<span class="pln">sudo snap set system refresh</span><span class="pun">.</span><span class="pln">retain</span><span class="pun">=</span><span class="lit">2</span></pre>

<p>
	ولكن يقوم سناب بذلك تلقائيًا الآن لذا لا توجد حاجة لها، إذ يخزن سناب نسختين من كل حزمة وفي حال نفاذ المساحة يمكن إعادة ما سبق والتخلص من إصدار الحزمة الإضافية لتحرير المساحة.
</p>

<p>
	ترجمة -وبتصرف- للمقال <a href="https://itsfoss.com/clean-snap-packages/" rel="external nofollow">How to Clean Up Snap Package Versions in Linux [Quick Tip]</a> لصاحبه Abhishek Prakash.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
<li>
		<a href="https://academy.hsoub.com/devops/linux/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AA%D9%82%D8%B3%D9%8A%D9%85-%D9%88%D8%AA%D9%87%D9%8A%D8%A6%D8%A9-%D8%A3%D8%AC%D9%87%D8%B2%D8%A9-%D8%A7%D9%84%D8%AA%D8%AE%D8%B2%D9%8A%D9%86-%D9%81%D9%8A-%D9%84%D9%8A%D9%86%D9%83%D8%B3-r300/" rel="">كيفية تقسيم وتهيئة أجهزة التخزين في لينكس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/linux/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A5%D8%AC%D8%B1%D8%A7%D8%A1-%D9%85%D9%87%D8%A7%D9%85-%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D8%A3%D8%AC%D9%87%D8%B2%D8%A9-%D8%A7%D9%84%D8%AA%D8%AE%D8%B2%D9%8A%D9%86-%D8%A7%D9%84%D8%A8%D8%B3%D9%8A%D8%B7%D8%A9-%D9%81%D9%8A-%D9%84%D9%8A%D9%86%D9%83%D8%B3-r302/" rel="">كيفية إجراء مهام إدارة أجهزة التخزين البسيطة في لينكس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/servers/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D9%85%D8%AF%D9%8A%D8%B1-%D9%88%D8%AD%D8%AF%D8%A7%D8%AA-%D8%A7%D9%84%D8%AA%D9%91%D8%AE%D8%B2%D9%8A%D9%86-%D8%A7%D9%84%D9%85%D9%86%D8%B7%D9%82%D9%8A%D9%91%D8%A9-%D9%81%D9%8A-%D9%86%D8%B8%D8%A7%D9%85-%D9%84%D9%8A%D9%86%D9%83%D8%B3-lvm-r333/" rel="">مدخل إلى مدير وحدات التّخزين المنطقيّة في نظام لينكس LVM</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/linux/%D8%AF%D9%84%D9%8A%D9%84-%D9%84%D9%81%D9%87%D9%85-%D8%AD%D8%A7%D9%88%D9%8A%D8%A7%D8%AA-%D9%84%D9%8A%D9%86%D9%83%D8%B3-%D9%88%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A7%D9%84%D8%AA%D8%B9%D8%A7%D9%85%D9%84-%D9%85%D8%B9%D9%87%D8%A7-r594/" rel="">دليل لفهم حاويات لينكس وكيفية التعامل معها</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">623</guid><pubDate>Wed, 25 May 2022 11:25:15 +0000</pubDate></item><item><title>&#x643;&#x64A;&#x641;&#x64A;&#x629; &#x627;&#x644;&#x62A;&#x62D;&#x642;&#x642; &#x645;&#x646; &#x645;&#x633;&#x627;&#x62D;&#x629; &#x627;&#x644;&#x642;&#x631;&#x635; &#x627;&#x644;&#x62D;&#x631;&#x629; &#x641;&#x64A; &#x646;&#x638;&#x627;&#x645; &#x644;&#x64A;&#x646;&#x643;&#x633; Linux</title><link>https://academy.hsoub.com/devops/linux/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A7%D9%84%D8%AA%D8%AD%D9%82%D9%82-%D9%85%D9%86-%D9%85%D8%B3%D8%A7%D8%AD%D8%A9-%D8%A7%D9%84%D9%82%D8%B1%D8%B5-%D8%A7%D9%84%D8%AD%D8%B1%D8%A9-%D9%81%D9%8A-%D9%86%D8%B8%D8%A7%D9%85-%D9%84%D9%8A%D9%86%D9%83%D8%B3-linux-r614/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_05/6282c0190ae9c_---------Linux.png.c5b4a3fd91958015d7f8a202e78992b5.png" /></p>

<p>
	يمكن إجراء التحقق من مقدار مساحة القرص الحرة في <a href="https://academy.hsoub.com/devops/linux/%D9%85%D8%A7-%D9%87%D9%88-%D9%86%D8%B8%D8%A7%D9%85-%D8%A7%D9%84%D8%AA%D8%B4%D8%BA%D9%8A%D9%84-%D9%84%D9%8A%D9%86%D9%83%D8%B3%D8%9F-r451/" rel="">نظام لينكس Linux</a> باستخدام <a href="https://academy.hsoub.com/devops/servers/%D9%85%D8%A7-%D9%87%D9%88-%D8%B3%D8%B7%D8%B1-%D8%A7%D9%84%D8%A3%D9%88%D8%A7%D9%85%D8%B1-%D8%9F-r353/" rel="">سطر الأوامر Terminal</a> أو بالاعتماد على <a href="https://academy.hsoub.com/programming/java/%D9%85%D9%82%D8%AF%D9%85%D8%A9-%D8%A5%D9%84%D9%89-%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D9%88%D8%A7%D8%AC%D9%87%D8%A7%D8%AA-%D8%A7%D9%84%D9%85%D8%B3%D8%AA%D8%AE%D8%AF%D9%85-%D8%A7%D9%84%D8%B1%D8%B3%D9%88%D9%85%D9%8A%D8%A9-gui-%D9%81%D9%8A-%D8%AC%D8%A7%D9%81%D8%A7-r1070/" rel="">واجهة رسومية GUI</a>.
</p>

<h2>
	الطريقة الأولى: باستخدام سطر الأوامر
</h2>

<p>
	إن أبسط طريقة هي استخدام الأمر <code>df</code>، وهو اختصار المصطلح disk-free أي المساحة الفارغة على القرص، ويكتب الأمر كالآتي:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_6662_13" style="">
<span class="pln">df </span><span class="pun">-</span><span class="pln">h</span></pre>

<p>
	يساعد الخيار h- على عرض المساحة الفارغة على القرص بتنسيق ميغابايت وغيغابايت والذي يجعله قابلًا للقراءة والفهم من المستخدم، وتسمى هذه الصيغة human-readable أي صيغة يمكن للبشر قراءتها والمقصود به المغاير للآلة.
</p>

<p>
	تظهر الصورة التالية نتيجة تنفيذ الأمر <code>df</code> والمطبق في نظام Dell XPS، والذي يحوي نسخة لينكس مثبتة عليه مع قرص مشفر
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="98895" href="https://academy.hsoub.com/uploads/monthly_2022_05/6282c0adab980_df.PNG.ce48c84b66438e936780600fc07ea5e8.PNG" rel=""><img alt="التحقق من مساحة القرص الحرة باستخدام الأمر df في لينكس.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="98895" data-unique="x61n4nry3" src="https://academy.hsoub.com/uploads/monthly_2022_05/6282c0af8e448_df.thumb.PNG.4a784a7ce50a599ad9bf08a175b94ce5.PNG" style="width: 600px; height: auto;"></a>
</p>

<p>
	قد يكون الخرج الظاهر السابق غير واضح بعض الشيء للعديد من المستخدمين، لذا فيما يلي شرح لبعض التفاصيل.
</p>

<p>
	عند استخدام الأمر<code>df</code> للتحقق من مقدار مساحة القرص الحرة في لينكس، يعرض الخرج بعض المعلومات المتعلقة بأنظمة الملفات file systems وحجمها الكلي بالإضافة إلى المساحة المستخدمة على القرص ومساحة القرص الخالية.
</p>

<p>
	يجب أن تظهر الأقراص الفعلية عادةً بإحدى الأشكال التالية:
</p>

<ul>
<li>
		/dev/sda
	</li>
	<li>
		/dev/sdb
	</li>
	<li>
		/dev/nvme0n1p
	</li>
</ul>
<p>
	لا تعد الأشكال السابقة معيارية ولكنها تساعد على تحديد القرص الفعلي بدقة بين بقية الأقراص.
</p>

<p>
	قد يُجزَّئ القرص إلى عدة أقسام يمكن الإقلاع من أحدها مثل: EFI ،root ،swap ،home وغيرها، عندها تنعكس هذه الأقسام برقم في نهاية اسم القرص مثل: dev/sda1/ أو dev/nvme0n1p2/ وما إلى ذلك.
</p>

<p>
	يمكن تخصيص كل قسم لهدف معين وذلك بواسطة نقطة وصل mount point تصل القسم بنظام التشغيل وتكون عبارة عن مجلد أو ملف يمكن من خلاله الوصول إلى نظام الملفات، ويتم وصل الجذر Root على المسار /، ويتم وصل قسم EFI عبر المسار boot/EFI/ وهكذا.
</p>

<p>
	في الحالة الموضحة في الصورة التالية، خُصصت نسبة 41٪ من مساحة القرص البالغة 232 جيجابايت للجذر، أما في حال وجود قسمين أو ثلاثة أقسام كبيرة الحجم مثل الجذر والمجلد الرئيسي home فيجب عندها القيام ببعض الحسابات الدقيقة لتخصيص المساحة المناسبة لكل منها.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="98894" href="https://academy.hsoub.com/uploads/monthly_2022_05/6282c08d5cbae_df.PNG.8b37dea6e1cf06d8dd46555efdb3fb59.PNG" rel=""><img alt="تفاصيل خرج الأمر df.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="98894" data-unique="w2ifet9sd" src="https://academy.hsoub.com/uploads/monthly_2022_05/6282c08f2211a_df.thumb.PNG.b5bb5b13f54dff209c3477f7762b1818.PNG" style="width: 650px; height: auto;"></a>
</p>

<p>
	يجدر الإشارة إلى الأقسام التالية:
</p>

<ul>
<li>
		tmpfs: وهو اختصار temporary file system أي نظام الملفات المؤقت والذي يستخدم لحفظ الملفات في الذاكرة الافتراضية وليس من الضروري استخدامه.
	</li>
	<li>
		udev: يُستخدم نظام الملفات udev لتخزين المعلومات المتعلقة بالأجهزة الموصولة بحاسوب المستخدم كبطاقة الشبكة وسواقة الأقراص المضغوطة ومنفذ USB، أيضًا ليس من الضروري استخدامه.
	</li>
	<li>
		dev/loop/: هي عبارة عن أجهزة تكرارية loop devices يلاحظ وجود الكثير منها عند التحقق من مساحة القرص الحرة في أوبنتو وذلك بسبب تطبيقات سناب Snap.
	</li>
</ul>
<p>
	تعتبر الأجهزة التكرارية أجهزة افتراضية تسمح بالوصول إلى الملفات العادية كأجهزة كتلية block devices، وتساعد الأجهزة التكرارية على عزل تطبيقات سناب في أقراصها الافتراضية الخاصة، وطالما كان موقعهم ضمن الجذر فلا توجد حاجة لحساب مساحة القرص المستخدمة بشكل منفصل.
</p>

<h3>
	معالجة المساحة المفقودة على القرص
</h3>

<p>
	يجب بدايةً التحقق فيما إذا كانت الأقسام والأقراص موصولة mounted، إذ يعرض الأمر df مساحة القرص لأنظمة الملفات الموصولة فقط، في حال استخدام أكثر من <a href="https://academy.hsoub.com/devops/linux/%d8%a7%d9%84%d8%af%d9%84%d9%8a%d9%84-%d8%a7%d9%84%d9%86%d9%87%d8%a7%d8%a6%d9%8a-%d9%84%d8%a7%d8%ae%d8%aa%d9%8a%d8%a7%d8%b1-%d8%aa%d9%88%d8%b2%d9%8a%d8%b9%d8%a9-%d9%84%d9%8a%d9%86%d9%83%d8%b3-r48/" rel="">توزيعة لينكس</a> واحدة (أو <a href="https://academy.hsoub.com/files/24-%D8%A3%D9%86%D8%B8%D9%85%D8%A9-%D8%A7%D9%84%D8%AA%D8%B4%D8%BA%D9%8A%D9%84-%D9%84%D9%84%D9%85%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D9%86/" rel="">أنظمة تشغيل</a> أخرى) على نفس القرص، أو وجود عدة أقراص على النظام فيجب وصلها أولًا لمعرفة المساحة الخالية المتوفرة على تلك الأقسام والأقراص.
</p>

<p>
	على سبيل المثال في الصورة التالية يحتوي حاسوب Intel NUC المصغر على قرصين SSD و 4 أو 5 توزيعات لينكس مثبتة عليهما، وتظهر الأقراص الإضافية عندما تُوصل فقط.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="98896" href="https://academy.hsoub.com/uploads/monthly_2022_05/6282c0dd9001d_.PNG.34f2526ecd3a93ac4898ee81cfea2301.PNG" rel=""><img alt="قبل تثبيت الأقراص.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="98896" data-unique="thf5fhpfe" src="https://academy.hsoub.com/uploads/monthly_2022_05/6282c0de7235b_.thumb.PNG.367a707d26632e50595c06446f1ada76.PNG" style="width: 600px; height: auto;"></a>
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="98892" href="https://academy.hsoub.com/uploads/monthly_2022_05/6282c06e0d8c7_.PNG.bf14620bd503304443843c91a763e256.PNG" rel=""><img alt="بعد تثبيت الأقراص.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="98892" data-unique="xj1huf3a5" src="https://academy.hsoub.com/uploads/monthly_2022_05/6282c06f4741e_.thumb.PNG.21b8b12d5d1f3c0e2fb7fba77cd56342.PNG" style="width: 600px; height: auto;"></a>
</p>

<p>
	يمكن استخدام الأمر lsblk لرؤية جميع الأقراص والأقسام الموجودة على النظام كما في الشكل التالي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="98890" href="https://academy.hsoub.com/uploads/monthly_2022_05/6282c037bb37f_lsblk.PNG.9ae0cb02b69def0a5e13bb6733049477.PNG" rel=""><img alt="استخدام الأمر lsblk.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="98890" data-unique="6huzw16vy" src="https://academy.hsoub.com/uploads/monthly_2022_05/6282c0394b2f0_lsblk.thumb.PNG.2adbeac0c78f906fd89e4a2dc0e1cf8d.PNG" style="width: 600px; height: auto;"></a>
</p>

<p>
	لوصل القرص يجب معرفة اسمه فقط ويتم الوصل كما يلي:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_6662_23" style="">
<span class="pln">sudo mount </span><span class="pun">/</span><span class="pln">dev</span><span class="pun">/</span><span class="pln">sdb2 </span><span class="pun">/</span><span class="pln">mnt</span></pre>

<h2>
	الطريقة 2: بالاعتماد على واجهة رسومية GUI
</h2>

<p>
	تعد هذه الطريقة في أوبنتو أسهل بكثير من الطريقة السابقة، حيث تتحقق من مقدار مساحة القرص الحرة في لينكس بيانيًا ويوجد أداتين لهذا الغرض هما الأداة Disk Usage Analyzer والأداة GNOME Disks.
</p>

<h3>
	الأداة Disk Usage Analyzer
</h3>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="98887" href="https://academy.hsoub.com/uploads/monthly_2022_05/6282c0185565b_DiskUsageAnalyzer.PNG.dd962130d12073c34efb7d8823f564e8.PNG" rel=""><img alt="Disk Usage Analyzer.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="98887" data-unique="8y6uynsds" src="https://academy.hsoub.com/uploads/monthly_2022_05/6282c01bbde7f_DiskUsageAnalyzer.thumb.PNG.4cda5d1c03a47ffb5818cd7478d0f3b3.PNG" style="width: 650px; height: auto;"></a>
</p>

<p>
	استخدامها سهل للغاية، حيث تعرض جميع الأقراص والأقسام الفعلية، وقد يحتاج المستخدم إلى وصل بعض الأقسام من خلال النقر عليها، إذ تعرض الأداة استخدام القرص لجميع الأقسام الموصولة.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="98891" href="https://academy.hsoub.com/uploads/monthly_2022_05/6282c05a015ce_.PNG.0f49928ecd4ff240775ba2b5a66512f8.PNG" rel=""><img alt="التحقق من مساحة القرص.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="98891" data-unique="6kz2iplv7" src="https://academy.hsoub.com/uploads/monthly_2022_05/6282c05c0aa57_.thumb.PNG.c236a93d2e588ab9df5ac0027f6501ef.PNG" style="width: 650px; height: auto;"></a>
</p>

<h3>
	2. الأداة GNOME Disks
</h3>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="98888" href="https://academy.hsoub.com/uploads/monthly_2022_05/6282c02a30fb1_GNOMEDisksTool.PNG.850fa93e74cbc9f2897b461fc2ac4bdb.PNG" rel=""><img alt="GNOME Disks Tool.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="98888" data-unique="1bwgx4i8s" src="https://academy.hsoub.com/uploads/monthly_2022_05/6282c02a30fb1_GNOMEDisksTool.PNG.850fa93e74cbc9f2897b461fc2ac4bdb.PNG" style="width: 650px; height: auto;"></a>
</p>

<p>
	تعد GNOME Disks أداة مفيدة واستخدامها كما يلي:
</p>

<ul>
<li>
		تشغيل الأداة
	</li>
	<li>
		تحديد أحد الأقراص
	</li>
	<li>
		اختيار أحد الأقسام لمعرفة المساحة الحرة على القرص
	</li>
</ul>
<p>
	ملاحظة: في حال لم يظهر القسم، يمكن وصله ببساطة وذلك عن طريق النقر على رمز التشغيل play icon كما في الصورة التالية:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="98889" href="https://academy.hsoub.com/uploads/monthly_2022_05/6282c02c72111_GNOME.PNG.884425a4f66cf335ce71317acbea9d33.PNG" rel=""><img alt="استخدام GNOME.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="98889" data-unique="3k6lt1bc6" src="https://academy.hsoub.com/uploads/monthly_2022_05/6282c02c72111_GNOME.PNG.884425a4f66cf335ce71317acbea9d33.PNG" style="width: 550px; height: auto;"></a>
</p>

<p>
	توفر غالبية بيئات سطح المكتب الرئيسية أنواعًا من الأدوات البيانية للتحقق من استخدام مساحة القرص في لينكس.
</p>

<p>
	ترجمة -وبتصرف- للمقال <a href="https://itsfoss.com/check-free-disk-space-linux/" rel="external nofollow">How to Check Free Disk Space on Linux [Terminal and GUI Methods]</a> لصاحبه Abhishek Prakash.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
<li>
		<a href="https://academy.hsoub.com/devops/linux/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D9%85%D8%B5%D8%B7%D9%84%D8%AD%D8%A7%D8%AA-%D9%88%D9%85%D9%81%D8%A7%D9%87%D9%8A%D9%85-%D8%A7%D9%84%D8%AA%D8%AE%D8%B2%D9%8A%D9%86-%D9%81%D9%8A-%D9%84%D9%8A%D9%86%D9%83%D8%B3-r301/" rel="">مدخل إلى مصطلحات ومفاهيم التخزين في لينكس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/linux/%d8%a7%d9%84%d8%af%d9%84%d9%8a%d9%84-%d8%a7%d9%84%d9%86%d9%87%d8%a7%d8%a6%d9%8a-%d9%84%d8%a7%d8%ae%d8%aa%d9%8a%d8%a7%d8%b1-%d8%aa%d9%88%d8%b2%d9%8a%d8%b9%d8%a9-%d9%84%d9%8a%d9%86%d9%83%d8%b3-r48/" rel="">الدليل النهائي لاختيار توزيعة لينكس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/linux/%d9%85%d9%82%d8%af%d9%91%d9%85%d8%a9-%d8%a5%d9%84%d9%89-%d8%a3%d8%af%d9%88%d8%a7%d8%aa-%d8%b6%d8%ba%d8%b7-%d8%a7%d9%84%d9%85%d9%84%d9%81%d9%91%d8%a7%d8%aa-%d8%b9%d9%84%d9%89-%d9%86%d8%b8%d8%a7%d9%85-%d9%84%d9%8a%d9%86%d9%83%d8%b3-r67/" rel="">مقدّمة إلى أدوات ضغط الملفّات على نظام لينكس</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">614</guid><pubDate>Mon, 16 May 2022 21:46:55 +0000</pubDate></item><item><title>&#x645;&#x631;&#x62C;&#x639; &#x625;&#x644;&#x649; &#x623;&#x634;&#x647;&#x631; &#x623;&#x648;&#x627;&#x645;&#x631; &#x644;&#x64A;&#x646;&#x643;&#x633;</title><link>https://academy.hsoub.com/devops/linux/%D9%85%D8%B1%D8%AC%D8%B9-%D8%A5%D9%84%D9%89-%D8%A3%D8%B4%D9%87%D8%B1-%D8%A3%D9%88%D8%A7%D9%85%D8%B1-%D9%84%D9%8A%D9%86%D9%83%D8%B3-r615/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_05/628fb5dcdb4ef_----.png.e99ff5da7debba77b62ff66d20e9e10a.png" /></p>

<p>
	هناك المئات بل آلاف الأوامر المتاحة ضمن <a href="https://academy.hsoub.com/devops/linux/%D9%85%D8%A7-%D9%87%D9%88-%D9%86%D8%B8%D8%A7%D9%85-%D8%A7%D9%84%D8%AA%D8%B4%D8%BA%D9%8A%D9%84-%D9%84%D9%8A%D9%86%D9%83%D8%B3%D8%9F-r451/" rel="">نظام لينكس</a>، ومن الصعب تذكُّر كل تلك الأوامر خصوصًا على المستخدم المبتدئ. لكن لا داعي لتذكر جميع الأوامر، إذ يمكنك حفظ الأوامر التي تستخدمها على نحوٍ متكررٍ فقط.
</p>

<p>
	يستعرض في هذا المقال قائمةً <a href="https://academy.hsoub.com/devops/linux/%D8%A3%D9%87%D9%85-20-%D8%A3%D9%85%D8%B1%D8%A7-%D9%81%D9%8A-%D9%86%D8%B8%D8%A7%D9%85-%D8%A7%D9%84%D8%AA%D8%B4%D8%BA%D9%8A%D9%84-%D9%84%D9%8A%D9%86%D9%83%D8%B3-%D9%84%D8%AC%D9%85%D9%8A%D8%B9-%D8%A7%D9%84%D9%85%D8%B3%D8%AA%D8%AE%D8%AF%D9%85%D9%8A%D9%86-r585/" rel="">بأوامر لينكس</a> الشائعة، بحيث يمكنك استخدامها مرجعًا لك لاحقًا، فهي مناسبةٌ لكلٍ من المستخدم العادي وصاحب الخبرة.
</p>

<h2>
	أوامر أساسية في لينكس
</h2>

<p>
	سنستعرض في هذا القسم بعض الأوامر الأساسية في لينكس مع أمثلةٍ عليها.
</p>
<style type="text/css">
table {
    width: 100%;
}

thead {
    vertical-align: middle;
    text-align: center;
} 

td, th {
    border: 1px solid #dddddd;
    text-align: right;
    padding: 8px;
    text-align: inherit;

}
tr:nth-child(even) {
    background-color: #dddddd;
}</style>
<table>
<thead><tr>
<th>
				<strong>الأمر</strong>
			</th>
			<th>
				<strong>الوصف</strong>
			</th>
		</tr></thead>
<tbody>
<tr>
<td>
				<code>hostnamectl</code>
			</td>
			<td>
				عرض معلومات حول النظام، مثل نظام التشغيل والنواة ونسخة الإصدار الحالي
			</td>
		</tr>
<tr>
<td>
				<code>date</code>
			</td>
			<td>
				عرض التاريخ والوقت الحالي للنظام
			</td>
		</tr>
<tr>
<td>
				<code>hostname</code>
			</td>
			<td>
				عرض اسم المضيف للنظام
			</td>
		</tr>
<tr>
<td>
				<code>ifconfig</code>
			</td>
			<td>
				عرض عنوان IP وعنوان Mac للنظام
			</td>
		</tr>
<tr>
<td>
				<code>w</code>
			</td>
			<td>
				عرض المستخدمين المسجلين دخولهم إلى النظام
			</td>
		</tr>
<tr>
<td>
				<code>free -m</code>
			</td>
			<td>
				عرض المساحة الفارغة والمُستخدمة من الذاكرة ضمن النظام
			</td>
		</tr>
<tr>
<td>
				<code>top</code>
			</td>
			<td>
				عرض قائمة بالعمليات الجارية في الوقت الحالي
			</td>
		</tr>
<tr>
<td>
				<code>ls</code>
			</td>
			<td>
				عرض قائمة بالملفات والمجلدات الموجودة ضمن المجلد الحالي
			</td>
		</tr>
<tr>
<td>
				<code>ls -al</code>
			</td>
			<td>
				عرض كل الملفات والمجلدات بما فيها الملفات المخفية، ومعلومات عنها، مثل الأذونات والحجم واسم المالك لها
			</td>
		</tr>
<tr>
<td>
				<code>cd</code>
			</td>
			<td>
				تغيير المجلد الحالي إلى المجلد الرئيسي
			</td>
		</tr>
<tr>
<td>
				<code>.. cd</code>
			</td>
			<td>
				تغيير المجلد الحالي إلى المجلد الأب
			</td>
		</tr>
<tr>
<td>
				<code>cat filename</code>
			</td>
			<td>
				عرض محتويات الملف
			</td>
		</tr>
<tr>
<td>
				<code>cat file1 file2 &gt; file3</code>
			</td>
			<td>
				دمج الملفات المُسماة file1 و file2 وتخزين الخرج في ملف جديد بالاسم file3
			</td>
		</tr>
<tr>
<td>
				<code>tail filename</code>
			</td>
			<td>
				عرض آخر 10 أسطر من الملف
			</td>
		</tr>
<tr>
<td>
				<code>head filename</code>
			</td>
			<td>
				عرض أول 10 أسطر من الملف
			</td>
		</tr>
<tr>
<td>
				<code>mv oldfile newfile</code>
			</td>
			<td>
				إعادة تسمية ملف
			</td>
		</tr>
<tr>
<td>
				<code>rm filename</code>
			</td>
			<td>
				حذف ملف
			</td>
		</tr>
<tr>
<td>
				<code>mkdir dirname</code>
			</td>
			<td>
				إنشاء مجلد جديد
			</td>
		</tr>
<tr>
<td>
				<code>rm -rf dirname</code>
			</td>
			<td>
				حذف مجلد
			</td>
		</tr>
<tr>
<td>
				<code>history</code>
			</td>
			<td>
				عرض قائمة بجميع الأوامر المُستخدمة
			</td>
		</tr>
<tr>
<td>
				<code>clear</code>
			</td>
			<td>
				مسح محتوى الطرفية
			</td>
		</tr>
<tr>
<td>
				<code>shutdown -h now</code>
			</td>
			<td>
				إيقاف تشغيل النظام
			</td>
		</tr>
<tr>
<td>
				<code>reboot</code>
			</td>
			<td>
				إعادة تشغيل النظام
			</td>
		</tr>
</tbody>
</table>
<h2>
	أوامر إعداد الشبكة
</h2>

<p>
	يعرض الجدول التالي أشهر الأوامر المستعملة في <a href="https://academy.hsoub.com/devops/linux/%D8%B7%D8%B1%D9%8A%D9%82%D8%A9-%D8%B6%D8%A8%D8%B7-%D8%A7%D9%84%D8%B4%D8%A8%D9%83%D8%A9-%D9%81%D9%8A-%D9%86%D8%B8%D8%A7%D9%85-%D8%A7%D9%84%D8%AA%D8%B4%D8%BA%D9%8A%D9%84-%D9%84%D9%8A%D9%86%D9%83%D8%B3-r563/" rel="">إعدادات الشبكات في لينكس</a>:
</p>

<table></table>
<table>
<thead><tr>
<th>
				<strong>الأمر</strong>
			</th>
			<th>
				<strong>الوصف</strong>
			</th>
		</tr></thead>
<tbody>
<tr>
<td>
				<code>ip addr show أو ifconfig</code>
			</td>
			<td>
				عرض قائمة بكافة عناوين IP وواجهات الشبكة
			</td>
		</tr>
<tr>
<td>
				<code>ip addr add IP-Address dev eth1</code>
			</td>
			<td>
				إضافة عنوان IP مؤقت للواجهة eth1
			</td>
		</tr>
<tr>
<td>
				<code>netstat -pnltu</code>
			</td>
			<td>
				عرض قائمة بجميع المنافذ التي في حالة استماع
			</td>
		</tr>
<tr>
<td>
				<code>whois domainname</code>
			</td>
			<td>
				عرض معلومات أكثر عن اسم نطاقٍ ما
			</td>
		</tr>
<tr>
<td>
				<code>dig domainname</code>
			</td>
			<td>
				عرض معلومات <a href="https://academy.hsoub.com/devops/servers/%d9%85%d9%82%d8%af%d9%91%d9%85%d8%a9-%d8%a5%d9%84%d9%89-%d9%85%d9%8f%d8%b5%d8%b7%d9%8e%d9%84%d8%ad%d8%a7%d8%aa-%d9%88%d8%b9%d9%86%d8%a7%d8%b5%d8%b1-%d9%88%d9%85%d9%81%d8%a7%d9%87%d9%8a%d9%85-%d9%86%d8%b8%d8%a7%d9%85-%d8%a3%d8%b3%d9%85%d8%a7%d8%a1-%d8%a7%d9%84%d9%86%d8%b7%d8%a7%d9%82%d8%a7%d8%aa-r5/" rel="">DNS</a> عن اسم نطاقٍ ما
			</td>
		</tr>
<tr>
<td>
				<code>host domainname</code>
			</td>
			<td>
				تنفيذ أمر بحث عن عنوان IP الخاص باسم نطاقٍ ما
			</td>
		</tr>
<tr>
<td>
				<code>dig -x IP-Address</code>
			</td>
			<td>
				تنفيذ أمر بحث عكسي لعنوان IP
			</td>
		</tr>
<tr>
<td>
				<code>dig -x domainame</code>
			</td>
			<td>
				تنفيذ بحث عكسي لاسم نطاق ما
			</td>
		</tr>
<tr>
<td>
				<code>ping host-ip</code>
			</td>
			<td>
				التحقق من الاتصال بي مضيفين
			</td>
		</tr>
</tbody>
</table>
<h2>
	أوامر أذونات الملفات
</h2>

<p>
	نعرض في هذا القسم أهم الأوامر المستخدمة في إدارة أذونات الملفات وتقييد صلاحيات الوصول إليها:
</p>

<table>
<thead><tr>
<th>
				<strong>الأمر</strong>
			</th>
			<th>
				<strong>الوصف</strong>
			</th>
		</tr></thead>
<tbody>
<tr>
<td>
				<code>ls -l filename</code>
			</td>
			<td>
				عرض الأذونات الحالية للملف
			</td>
		</tr>
<tr>
<td>
				<code>chmod 777 filename</code>
			</td>
			<td>
				إضافة أذونات كاملة بالقراءة والكتابة والتنفيذ للجميع
			</td>
		</tr>
<tr>
<td>
				<code>chmod -R 777 dirname</code>
			</td>
			<td>
				إضافة أذونات كاملة للمجلد ولجميع مجلداته الفرعية
			</td>
		</tr>
<tr>
<td>
				<code>chmod 766 filename</code>
			</td>
			<td>
				إضافة أذونات كاملة للمالك وأذونات القراءة والكتابة للمجموعة المالكة والبقية
			</td>
		</tr>
<tr>
<td>
				<code>chmod -x filename</code>
			</td>
			<td>
				إزالة إذن التنفيذ من الملف
			</td>
		</tr>
<tr>
<td>
				<code>chown username filename</code>
			</td>
			<td>
				تغيير ملكية الملف
			</td>
		</tr>
<tr>
<td>
				<code>chown user:group filename</code>
			</td>
			<td>
				تغيير المالك والمجموعة المالكة للملف
			</td>
		</tr>
<tr>
<td>
				<code>chown -R user:group dirname</code>
			</td>
			<td>
				تغيير المالك والمجموعة المالكة للمجلد وجميع مجلداته الفرعية
			</td>
		</tr>
</tbody>
</table>
<h2>
	أوامر إدارة المستخدم والمجموعة
</h2>

<p>
	يُعد نظام لينكس نظامًا متعدد المستخدمين، أي يمكن لعدة مستخدمين الدخول والعمل على النظام في نفس الوقت. قد يحتاج مستخدمين أو أكثر أحيانًا إلى مشاركة الوصول إلى موارد النظام، مثل الملفات والمجلدات، وبالتالي يمكننا الاستفادة من إدارة المستخدمين والمجموعات لتحقيق ذلك.
</p>

<table>
<thead><tr>
<th>
				<strong>الأمر</strong>
			</th>
			<th>
				<strong>الوصف</strong>
			</th>
		</tr></thead>
<tbody>
<tr>
<td>
				<code>w</code>
			</td>
			<td>
				عرض كل المستخدمين المسجلين دخولهم
			</td>
		</tr>
<tr>
<td>
				<code>useradd username</code>
			</td>
			<td>
				إضافة حساب مستخدم جديد
			</td>
		</tr>
<tr>
<td>
				<code>userdel -r username</code>
			</td>
			<td>
				حذف حساب مستخدم
			</td>
		</tr>
<tr>
<td>
				<code>usermod [option] username</code>
			</td>
			<td>
				تعديل معلومات حساب المستخدم، مثل المجموعة والمجلد الرئيسي والصدفة وتاريخ انتهاء الصلاحية
			</td>
		</tr>
<tr>
<td>
				<code>usermod -aG groupname username</code>
			</td>
			<td>
				إضافة مستخدم إلى مجموعة
			</td>
		</tr>
<tr>
<td>
				<code>groupadd groupname</code>
			</td>
			<td>
				إنشاء مجموعة جديدة
			</td>
		</tr>
<tr>
<td>
				<code>groupdel groupname</code>
			</td>
			<td>
				حذف مجموعة
			</td>
		</tr>
<tr>
<td>
				<code>last</code>
			</td>
			<td>
				عرض معلومات عن آخر مستخدم سجَّل دخوله
			</td>
		</tr>
<tr>
<td>
				<code>id</code>
			</td>
			<td>
				عرض UID و GID للمستخدم الحالي
			</td>
		</tr>
</tbody>
</table>
<h2>
	أوامر إدارة العمليات
</h2>

<p>
	عند تنفيذ تطبيقٍ ما ضمن لينكس سيُعيَن معرّفٌ ID للعملية، ويُسمى أيضًا <abbr title="Process IDentifier | معرّف العملية أو البرنامج">PID</abbr>. تساعدنا إدارة العمليات في مراقبة وإدارة التطبيقات.
</p>

<table>
<thead><tr>
<th>
				<strong>الأمر</strong>
			</th>
			<th>
				<strong>الوصف</strong>
			</th>
		</tr></thead>
<tbody>
<tr>
<td>
				<code>ps</code>
			</td>
			<td>
				عرض كل العمليات الفعالة
			</td>
		</tr>
<tr>
<td>
				<table><tbody><tr>
<td>
								<code>ps -ef | grep processname </code>
							</td>
						</tr></tbody></table>
</td>
			<td>
				عرض معلومات عن عملية محددة
			</td>
		</tr>
<tr>
<td>
				<code>top</code>
			</td>
			<td>
				عرض وإدارة كافة العمليات في الوقت الحقيقي
			</td>
		</tr>
<tr>
<td>
				<code>pstree</code>
			</td>
			<td>
				عرض العمليات مثل مخطط شجرة
			</td>
		</tr>
<tr>
<td>
				<code>lsof</code>
			</td>
			<td>
				عرض قائمة بالملفات المفتوحة من قبل العمليات المُشغَّلة حاليًا
			</td>
		</tr>
<tr>
<td>
				<code>kill pid</code>
			</td>
			<td>
				إنهاء عمل عملية محددة بواسطة معرف العملية ID
			</td>
		</tr>
<tr>
<td>
				<code>killall processname</code>
			</td>
			<td>
				إنهاء عمل كل العمليات بواسطة الاسم
			</td>
		</tr>
<tr>
<td>
				<code>bg</code>
			</td>
			<td>
				عرض الأعمال المتوقفة أو التي تعمل في الخلفية
			</td>
		</tr>
<tr>
<td>
				<code>pidof processname</code>
			</td>
			<td>
				عرض المعرِّف <abbr title="Process IDentifier | معرّف العملية أو البرنامج">PID</abbr> لعمليةٍ ما
			</td>
		</tr>
</tbody>
</table>
<h2>
	أوامر إدارة القرص
</h2>

<p>
	سنستعرض في هذا القسم أوامر إدارة القرص، مثل إضافة وحذف الأقسام وتركيب قسم والتحقق من مساحة القرص الخالية وتهيئة القسم وأوامر أخرى.
</p>

<table>
<thead><tr>
<th>
				<strong>الأمر</strong>
			</th>
			<th>
				<strong>الوصف</strong>
			</th>
		</tr></thead>
<tbody>
<tr>
<td>
				<code>fdisk -l</code>
			</td>
			<td>
				عرض قائمة بكافة أقسام القرص
			</td>
		</tr>
<tr>
<td>
				<code>fdisk /dev/sda</code>
			</td>
			<td>
				إنشاء قسم جديد ضمن الجهاز dev/sda/
			</td>
		</tr>
<tr>
<td>
				<code>mkfs.ext4 /dev/sda1</code>
			</td>
			<td>
				تنسيق القسم المسمى dev/sda1/
			</td>
		</tr>
<tr>
<td>
				<code>fsck.ext4 /dev/sda1</code>
			</td>
			<td>
				فحص وإصلاح نظام الملفات من جميع الأخطاء
			</td>
		</tr>
<tr>
<td>
				<code>mount /dev/sda1 /mnt</code>
			</td>
			<td>
				وصل أي قسم ضمن أي مجلد
			</td>
		</tr>
<tr>
<td>
				<code>df -h</code>
			</td>
			<td>
				عرض المساحة الخالية لنظام الملفات المركب
			</td>
		</tr>
<tr>
<td>
				<code>df -i</code>
			</td>
			<td>
				عرض عدد <a href="https://academy.hsoub.com/devops/linux/%D9%85%D9%82%D8%AF%D9%85%D8%A9-%D8%A5%D9%84%D9%89-%D9%86%D8%B8%D8%A7%D9%85-%D9%85%D9%84%D9%81%D8%A7%D8%AA-%D9%84%D9%8A%D9%86%D9%83%D8%B3-ext4-r343/" rel="">مؤشرات الفهرسة inodes المُتاحة ضمن نظام الملفات</a>
			</td>
		</tr>
<tr>
<td>
				<code>du -hs</code>
			</td>
			<td>
				عرض حجم المجلد الحالي
			</td>
		</tr>
<tr>
<td>
				<code>lsblk</code>
			</td>
			<td>
				عرض معلومات عن الأجهزة المحظورة
			</td>
		</tr>
<tr>
<td>
				<code>lsusb -tv</code>
			</td>
			<td>
				عرض قائمة بكل الأجهزة من النوع USB
			</td>
		</tr>
<tr>
<td>
				<code>hdparm -tT /dev/sda</code>
			</td>
			<td>
				تنفيذ اختبار سريع للقراءة على القرص dev/sda/
			</td>
		</tr>
<tr>
<td>
				<code>badblocks -s /dev/sda</code>
			</td>
			<td>
				اختبار الكتل غير القابلة للقراءة على القرص dev/sda/
			</td>
		</tr>
</tbody>
</table>
<h2>
	أوامر إدارة الحزم
</h2>

<p>
	سنستعرض في هذا القسم قائمةً بأوامر تثبيت وحذف وإدارة الحزم في لينكس.
</p>

<table>
<thead><tr>
<th>
				<strong>الأمر</strong>
			</th>
			<th>
				<strong>وصف</strong>
			</th>
		</tr></thead>
<tbody>
<tr>
<td>
				<code>apt-get install packagename</code>
			</td>
			<td>
				تثبيت حزمة على توزيعةٍ مبنية على ديبيان Debian
			</td>
		</tr>
<tr>
<td>
				<code>apt-get remove packagename</code>
			</td>
			<td>
				حذف حزمة على توزيعةٍ مبنية على ديبيان
			</td>
		</tr>
<tr>
<td>
				<code>dpkg -l | grep -i installed</code>
			</td>
			<td>
				للحصول على قائمة بجميع الحزم على التوزيعات القائمة على دبيان
			</td>
		</tr>
<tr>
<td>
				<code>dpkg -i packagename.deb</code>
			</td>
			<td>
				تثبيت حزمة بلاحقة "deb."
			</td>
		</tr>
<tr>
<td>
				<code>apt-get update</code>
			</td>
			<td>
				تحديث المستودع على توزيعةٍ مبنية على ديبيان
			</td>
		</tr>
<tr>
<td>
				<code>apt-get upgrade packagename</code>
			</td>
			<td>
				تحديث حزمة معينة على توزيعةٍ مبنية على ديبيان
			</td>
		</tr>
<tr>
<td>
				<code>apt-get autoremove</code>
			</td>
			<td>
				إزالة جميع الحزم غير المرغوب بها على توزيعةٍ مبنية على ديبيان
			</td>
		</tr>
<tr>
<td>
				<code>yum install packagename</code>
			</td>
			<td>
				تثبيت حزمة على توزيعةٍ مبنية على RPM
			</td>
		</tr>
<tr>
<td>
				<code>yum remove packagename</code>
			</td>
			<td>
				حذف حزمة على توزيعةٍ مبنية على RPM
			</td>
		</tr>
<tr>
<td>
				<code>yum update</code>
			</td>
			<td>
				تحديث كافة حزم النظام إلى آخر إصدار على توزيعةٍ مبنية على RPM
			</td>
		</tr>
<tr>
<td>
				<code>yum list --installed</code>
			</td>
			<td>
				عرض قائمةٍ بالحزم المُثبتة على توزيعةٍ مبنية على RPM
			</td>
		</tr>
<tr>
<td>
				<code>yum list --available</code>
			</td>
			<td>
				عرض قائمةٍ بجميع الحزم المتاحة على توزيعةٍ مبنية على RPM
			</td>
		</tr>
</tbody>
</table>
<h2>
	أوامر الضغط وفك الضغط
</h2>

<p>
	تُعد Tar و Zip و Unzip أشهر الأدوات المساعدة <a href="https://academy.hsoub.com/devops/servers/%D9%85%D8%A7-%D9%87%D9%88-%D8%B3%D8%B7%D8%B1-%D8%A7%D9%84%D8%A3%D9%88%D8%A7%D9%85%D8%B1-%D8%9F-r353/" rel="">لسطر الأوامر</a> المستخدمة لضغط وفك ضغط الملفات والمجلدات في لينكس وإليك أشهر الأوامر التي يمكن توظيفها فيها:
</p>

<table>
<thead><tr>
<th>
				<strong>الأمر</strong>
			</th>
			<th>
				<strong>الوصف</strong>
			</th>
		</tr></thead>
<tbody>
<tr>
<td>
				<code>tar -cvf filename.tar filename</code>
			</td>
			<td>
				ضغط ملف إلى ملف أرشيف Tar
			</td>
		</tr>
<tr>
<td>
				<code>tar -xvf filename.tar</code>
			</td>
			<td>
				فك ضغط ملف Tar
			</td>
		</tr>
<tr>
<td>
				<code>tar -tvf filename.tar</code>
			</td>
			<td>
				عرض محتويات ملف Tar
			</td>
		</tr>
<tr>
<td>
				<code>tar -xvf filename.tar file1.txt</code>
			</td>
			<td>
				فك أرشفة ملف ما ضمن ملف Tar
			</td>
		</tr>
<tr>
<td>
				<code>tar -rvf filename.tar file2.txt</code>
			</td>
			<td>
				إضافة ملف إلى ملف Tar
			</td>
		</tr>
<tr>
<td>
				<code>zip filename.zip filename</code>
			</td>
			<td>
				ضغط ملف إلى ملف zip
			</td>
		</tr>
<tr>
<td>
				<code>zip filename.zip file1.txt file2.txt file3.txt</code>
			</td>
			<td>
				ضغط عدة ملفات إلى ملف zip
			</td>
		</tr>
<tr>
<td>
				<code>zip -u filename.zip file4.txt</code>
			</td>
			<td>
				إضافة ملف إلى ملف zip
			</td>
		</tr>
<tr>
<td>
				<code>zip -d filename.zip file4.txt</code>
			</td>
			<td>
				حذف ملف من ملف zip
			</td>
		</tr>
<tr>
<td>
				<code>unzip -l filename.zip</code>
			</td>
			<td>
				عرض محتويات ملف أرشيف zip
			</td>
		</tr>
<tr>
<td>
				<code>unzip filename.zip</code>
			</td>
			<td>
				فك ضغط ملف
			</td>
		</tr>
<tr>
<td>
				<code>unzip filename.zip -d /dirname</code>
			</td>
			<td>
				فك ضغط ملف إلى مجلدٍ محدّد
			</td>
		</tr>
</tbody>
</table>
<h2>
	الخاتمة
</h2>

<p>
	عرضنا في الأمثلة السابقة أكثر الاستخدامات شيوعًا لأوامر لينكس، إذ ستساعدك تلك الأمثلة في تنفيذ مهام إدارة النظام اليومية المتكررة.
</p>

<p>
	ترجمة -وبتصرف- للمقال "<a href="https://www.pcwdld.com/linux-commands-cheat-sheet" rel="external nofollow">Linux Commands Cheat Sheet</a>" لصاحبه Hitesh J.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
<li>
		<a href="https://academy.hsoub.com/devops/linux/%d8%a3%d9%84%d9%81-%d8%a8%d8%a7%d8%a1-%d8%a3%d8%b3%d8%a7%d8%b3%d9%8a%d8%a7%d8%aa-%d8%a7%d9%84%d8%aa%d8%b9%d8%a7%d9%85%d9%84-%d9%85%d8%b9-%d9%84%d9%8a%d9%86%d9%83%d8%b3-r61/" rel="">ألف باء أساسيات التعامل مع لينكس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/linux/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%B7%D8%B1%D9%81%D9%8A%D9%91%D8%A9-%D9%84%D9%8A%D9%86%D9%83%D8%B3-linux-terminal-r18/" rel="">مدخل إلى طرفيّة لينكس Linux Terminal</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">615</guid><pubDate>Sat, 21 May 2022 15:09:00 +0000</pubDate></item><item><title>&#x645;&#x62F;&#x62E;&#x644; &#x625;&#x644;&#x649; &#x635;&#x62F;&#x641;&#x629; &#x628;&#x627;&#x634; Bash</title><link>https://academy.hsoub.com/devops/linux/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%B5%D8%AF%D9%81%D8%A9-%D8%A8%D8%A7%D8%B4-bash-r606/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_04/6263302390eb9_--Bash-.png.30df4ad18f884635bc9c5017771d1c7e.png" /></p>

<p>
	تتعرف نواة Kernel <a href="https://academy.hsoub.com/files/24-%D8%A3%D9%86%D8%B8%D9%85%D8%A9-%D8%A7%D9%84%D8%AA%D8%B4%D8%BA%D9%8A%D9%84-%D9%84%D9%84%D9%85%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D9%86/" rel="">نظام التشغيل</a> سواءً كان Mach، أو BSD، أو لينكس Linux، أو NT على كافّة التجهيزات والعتاد المتصلة بالحاسوب عند إقلاعه باستخدام برنامج رئيسي، وتمكّنها من التواصل مع بعضها بعضًا، كما تضمن عملها على نحوٍ متناغم؛ إذ تؤدّي مجموعة التعليمات الرئيسية هذه مجموعةً من المهام، مثل إبقاء الحاسوب في حالة تشغيل وبوضعٍ آمن من خلال تشغيل مراوح التبريد دوريًا لتجنّب زيادة درجة الحرارة مثلًا، إضافةً لاستخدامها أنظمةً فرعيةً مسؤولةً عن مراقبة مساحة القرص الصلب أو التنبّه عند وصل أجهزة جديدة بالحاسوب وغيرها من العمليات. ولكن ليس هذا جلّ ما يفعله الحاسوب، وإلا كانت أهميته مثل أهمية الفرن في المنزل.
</p>

<p>
	أدرك علماء الحواسيب مبكرًا أهمية جعل البشر قادرين على التفاعل مع الحاسوب متى أرادوا ذلك، لذا طوروا <a href="https://academy.hsoub.com/certificates/redhat/rhcsa/%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA-%D8%A7%D9%84%D8%AA%D8%B9%D8%A7%D9%85%D9%84-%D9%85%D8%B9-%D8%A7%D9%84%D8%B5%D8%AF%D9%81%D8%A9-shell-%D9%81%D9%8A-red-hat-enterprise-linux-r40/?msclkid=374728dcc28e11eca7776c20c2cc2c20" rel="">صدفةً Shell</a> خاصّةً بالحواسيب العاملة على نظام يونكس Unix؛ إذ تعمل هذه الصدفة خارج النواة أو حولها مثل مبدأ الصدفة في الطبيعة، وقد شكّلت هذه الصدفة تطورًا مهمًا في الوقت الذي كان الناس فيه يوجهون الأوامر للحواسيب باستخدام البطاقات المثقبّة، وتعدّ Bash واحدةً من أكثر الصدفات shells شعبيةً وأكثرها فعاليةً وسهولةً.
</p>

<h2>
	باش Bash هو تطبيق
</h2>

<p>
	عندما تفتح طرفيةً Terminal تُشغِّل صدفة باش، مثل <a href="https://gitlab.gnome.org/GNOME/gnome-terminal" rel="external nofollow">GNOME Terminal</a>، أو <a href="https://konsole.kde.org/" rel="external nofollow">Konsole</a> في <a href="https://academy.hsoub.com/devops/linux/%D9%85%D8%A7-%D9%87%D9%88-%D9%86%D8%B8%D8%A7%D9%85-%D8%A7%D9%84%D8%AA%D8%B4%D8%BA%D9%8A%D9%84-%D9%84%D9%8A%D9%86%D9%83%D8%B3%D8%9F-r451/?msclkid=0e194281c28e11ec9ec9dd8504e91f39" rel="">نظام لينكس</a>، أو <a href="https://iterm2.com/" rel="external nofollow">iTerm2</a> في نظام ماك، أو إس macOS، فسُيرَحب بك غالبًا من خلال محث prompt؛ والذي يكون عادةً رمزًا وهو إشارة (<strong>$</strong>)، والذي يعني أن الصدفة بانتظارك لإدخال أمر. ولا بُد بالتأكيد من معرفة ما عليك كتابته من أوامر، وهذه الأوامر موضوعٌ مستقلٌ تمامًا كما سنرى.
</p>

<p>
	قد يكون التعبير التالي غير لطيف، إلّا أنّه يمثّل بدقة عدّة دلالاتٍ متعلقّة بمصطلح باش؛ إذ لا يميز كثيرٌ من المستخدمين الجدد بين مفهوم باش ومفهوم لينكس أو يونكس؛ فبالنسبة لهم باش هو الشاشة السوداء ذات الكتابة الخضراء التي تُكتب فيها الشيفرة اللازمة لإعطاء الأوامر للحاسوب. هذا المفهوم فيه خلطٌ ما بين صدفة باش والأوامر التي نكتبها داخل الصدفة، ومن المهم فهم أنهما مفهومان مستقلان؛ إذ أنّ باش مجرّد تطبيقٍ مهمته الرئيسية تشغيل التطبيقات الأخرى ضمن نفس النظام (من خلال أوامر).
</p>

<p>
	إذًا، يمكنك تعلّم باش في سياق تعلّم نظام التشغيل الذي يعمل عليه، ولكن لا يمكنك استخدامه فعليًا ما لم تتعرف على الأوامر.
</p>

<h2>
	أوامر نظام لينكس
</h2>

<p>
	تُخزَّن معظم الأوامر افتراضيًا في مجلدات النظام في الأنظمة المعتمدة على يونكس ولينكس (نظام BSD و macOS) في مساراتٍ، مثل "usr/bin/" و "bin/"، ولا تتعدى معرفة باش بهذه الأوامر لمعرفتك باللغة السنسكريتية، ولكن كما بإمكانك البحث وترجمة أي كلمة من اللغة السنسكريتية، يمكن لـلغة باش البحث عن الأوامر؛ فعند كتابتك لأمرٍ ما يبحث باش ضمن مسارات مجلدات محدّدة في نظامك ليرى ما إذا كان هذا الأمر موجودًا وعندها ينفذّه.
</p>

<p>
	تمثّل كلمة Bash بحد ذاتها أحد الأوامر، وهو الأمر الذي ينفّذ افتراضيًا عندما تفتح <a href="https://academy.hsoub.com/devops/linux/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%B7%D8%B1%D9%81%D9%8A%D9%91%D8%A9-%D9%84%D9%8A%D9%86%D9%83%D8%B3-linux-terminal-r18/?msclkid=42833dd9c28e11ec96f1dc8ee8cdf4f1" rel="">الطرفية</a> أو عند دخولك إلى محرر نصوص الطرفية Console (وهو جهازٌ حقيقي أو وهمي يستقبل الرسائل والتنبيهات من النواة ويسمح بتسجيل الدخول بوضع المستخدم الوحيد).
</p>

<p>
	يمكنك معرفة مكان تخزين أي أمرٍ بما في ذلك الأمر Bash على نظامك باستخدام الأمر <code>which</code> في الطرفية على النحو التالي:
</p>

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_934_14" style="">
<span class="pln">$ which bash
</span><span class="pun">/</span><span class="pln">usr</span><span class="pun">/</span><span class="pln">bin</span><span class="pun">/</span><span class="pln">bash
$ which ls
</span><span class="pun">/</span><span class="pln">usr</span><span class="pun">/</span><span class="pln">bin</span><span class="pun">/</span><span class="pln">ls</span></pre>

<p>
	تُبنى بعض الأوامر داخليًا ضمن باش نفسه، وتكون معظم الأوامر داخلية البناء خاصّةً بالبرمجة النصيّة لباش أو لإعدادات البيئة منخفضة المستوى، إلّا أنّ استخدام بعضٍ منها مفيدٌ في الوظائف العامّة، مثل الأمر <code>cd</code> الخاص بتغيير مسار المجلدات change directory. لا تظهر الأوامر داخلية البناء عندما تبحث عنها لأنّها غير موجودةٍ في مسار التنفيذ الاعتيادي:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_934_12" style="">
<span class="pln">$ which bash
which</span><span class="pun">:</span><span class="pln"> no cd in </span><span class="pun">(</span><span class="str">/usr/</span><span class="pln">local</span><span class="pun">/</span><span class="pln">bin</span><span class="pun">:</span><span class="str">/usr/</span><span class="pln">bin</span><span class="pun">:/</span><span class="pln">bin</span><span class="pun">:</span><span class="pln">
</span><span class="pun">[...]</span></pre>

<p>
	إلّا أنّ عدم العثور عليها في البحث لا يعني عدم توفرها، فهي مبنيةٌ ضمن باش الذي تشغلِّه أصلًا.
</p>

<h2>
	تشغيل باش
</h2>

<p>
	توفّر معظم توزيعات لينكس ويونكس صدفة باش افتراضيًا، نظرًا لكون باش معروفٌ وشعبي جدًا، إضافةً لامتلاكه كثيرًا من الوظائف المريحة التي لا توفرّها الصدفات الأخرى؛ إلّا أنّ بعض الأنظمة توفّر حافظةً أُخرى افتراضيًا؛ ولمعرفة فيما إذا كانت الحافظة لديك من نوع باش، ما عليك سوى استخدام الأمر <code>echo</code> مع متغير variable خاص يُظهر اسم العملية المنفّذة حاليًا:
</p>

<pre class="ipsCode prettyprint lang-perl prettyprinted" id="ips_uid_934_20" style="">
<span class="pln">$ echo $0
bash</span></pre>

<p>
	إذا كان باش غير متوفّر لديك ورغبت بتجربته، فمن الممكن تنزيله وتثبيته من مركز إدارة البرمجيات لديك، أو بإمكانك استخدام مدير الحزم Chocolatey إذا كان نظام التشغيل لديك ويندوز Windows؛ أو Homebrew في حال كان نظامك ماك أو إس؛ وفي حال فشل كل الطرق السابقة، فلا بُد من زيارة <a href="http://www.gnu.org/software/bash/" rel="external nofollow">الصفحة الرئيسية</a> لباش على الإنترنت للحصول على مزيدٍ من المعلومات.
</p>

<h2>
	العمل في باش
</h2>

<p>
	واجهة باش متوفرّةٌ في حاسوبك، فهي ليست حكرًا على مديري الخوادم أو المبرمجين، كما أنها قادرةٌ على أن تحل محل سطح مكتبك وتطبيقات تحرير النصوص والرسوميات وغيرها؛ إذ يستخدم الأشخاص باش أكثر من استخدامهم لتطبيقات سطح المكتب.
</p>

<p>
	يوجد المئات من التعليمات المتاحة لأنظمة لينكس ويونكس التي ستفاجئك بتنوعها؛ إذ يمكنك مثلًا باستخدام باش اقتصاص وإعادة تعيين حجم صورة دون فتح الصورة ضمن عارضٍ أو محرر صور:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_934_18" style="">
<span class="pln">$ mogrify </span><span class="pun">-</span><span class="pln">geometry </span><span class="lit">1600</span><span class="pun">^</span><span class="pln">x800 \
  </span><span class="pun">-</span><span class="pln">gravity </span><span class="typ">Center</span><span class="pln"> \
  </span><span class="pun">-</span><span class="pln">crop </span><span class="lit">1600x800</span><span class="pun">+</span><span class="lit">0</span><span class="pun">+</span><span class="lit">0</span><span class="pln"> myphoto</span><span class="pun">.</span><span class="pln">jpg</span></pre>

<p>
	يمكنك تشغيل الموسيقى باستخدام أمرٍ، مثل <code>ogg123</code>، أو <code>mpg321</code>؛ أو تحويل الصوت باستخدام الأمر <code>sox</code>؛ أو تعديل وتحرير الفيديوهات باستخدام <code>ffmpeg</code>؛ أو تحرير النصوص باستخدام <code>emacs</code>، أو <a href="https://academy.hsoub.com/programming/workflow/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA-vim-%D8%A7%D9%84%D8%AC%D8%B2%D8%A1-%D8%A7%D9%84%D8%A3%D9%88%D9%84-r71/" rel=""><code>vim</code></a>؛ أو التحقق من رسائل البريد الإلكتروني باستخدام <code>pine</code> أو <code>mutt</code>؛ أو تصفّح الإنترنت باستخدام <code>elinks</code>؛ وكذلك تصفّح الملفات باستخدام <code>ranger</code> أو <code>midnightcommander</code>، وغيرها، إذ يوفِّر باش كل هذه الإمكانات باستخدام الأوامر التي ستجدها في نظامك أو في مستودع البرمجيات الخاص بك.
</p>

<h2>
	برمجة باش النصية
</h2>

<p>
	أحد أهم أسباب كون باش ونظام لينكس ككل فعّالًا هو كونه قابلًا للبرمجة والتوسع إذ يمكنك كتابة تعليمات جديدة ضمن باش يدويًا، أو من خلال إنشاء قائمةٍ ضمن ملف نصي عادي وسيشغلها باش؛ فبدلًا من قضاء ساعات في كتابة وتنفيذ مئات التعليمات، يمكنك كتابة التعليمات في ملف نصي عادي وترك الأمر لحاسوبك لتنفيذها مرارًا وتكرارًا.
</p>

<p>
	ونظرًا لتنفيذ معظم العمليات في لينكس ضمن صدفة باش، فمن الممكن تقريبًا تنفيذ أي أمرٍ في لينكس باستخدام البرمجة النصية (سكربتات) في باش، مع وجود بعض الاستثناءات (فمثلًا قد يكون لدى تطبيقات الرسومات لغة برمجةٍ نصيةٍ خاصّةٍ بها، أو قد لا تمتلك لغة برمجة نصية أصلًا). سيفتح استخدام البرمجة النصية في نظام التشغيل الخاص أمامك آفاقًا لتنفيذ عشرات آلاف الإجراءات على حاسوبك دون تكبُّد عناء تنفيذ ذلك يدويًا.
</p>

<p>
	من غير الممكن إذًا تخمين التوفير في كمية العمل الذي يقدمه لينكس لمستخدميه؛ إذ أن هذا التوفير الكبير لا يأتي من فكرة أتمتة الأعمال التقليدية، وإنمّا من أتمتة أعمال لم يعتقد أحد سابقًا أنها بحاجة للأتمتة، مثل إمكانية إنشاء منهجية عمل مفصّلة خاصّة بك.
</p>

<p>
	عندما يقول المستخدمون المتمرسّون أنّهم يريدون تعلّم باش دون تعلّم <a href="https://academy.hsoub.com/devops/linux/%D8%A3%D9%87%D9%85-20-%D8%A3%D9%85%D8%B1%D8%A7-%D9%81%D9%8A-%D9%86%D8%B8%D8%A7%D9%85-%D8%A7%D9%84%D8%AA%D8%B4%D8%BA%D9%8A%D9%84-%D9%84%D9%8A%D9%86%D9%83%D8%B3-%D9%84%D8%AC%D9%85%D9%8A%D8%B9-%D8%A7%D9%84%D9%85%D8%B3%D8%AA%D8%AE%D8%AF%D9%85%D9%8A%D9%86-r585/?msclkid=25d93f86c28f11ec9317275dc6e323b8" rel="">أوامر لينكس</a>، فهم يقصدون غالبًا أنّهم يريدون تحسين طريقة كتابة الأوامر. ينقل النص البرمجي التالي مثلًا ملفًا مؤقتًا (وهو ملف مُنشأ بعملية أخرى منفصلة) إلى مسار محدّد:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_934_23" style="">
<span class="pun">#!</span><span class="str">/usr/</span><span class="pln">bin</span><span class="pun">/</span><span class="pln">bash
cp tmp</span><span class="pun">.</span><span class="pln">png </span><span class="pun">~</span><span class="str">/public_html/</span><span class="pun">`</span><span class="pln">date </span><span class="pun">+%</span><span class="pln">Y</span><span class="pun">%</span><span class="pln">m</span><span class="pun">%</span><span class="pln">d</span><span class="pun">`.</span><span class="pln">png</span></pre>

<p>
	يمكنك التحقّق من هذا الأمر من خلال نسخ السطر الأخير (الأمر الذي يبدأ بـ <code>cp</code>) إلى طرفية، حيث سيعمل هذا الأمر في حال وجود ملفٍ يُدعى <code>tmp.png</code> ومسار مجلد يُدعى <code>‎~/public_html</code>.
</p>

<p>
	إذًا، يعتمد تعلُّم باش على فهم كيفية تحويل أمرٍ بسيط كهذا إلى عملية أتمتة فعلية؛ فلن يعمل النص البرمجي مثلًا في حال عدم توفّر الملف "tmp.png"؛ وعلى فرض أنّ هذا النص البرمجي مكوّنٌ أساسيٌ لمدونةٍ تتطلب صورةً جديدةً يوميًا لإنشاء صورة ترويسة مخصّصة، ففي هذه الحالة سيكون عدم تنفيذ النص البرمجي ذا تأثيرٍ كارثي على كل أجزاء المدونة. يستطيع المُستخدم الذي يعرف باش إضفاء المرونة على نصه البرمجي باستخدام بناء التعليمات في باش.
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_934_25" style="">
<span class="pun">#!</span><span class="str">/usr/</span><span class="pln">bin</span><span class="pun">/</span><span class="pln">bash
IMG</span><span class="pun">=</span><span class="str">"tmp.png"</span><span class="pln">
</span><span class="pun">[[</span><span class="pln"> </span><span class="pun">-</span><span class="pln">e tmp</span><span class="pun">.</span><span class="pln">png </span><span class="pun">]]</span><span class="pln"> </span><span class="pun">||</span><span class="pln"> IMG</span><span class="pun">=</span><span class="str">"generic.png"</span><span class="pln">
cp </span><span class="pun">~</span><span class="str">/"${IMG}" ~/</span><span class="pln">public_html</span><span class="pun">/`</span><span class="pln">date </span><span class="pun">+%</span><span class="pln">Y</span><span class="pun">%</span><span class="pln">m</span><span class="pun">%</span><span class="pln">d</span><span class="pun">`.</span><span class="pln">png</span></pre>

<p>
	يُعَد هذا مجرّد مثالٍ وحيد لعملية تعلّم كتابة النصوص البرمجية في باش، إلّا أنّه يوضّح حقيقة كون تعلّم كل من باش ولينكس مفيدًا بنفس الدرجة، وهي عملية متكاملة ولا يمكن عدُّ كلٍ منهما مهمّةً مستقلة.
</p>

<h2>
	نقاط قوة باش
</h2>

<p>
	تُعَد باش صدفةً فعّالةً مثل غيرها، إلّا أنها تمتاز بوجود عدة <a href="https://wiki.hsoub.com/Bash/examples_of_functions_in_scripts" rel="external">دوالٍ مريحة</a>، مثل استخدام الأقواس المزدوجة (<strong>[[</strong> و<strong>]]</strong>) في الترميز البرمجي، وهذه التفاصيل الخاصّة بـها هي المفضّلة لدى مستخدميها، لأنّهم يتجنبون بناء الجمل الطويل المُربك كما في الصدفات الأُخرى، مثل tcsh أو ash؛ إلّا أنّ هذه التعليمات الخاصّة بباش قد تسبّب مشاكل في التوافق عند استخدامها على الأنظمة التي لا تستخدمه، ولكن بما أنّ باش مجاني ومفتوح المصدر، فبإمكان أي مستخدمٍ تثبيته عند الحاجة لاستخدامه، وتفرض مشكلة عدم التوافق هذه فقط اعتمادًا إضافيًا على باش دون منع أي أحدٍ من استخدام البرمجة النصية.
</p>

<ul></ul>
<p>
	ترجمة -وبتصرف- للمقال <a href="https://opensource.com/resources/what-bash" rel="external nofollow">What is Bash?‎</a> من موقع opensource.com.
</p>

<h2>
	اقرأ أيضًا
</h2>

<p>
	إذا أردت تعلّم باش يمكنك الاطلاع على <a href="https://wiki.hsoub.com/Bash" rel="external">توثيقها التفصيلي</a> في موسوعة حسوب، كما ننصحك بالإطلاع على المقالات التالية:
</p>

<ul>
<li>
		<a href="https://academy.hsoub.com/devops/servers/%D9%85%D8%A7-%D9%87%D9%88-%D8%B3%D8%B7%D8%B1-%D8%A7%D9%84%D8%A3%D9%88%D8%A7%D9%85%D8%B1-%D8%9F-r353/" rel="">ما هو سطر الأوامر؟</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/linux/%D8%AF%D9%84%D9%8A%D9%84-%D9%85%D9%8A%D9%8E%D8%B3%D9%91%D9%8E%D8%B1-%D9%84%D9%83%D8%AA%D8%A7%D8%A8%D8%A9-%D8%B3%D9%83%D8%B1%D8%A8%D8%AA%D8%A7%D8%AA-shell-r56/" rel="">دليل ميَسَّر لكتابة سكربتات Shell</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/tags/%D9%85%D8%AF%D8%AE%D9%84%20%D8%A5%D9%84%D9%89%20%D9%83%D8%AA%D8%A7%D8%A8%D8%A9%20%D8%B3%D9%83%D8%B1%D8%A8%D8%AA%D8%A7%D8%AA%20%D8%A7%D9%84%D8%B5%D8%AF%D9%81%D8%A9/" rel="">سلسلة مدخل إلى كتابة سكربتات الصدفة</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/linux/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A7%D8%B3%D8%AA%D8%B9%D9%85%D8%A7%D9%84-%D9%85%D9%8A%D8%B2%D8%A9-%D8%A7%D9%84%D8%AA%D8%AD%D9%83%D9%85-%D8%A8%D8%A7%D9%84%D9%88%D8%B8%D9%8A%D9%81%D8%A9-bashs-job-control%C2%A0%D9%84%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D8%B9%D9%85%D9%84%D9%8A%D8%A7%D8%AA-%D8%A7%D9%84%D8%AE%D9%84%D9%81%D9%8A%D8%A9-%D9%88%D8%B9%D9%85%D9%84%D9%8A%D8%A7%D8%AA-%D8%A7%D9%84%D9%85%D9%82%D8%AF%D9%85%D8%A9-%D9%81%D9%8A-%D9%84%D9%8A%D9%86%D9%83%D8%B3-r253/" rel="">كيفية استعمال ميزة التحكم بالوظيفة (Bash's Job Control) لإدارة عمليات الخلفية وعمليات المقدمة في لينكس</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">606</guid><pubDate>Thu, 21 Apr 2022 16:00:00 +0000</pubDate></item><item><title>&#x645;&#x62C;&#x627;&#x644;&#x627;&#x62A; &#x627;&#x644;&#x627;&#x633;&#x645; &#x648;&#x627;&#x644;&#x62D;&#x627;&#x648;&#x64A;&#x627;&#x62A; &#x641;&#x64A; &#x644;&#x64A;&#x646;&#x643;&#x633; &#x628;&#x628;&#x633;&#x627;&#x637;&#x629;</title><link>https://academy.hsoub.com/devops/linux/%D9%85%D8%AC%D8%A7%D9%84%D8%A7%D8%AA-%D8%A7%D9%84%D8%A7%D8%B3%D9%85-%D9%88%D8%A7%D9%84%D8%AD%D8%A7%D9%88%D9%8A%D8%A7%D8%AA-%D9%81%D9%8A-%D9%84%D9%8A%D9%86%D9%83%D8%B3-%D8%A8%D8%A8%D8%B3%D8%A7%D8%B7%D8%A9-r596/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_02/62191af83ed65_-------.png.75d1c8f32b88cfcf557d79215098f5ed.png" /></p>

<p>
	تُعَد الحاويات Containers من التطبيقات الثورية المعاصرة، إذ أنك ستستخدمها بغضّ النظر عن البرنامج الذي تعمل عليه سواءً كان كوبيرنيتيس Kubernetes، أو دوكر Docker، أو نظام كور CoreOS، أو سيلفربلو Sliverblue، أو فلاتباك Flatpak؛ إذ تستخدم جميع البرامج المذكورة سابقًا الحاويات بصورةٍ أساسية بفضل سهولة التعامل معها وأمانها العالي وقابليّة توسعتها.
</p>

<p>
	قد تكون <a href="https://academy.hsoub.com/devops/cloud-computing/%D8%A3%D8%A8%D8%B1%D8%B2-%D8%A7%D9%84%D9%85%D9%81%D8%A7%D9%87%D9%8A%D9%85-%D8%A7%D9%84%D8%AA%D9%8A-%D9%8A%D8%AC%D8%A8-%D8%B9%D9%84%D9%8A%D9%83-%D8%A7%D9%84%D8%A5%D9%84%D9%85%D8%A7%D9%85-%D8%A8%D9%87%D8%A7-%D8%B9%D9%86-%D8%A7%D9%84%D8%AD%D8%A7%D9%88%D9%8A%D8%A7%D8%AA-r561/" rel="">الحاويات</a> صعبة الفهم للبعض، فما الذي نعنيه عندما نقول أنّ النظام يعمل بداخل حاوية؟ وكيفَ لعمليّة محتواة داخل حاوية ما أن تتفاعل مع بقيّة أجزاء الجهاز المضيف الذي تعمل عليه؟ لا أحد يحبّ الغموض، لذا سنشرح في هذه المقالة تقنية عمل الحاويات.
</p>

<h2>
	مجالات الأسماء
</h2>

<p>
	تُعَد مجالات الاسماء Namespaces من أكثر المصطلحات شيوعًا في عالم البرمجة؛ وإذا كنتَ مبرمجًا، فعلى الأغلب أنك رأيت سطرًا برمجيًّا مشابهًا لهذا:
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_5237_6" style="">
<span class="pun">;</span><span class="kwd">using</span><span class="pln"> </span><span class="kwd">namespace</span><span class="pln"> std</span></pre>

<p>
	أو لربّما رأيت هذا السطر ضمن ملف XML:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_5237_8" style="">
<span class="pun">&lt;</span><span class="pln">book xmlns</span><span class="pun">=</span><span class="str">"http://docbook.org/ns/docbook"</span><span class="pln"> xml</span><span class="pun">:</span><span class="pln">lang</span><span class="pun">=</span><span class="str">"en"</span><span class="pun">&gt;</span></pre>

<p>
	يوفر هذا النوع من الأسطر البرمجية توصيفًا لسياق الأوامر الموجودة في ملف الشيفرة المصدرية التي تليه؛ فعلى سبيل المثال، السبب الوحيد في كون الكلمة المفتاحية <code>cout</code> ذات معنى للغة <code>++C</code>، هو وجود مجال اسم يصف عملها.
</p>

<p>
	إذا كان الشرح السابق يستخدم كثيرًا من المصطلحات التقنية ولم تفهمه، دعنا نسقط الأمر على الحياة الواقعية؛ فنحن نستخدم مجالات الاسم أيضًا في حياتنا اليومية، صحيح نحن لا ندعوها باسمها بالطبع، ولكننا نستخدم المفهوم طوال الوقت؛ فإذا قلت مثلًا، "أنا من أكبر معجبي هذه السلسلة"، فقد تقصد سلسلة شركات أو محال تجاريّة معيّنة في سياق مجال الأعمال، أو سلسلة أفلام شهيرة في سياق السينما؛ كما قد تعني الجملة "على أيّ محرك يعمل هذا الشيء؟" شيئًا ما بداخل ورشة الميكانيكي، وشيئًا آخر في مجال تطوير الويب. نحن بالطبع لا نحدّد السياق خلال محادثتنا مع بعضنا بعضًا، إذ إنّ أدمغتنا ذكيةً كفاية لمعرفة السياق لوحدها، بينما نحتاج لإعلان مجال الاسم وتحديده عندما نتعامل مع الحواسيب.
</p>

<p>
	بالنسبة للحاويات، يصف مجال الاسم الحدود التي تستطيع الحاوية "رؤية" العمليات التي تجري بداخلها.
</p>

<h2>
	أمر lsns
</h2>

<p>
	لا يعي البعض هذا الأمر، ولكن يعمل <a href="https://academy.hsoub.com/devops/linux/%D9%85%D8%A7-%D9%87%D9%88-%D9%86%D8%B8%D8%A7%D9%85-%D8%A7%D9%84%D8%AA%D8%B4%D8%BA%D9%8A%D9%84-%D9%84%D9%8A%D9%86%D9%83%D8%B3%D8%9F-r451/" rel="">نظام لينكس</a> على إدارة العديد من مجالات الاسم المخصصة لإنجاز مختلف العمليات. وتستطيع الاطلاع على مجالات الاسم الموجودة على نظامك باستخدام آخر إصدارات حزمة <code>util-linux</code>:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_5237_10" style="">
<span class="pln">lsns $
                NS TYPE   NPROCS   <abbr title="Process IDentifier | معرّف العملية أو البرنامج">PID</abbr> USER    COMMAND
</span><span class="lit">4026531835</span><span class="pln">  cgroup    </span><span class="lit">85</span><span class="pln">  </span><span class="lit">1571</span><span class="pln"> seth </span><span class="pun">/</span><span class="pln">usr</span><span class="pun">/</span><span class="pln">lib</span><span class="pun">/</span><span class="pln">systemd</span><span class="pun">/</span><span class="pln">systemd </span><span class="pun">--</span><span class="pln">user 
</span><span class="lit">4026531836</span><span class="pln">  pid          </span><span class="lit">85</span><span class="pln">  </span><span class="lit">1571</span><span class="pln"> seth </span><span class="pun">/</span><span class="pln">usr</span><span class="pun">/</span><span class="pln">lib</span><span class="pun">/</span><span class="pln">systemd</span><span class="pun">/</span><span class="pln">systemd </span><span class="pun">--</span><span class="pln">user
</span><span class="lit">4026531837</span><span class="pln">  user        </span><span class="lit">80</span><span class="pln">  </span><span class="lit">1571</span><span class="pln"> seth </span><span class="pun">/</span><span class="pln">usr</span><span class="pun">/</span><span class="pln">lib</span><span class="pun">/</span><span class="pln">systemd</span><span class="pun">/</span><span class="pln">systemd </span><span class="pun">--</span><span class="pln">user
</span><span class="lit">4026532601</span><span class="pln">  user          </span><span class="lit">1</span><span class="pln">  </span><span class="lit">6266</span><span class="pln"> seth </span><span class="pun">/</span><span class="pln">usr</span><span class="pun">/</span><span class="pln">lib64</span><span class="pun">/</span><span class="pln">firefox</span><span class="pun">/</span><span class="pln">firefox  </span><span class="pun">[...]</span><span class="pln">
</span><span class="lit">4026532928</span><span class="pln">  net            </span><span class="lit">1</span><span class="pln">  </span><span class="lit">7164</span><span class="pln"> seth </span><span class="pun">/</span><span class="pln">usr</span><span class="pun">/</span><span class="pln">lib64</span><span class="pun">/</span><span class="pln">firefox</span><span class="pun">/</span><span class="pln">firefox  </span><span class="pun">[...]</span><span class="pln">
</span><span class="pun">[...]</span></pre>

<p>
	إذا لم يحتوي إصدار الحزمة <code>util-linux</code> على أمر <code>lsns</code>، فيمكنك رؤية سجل مجالات الاسم ضمن المسار <code>proc/</code>:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5237_14" style="">
<span class="pln">ls </span><span class="pun">/</span><span class="pln">proc</span><span class="com">/*/ns $
1571
6266
7164
[...]
ls /proc/6266/ns $
 [...] ipc net pid user uts</span></pre>

<p>
	يجري عدُّ كل عملية Process في نظام لينكس برقمٍ تسلسلي يُدعى معرّف العملية process ID -أو اختصارًا <abbr title="Process IDentifier | معرّف العملية أو البرنامج">PID</abbr>-، ويرتبط كل <abbr title="Process IDentifier | معرّف العملية أو البرنامج">PID</abbr> بمجال اسمٍ معيّن. ويمكن لمعرّفات PIDs التي تحمل مجال الاسم نفسه الوصول لبعضها بعضًا، نظرًا لأنها مبرمجة ضمن مجال الاسم نفسه؛ بينما لا تستطيع العمليات التي تنتمي لمجالات أسماء مختلفة التفاعل والتواصل مع بعضها بعضًا بصورةٍ اعتيادية، لأنها تعمل ضمن سياقات مختلفة، أي مجالات اسم مختلفة؛ وهذا هو السبب في كون عمليات التي تعمل ضمن حاوية ما غير قادرةٍ على الوصول للمعلومات الموجودة خارج الحاوية، أو المعلومات الموجودة ضمن حاويةٍ أخرى مختلفة.
</p>

<h2>
	إنشاء مجال اسم جديد
</h2>

<p>
	تقدّم أي برمجيةٍ تتعامل مع الحاويات إدارةً تلقائية لمجالات الاسم في الحالة الاعتيادية؛ فعندما ينشئ المستخدم تطبيقًا أو بيئةً محتواةً بداخل حاويةٍ ما، عندها لا يلزم عليه استخدام الأمر <code>lsns</code> لتفقّد مجالات الاسم الموجودة وإنشاء مجال جديد يدويًّا، إذ تتولّى هذه البرمجيات المهمّة المذكورة تلقائيًّا بالاعتماد على مجالات اسم كل عمليّة <abbr title="Process IDentifier | معرّف العملية أو البرنامج">PID</abbr>، وبمساعدة نواة لينكس؛ إلّا أنّه من الممكن محاكاة هذه المهمة يدويًّا للحصول على فهم أفضل لكيفية عملها، وما الذي يحصل خلف الكواليس.
</p>

<p>
	أولًا، عليك تعريف عملية لا تعمل حاليًّا على جهازك، وفي هذا المثال، سنستخدم صدفة Z -أو اختصارًا Zsh-، لأنّ الجهاز الحالي الذي نعمل عليه يستخدم <code>Bash</code>؛ فإذا كان جهازك يعمل على <code>Zsh</code>، فبإمكانك استخدام <code>Bash</code>، أو <code>tcsh</code>، أو أيّ <a href="https://academy.hsoub.com/certificates/redhat/rhcsa/%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA-%D8%A7%D9%84%D8%AA%D8%B9%D8%A7%D9%85%D9%84-%D9%85%D8%B9-%D8%A7%D9%84%D8%B5%D8%AF%D9%81%D8%A9-shell-%D9%81%D9%8A-red-hat-enterprise-linux-r40/" rel="">صدفة Shell</a> غير فعالة حاليًّا.
</p>

<p>
	يُعَد هدفنا هنا هو إثبات أنّ الصدفة المُختارة (العملية) غير فعالة، إذ يمكننا التحقق من ذلك عن طريق استخدام الأمر <code>pidof</code>، الذي يطلب من النظام العثور على <abbr title="Process IDentifier | معرّف العملية أو البرنامج">PID</abbr> لأي تطبيق تكتبه بعد الأمر:
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_5237_16" style="">
<span class="pln">pidof zsh $
sudo pidof zsh $</span></pre>

<p>
	إذا لم يُعِد هذا الأمر أيّ رقم <abbr title="Process IDentifier | معرّف العملية أو البرنامج">PID</abbr> بالنتيجة، فهذا يعني أن التطبيق المُدخل غير فعال.
</p>

<h2>
	أمر unshare
</h2>

<p>
	يشغّل الأمر <code>unshare</code> أي تطبيق ضمن مجال اسم غير مشترك مع عمليات الأصل، وهناك الكثير من أنواع مجالات الاسم المختلفة التي يتيحها هذا الأمر. وبإمكانك الاطلاع على صفحة الدليل <code>man</code> للتعرف على الخيارات المتاحة.
</p>

<p>
	لإنشاء مجال اسم جديد خاص بالأمر الذي ستجرّبه:
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_5237_18" style="">
<span class="pln">sudo unshare </span><span class="pun">--</span><span class="pln">fork </span><span class="pun">--</span><span class="pln">pid </span><span class="pun">--</span><span class="pln">mount</span><span class="pun">-</span><span class="pln">proc zsh $
</span><span class="pun">%</span></pre>

<p>
	ستعمل صدفة <code>Zsh</code> في مجال اسمها عند التشغيل تلقائيًا، وذلك بحكم أنها صدفةٌ تفاعلية. ولكن مع ذلك، لا ينطبق هذا الأمر على جميع العمليات؛ إذ تعمل بعضها في الخلفية تاركةً إياك في واجهة ضمن مجال اسمها الأصلي. يمكنك ملاحظة أنك تركت مجال الاسم المعتاد بالنظر إلى المعرّف <abbr title="Process IDentifier | معرّف العملية أو البرنامج">PID</abbr> الخاص بعمليتك الفرعية الجديدة، وذلك طالما بقيت في جلسة <code>Zsh</code> نفسها:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_5237_20" style="">
<span class="pln">pidof zsh </span><span class="pun">%</span><span class="pln">
pid </span><span class="lit">1</span></pre>

<p>
	إذا كنت تعرف ولو الشيء اليسير عن أرقام عمليات لينكس التعريفية، فأنت تعلم أن <abbr title="Process IDentifier | معرّف العملية أو البرنامج">PID</abbr> ذو القيمة 1 محجوزٌ دائمًا؛ وذلك بسبب طبيعة عملية بدء تشغيل النظام boot (تطبيق <code>systemd</code> على معظم التوزيعات عدا سلاك وير Slackware وديفوان Devuan وبعض الحزم المخصّصة من توزيعة آرش Arch)، إذ من المستحيل أن تكون قيمة <abbr title="Process IDentifier | معرّف العملية أو البرنامج">PID</abbr> الخاصة بـ <code>Zsh</code> أو أي تطبيق آخر لا ينتمي لمجموعة تطبيقات بدء تشغيل النظام مساويةً 1، فمن غير الممكن لحاسوبك أن يعمل ويشغل النظام دون وجود عمليّة إقلاع تبدأه، وعلى الرغم من ذلك، تعرض لك الصدفة <code>Zsh</code> أن قيمة العملية بها تشغل القيمة 1.
</p>

<p>
	بغض النظر عن المعلومة التي تخبرك بها الصدفة، فالقيمة 1 لم تُستبدل، وتستطيع التأكد من ذلك عن طريق فتح نافذة طرفية جديدة والبحث عن العملية ذات القيمة 1، على النحو التالي:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_5237_22" style="">
<span class="pln">$ ps </span><span class="lit">1</span><span class="pln">
init</span></pre>

<p>
	تستطيع البحث عن قيمة <abbr title="Process IDentifier | معرّف العملية أو البرنامج">PID</abbr> الخاصة بالصدفة <code>Zsh</code> عن طريق:
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_5237_24" style="">
<span class="pln">pidof zsh $
</span><span class="lit">7723</span></pre>

<p>
	كما تلاحظ من الأوامر السابقة، يعي نظامك المضيف ما الذي يجري، ويعرف أن قيمة <abbr title="Process IDentifier | معرّف العملية أو البرنامج">PID</abbr> للصدفة <code>Zsh</code> ليست 1 (لن تكون نتيجة الأمر 7723 إن جرّبتها، وإذا ساوتها فسيكون ذلك وليد الصُدفة). تعتقد الصدفة <code>Zsh</code> أن رقم عمليّتها <abbr title="Process IDentifier | معرّف العملية أو البرنامج">PID</abbr> هو 1 بسبب نطاقها Scope المغلق أو المحتوى بداخل مجال الاسم، وبمجرّد إنشاء عملياتٍ فرعية في مجال الاسم هذا، فستبدأ أرقام عمليّاتها بدءًا من الواحد، ولكن في سياق مجال الاسم وحده.
</p>

<p>
	تُعَد مجالات الاسم بالإضافة لتقنيات أخرى مثل <code>cgroups</code> وغيرها، أساسًا لمفهوم الحاويات. يساعد فهم فكرة أن مجالات الاسم الفرعية موجودةً داخل سياق مجالات الاسم العامة ضمن بيئة المضيف (يُمثَّل المضيف بالحاسوب في أمثلتنا السابقة، ولكن في التطبيقات الواقعية قد يكون خادمًا أو <a href="https://academy.hsoub.com/devops/servers/%D9%83%D9%84-%D9%85%D8%A7-%D8%AA%D9%88%D8%AF-%D9%85%D8%B9%D8%B1%D9%81%D8%AA%D9%87-%D8%B9%D9%86-%D8%A7%D9%84%D8%B3%D8%AD%D8%A7%D8%A8%D8%A9-%D8%A7%D9%84%D9%87%D8%AC%D9%8A%D9%86%D8%A9-hybrid-cloud-r358/" rel="">سحابة هجينة Hybird cloud</a>)، في فهم كيف ولماذا تعمل برامج الحاويات على النحو الذي تعمل به، إذ لا "تعلم" حاوية تشغِّل مدونة ووردبريس Wordpress مثلًا، أنها تعمل ضمن حاوية، بل تعلم أن لها وصولًا لنواة النظام Kernel وقِسمًا من الذاكرة العشوائيّة RAM، بالإضافة لأيٍّ من ملفات الإعدادات Configuration التي زوّدتها؛ لكنها لا تستطيع الوصول إلى المسار الرئيسي Home أو أي مسارات لم تعطها الإذن للوصول إليها. إضافةًً لذلك، لا يمكن للعمليات التي تعمل داخل سياق المدوّنة التأثير على أيٍّ من العمليات الأخرى الموجودة بداخل النظام، وذلك لعدم شمول مجموعة أرقام العمليات -على حدّ علمها- أي عملية قبل 1؛ و1 هي الحاوية التي تعمل بداخلها.
</p>

<p>
	تُعَد الحاويات ميزةً قويةً في نظام لينكس، وتتزايد شهرةً يومًا بعد يوم. والآن بما أنك تعلمت كيف تعمل هذه التقنية، جرّب التعامل معها باستخدام بعض الأنظمة المخصصة، مثل كوبيرنيتيس Kubernetes، أو سيلفربلو Silverblue، أو فلاتباك Flatpak، واكتشف بعضًا من إمكانياتها. تعمل الحاويات في نهاية المطاف مثل نظام لينكس، لذا طبّق ما تعرفه عن لينكس وكيفية تثبيته باستخدامها.
</p>

<p>
	ترجمة -وبتصرف- للمقال <a href="https://opensource.com/article/19/10/namespaces-and-containers-linux" rel="external nofollow">Demystifying namespaces and containers in Linux</a> لصاحبه Seth Kenlon.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
<li>
		<a href="https://academy.hsoub.com/devops/linux/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AA%D8%A3%D9%85%D9%8A%D9%86-%D8%A7%D9%84%D8%AD%D8%A7%D9%88%D9%8A%D8%A7%D8%AA-%D8%B9%D9%86-%D8%B7%D8%B1%D9%8A%D9%82-%D8%B3%D9%8A-%D9%84%D9%8A%D9%86%D9%83%D8%B3-selinux-r595/" rel="">كيفية تأمين الحاويات عن طريق سي لينكس SELinux </a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/linux/%D8%AF%D9%84%D9%8A%D9%84-%D9%84%D9%81%D9%87%D9%85-%D8%AD%D8%A7%D9%88%D9%8A%D8%A7%D8%AA-%D9%84%D9%8A%D9%86%D9%83%D8%B3-%D9%88%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A7%D9%84%D8%AA%D8%B9%D8%A7%D9%85%D9%84-%D9%85%D8%B9%D9%87%D8%A7-r594/" rel="">دليل لفهم حاويات لينكس وكيفية التعامل معها</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/servers/%D8%A8%D8%AF%D8%A1-%D8%AA%D8%B4%D8%BA%D9%8A%D9%84-%D9%88%D8%A7%D8%B3%D8%AA%D8%B9%D9%85%D8%A7%D9%84-%D8%AD%D8%A7%D9%88%D9%8A%D8%A7%D8%AA-%D9%84%D9%8A%D9%86%D9%83%D8%B3-lxc-r220/" rel="">بدء تشغيل واستعمال حاويات لينكس (LXC)</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/servers/%D8%A5%D8%AC%D8%B1%D8%A7%D8%A1-%D9%85%D9%87%D8%A7%D9%85-%D9%85%D8%B9%D9%8A%D9%86%D8%A9-%D8%B9%D9%86%D8%AF-%D9%85%D8%AE%D8%AA%D9%84%D9%81-%D9%85%D8%B1%D8%A7%D8%AD%D9%84-%D8%AF%D9%88%D8%B1%D8%A9-%D8%AD%D9%8A%D8%A7%D8%A9-%D8%AD%D8%A7%D9%88%D9%8A%D8%A7%D8%AA-%D9%84%D9%8A%D9%86%D9%83%D8%B3-lxc-r221/" rel="">إجراء مهام معينة عند مختلف مراحل دورة حياة حاويات لينكس (LXC)</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">596</guid><pubDate>Fri, 25 Mar 2022 17:04:00 +0000</pubDate></item><item><title>&#x643;&#x64A;&#x641;&#x64A;&#x629; &#x62A;&#x623;&#x645;&#x64A;&#x646; &#x627;&#x644;&#x62D;&#x627;&#x648;&#x64A;&#x627;&#x62A; &#x639;&#x646; &#x637;&#x631;&#x64A;&#x642; &#x633;&#x64A; &#x644;&#x64A;&#x646;&#x643;&#x633; SELinux</title><link>https://academy.hsoub.com/devops/linux/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AA%D8%A3%D9%85%D9%8A%D9%86-%D8%A7%D9%84%D8%AD%D8%A7%D9%88%D9%8A%D8%A7%D8%AA-%D8%B9%D9%86-%D8%B7%D8%B1%D9%8A%D9%82-%D8%B3%D9%8A-%D9%84%D9%8A%D9%86%D9%83%D8%B3-selinux-r595/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_02/621915d6b1305_------.png.c982ff12cd4d48f0047600a02f12495e.png" /></p>

<p>
	يعطّل معظم الأشخاص التأمين المُعزَّز في لينكس Security-Enhanced Linux -أو اختصارًا <a href="https://academy.hsoub.com/certificates/redhat/rhcsa/%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA-%D8%A7%D9%84%D8%AA%D8%AD%D9%83%D9%85-%D9%81%D9%8A-%D8%A7%D9%84%D9%88%D8%B5%D9%88%D9%84-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-selinux-%D9%81%D9%8A-red-hat-enterprise-linux-r51/" rel="">سي لينوكس SELinux</a>- إذا واجهتهم أي مشكلة خلال عملهم على بيئة لينكس، إذ يبدو أن تعطيلها يحل المشاكل بصورةٍ مفاجئة، لكن هذا يتسبب بخسارتهم لأداة حماية فائقة القوّة والأهميّة.
</p>

<p>
	تتزايد التهديدات الأمنية مع تزايد استخدام الحاويات Containers والخدمات المصغرة Microservices ومعمارية الحوسبة الموزّعة Distributed Architecture، وذلك بسبب مشكلة قديمة ومعروفة جيّدًا، ألا وهي: التسارع velocity؛ إذ تتميز الحاويات بمنحك القدرة على التحرك بسرعة وإنجاز المزيد والتغير بسرعة أيضًا. وهذا يعني أن تطبيق الحاويات انتشر بصورةٍ كبيرة، ولكن سرعة تطبيقها محدودة. وستواجهك الكثير من المشاكل ونقاط الضعف خلال استخدامها؛ فهذا أمرٌ طبيعي عندما تسعى لإنجاز الأمور على نحوٍ أسرع.
</p>

<h2>
	كيف تخفف من التهديدات؟
</h2>

<p>
	يقول سن تزو: "المحارب الحكيم يتفادى المعركة". ينطبق هذا الاقتباس على عملية حماية الحاويات بصورةٍ مثالية؛ إذ لتفادي المشكلات (المعارك)، عليك التأكد أن مضيف الحاوية آمن ويستخدَم سي لينكس مثل خط دفاعٍ أوّل.
</p>

<p>
	أُطلِق سي لينكس على أنه مشروعٌ مفتوح المصدر في عام 2000، ودُمج مع نواة لينكس في عام 2003. ووفقًا لموقع <a href="https://www.redhat.com/en/topics/linux/what-is-selinux" rel="external nofollow">Red Hat's explainer</a>، فإن سي لينكس هو معماريّة أمان <a href="https://www.redhat.com/en/topics/linux/what-is-linux" rel="external nofollow">لأنظمة لينكس</a>، تسمح لمسؤولي النظام بالتحكم بمن لديه صلاحية الولوج للنظام، وقد طوِّرت البرمجية من قبل وكالة الأمن القومي United States National Security Agency -أو اختصارًا NSA-، بكونها سلسلةً ضمن مجموعةٍ من الرُقع Patches لـ <a href="https://www.redhat.com/en/topics/linux/what-is-the-linux-kernel" rel="external nofollow">نواة لينكس</a> باستخدام وحدات أمن لينكس Linux Security Modules -أو اختصارًا LSM".
</p>

<h2>
	البداية
</h2>

<p>
	عندما تسمع كلمة حاويات، سيتبادر لذهنك أولًا دوكر Docker، فقد بدأ دوكر بثورةٍ ساهمت بتبنٍ واسعٍ لتقنية الحاويات بعد ظهوره في عام 2013؛ فهو من أبرز الأسباب التي ساهمت بانتشار شعبية الحاويات. وكما ذكرنا سابقًا، ساهم تزايد معدل تبنّي هذه التقنية بتزايد معدل الثغرات الأمنية.
</p>

<p>
	قبل البدء بعملية تأمين حاويات دوكر باستخدام سي لينكس، عليك تجهيز بعض الأشياء.
</p>

<h3>
	المتطلبات
</h3>

<ul>
<li>
		نظام تشغيل سينت أو إس CentOS إصدار 8/RHEL مُثبت ومهيّأ.
	</li>
	<li>
		دوكر Docker CE مُثبَّت ومهيّأ.
	</li>
	<li>
		حسابين مستخدم، إحداها بصلاحيات الجذر root والآخر بدون؛ وهو موجود باسم <code>mcalizo</code> في الأمثلة ضمن هذه المقالة.
	</li>
</ul>
<p>
	يمكنك اتباع <a href="https://www.linuxtechi.com/install-docker-ce-centos-8-rhel-8/" rel="external nofollow">التعليمات</a>، إذا أردت تثبيت دوكر على خادم CentOS RHEL/8؛ وإذا كنت تعمل على RHEL 8، فعليك إزالة الحزمتين المثبّتتين تلقائيًّا <code>Podman</code> و<code>runc</code> قبل البدء.
</p>

<p>
	دعنا نتأكد أوّلًا من أن سي لينكس يعمل:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_5335_6" style="">
<span class="pln">mcalizo@Rhel82 </span><span class="pun">~]</span><span class="pln">$ sestatus</span><span class="pun">]</span><span class="pln">
</span><span class="typ">SELinux</span><span class="pln"> status</span><span class="pun">:</span><span class="pln">                           enabled
</span><span class="typ">SELinuxfs</span><span class="pln"> mount</span><span class="pun">:</span><span class="pln">                        </span><span class="str">/sys/</span><span class="pln">fs</span><span class="pun">/</span><span class="pln">selinux
</span><span class="typ">SELinux</span><span class="pln"> root directory</span><span class="pun">:</span><span class="pln">                </span><span class="str">/etc/</span><span class="pln">selinux
</span><span class="typ">Loaded</span><span class="pln"> policy name</span><span class="pun">:</span><span class="pln">                   targeted
</span><span class="typ">Current</span><span class="pln"> mode</span><span class="pun">:</span><span class="pln">                           enforcing
</span><span class="typ">Mode</span><span class="pln"> from config file</span><span class="pun">:</span><span class="pln">                enforcing
</span><span class="typ">Policy</span><span class="pln"> MLS status</span><span class="pun">:</span><span class="pln">                     enabled
</span><span class="typ">Policy</span><span class="pln"> deny_unknown status</span><span class="pun">:</span><span class="pln">    allowed
</span><span class="pun">(</span><span class="typ">Memory</span><span class="pln"> protection checking</span><span class="pun">:</span><span class="pln">    actual </span><span class="pun">(</span><span class="pln">secure
</span><span class="typ">Max</span><span class="pln"> kernel policy version</span><span class="pun">:</span><span class="pln">         </span><span class="lit">31</span><span class="pln">
 $ </span><span class="pun">[</span><span class="pln"> </span><span class="pun">~</span><span class="pln"> mcalizo@Rhel82</span><span class="pun">]</span></pre>

<p>
	من ثم، تأكد أن إصدار نظام التشغيل الخاص بك ودوكر يعملان. سجّل الدخول مثل مستخدمٍ بصلاحيات الجذر، ونفّذ التعليمات التالية:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_5335_8" style="">
<span class="pln">root@rhel82 </span><span class="pun">~]#</span><span class="pln">  cat </span><span class="pun">/</span><span class="pln">etc</span><span class="pun">/</span><span class="pln">redhat</span><span class="pun">-</span><span class="pln">release</span><span class="pun">]</span><span class="pln">
</span><span class="pun">(</span><span class="typ">Red</span><span class="pln"> </span><span class="typ">Hat</span><span class="pln"> </span><span class="typ">Enterprise</span><span class="pln"> </span><span class="typ">Linux</span><span class="pln"> release </span><span class="lit">8.2</span><span class="pln"> </span><span class="pun">(</span><span class="typ">Ootpa</span><span class="pln">
</span><span class="pun">[</span><span class="pln">root@rhel82 </span><span class="pun">~]#</span><span class="pln">

root@rhel82 </span><span class="pun">~]#</span><span class="pln"> systemctl status docker</span><span class="pun">]</span><span class="pln">
  docker</span><span class="pun">.</span><span class="pln">service </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Docker</span><span class="pln"> </span><span class="typ">Application</span><span class="pln"> </span><span class="typ">Container</span><span class="pln"> </span><span class="typ">Engine</span><span class="pln"> </span><span class="pun">●</span><span class="pln">
   </span><span class="pun">(</span><span class="typ">Loaded</span><span class="pun">:</span><span class="pln"> loaded </span><span class="pun">(</span><span class="str">/usr/</span><span class="pln">lib</span><span class="pun">/</span><span class="pln">systemd</span><span class="pun">/</span><span class="pln">system</span><span class="pun">/</span><span class="pln">docker</span><span class="pun">.</span><span class="pln">service</span><span class="pun">;</span><span class="pln"> enabled</span><span class="pun">;</span><span class="pln"> vendor preset</span><span class="pun">:</span><span class="pln"> disabled
   </span><span class="typ">Active</span><span class="pun">:</span><span class="pln"> active </span><span class="pun">(</span><span class="pln">running</span><span class="pun">)</span><span class="pln"> since </span><span class="typ">Wed</span><span class="pln"> </span><span class="lit">2020</span><span class="pun">-</span><span class="lit">10</span><span class="pun">-</span><span class="lit">28</span><span class="pln"> </span><span class="lit">19</span><span class="pun">:</span><span class="lit">10</span><span class="pun">:</span><span class="lit">14</span><span class="pln"> EDT</span><span class="pun">;</span><span class="pln"> </span><span class="lit">15s</span><span class="pln"> ago
     </span><span class="typ">Docs</span><span class="pun">:</span><span class="pln"> https</span><span class="pun">:</span><span class="com">//docs.docker.com</span><span class="pln">
 </span><span class="pun">(</span><span class="typ">Main</span><span class="pln"> <abbr title="Process IDentifier | معرّف العملية أو البرنامج">PID</abbr></span><span class="pun">:</span><span class="pln"> </span><span class="lit">30768</span><span class="pln"> </span><span class="pun">(</span><span class="pln">dockerd
    </span><span class="typ">Tasks</span><span class="pun">:</span><span class="pln"> </span><span class="lit">8</span><span class="pln">
   </span><span class="typ">Memory</span><span class="pun">:</span><span class="pln"> </span><span class="lit">39.0M</span><span class="pln">
   </span><span class="typ">CGroup</span><span class="pun">:</span><span class="pln"> </span><span class="str">/system.slice/</span><span class="pln">docker</span><span class="pun">.</span><span class="pln">service
     </span><span class="pun">└─</span><span class="pln"> </span><span class="lit">30768</span><span class="pln">  </span><span class="pun">/</span><span class="pln">usr</span><span class="pun">/</span><span class="pln">bin</span><span class="pun">/</span><span class="pln">dockerd </span><span class="pun">-</span><span class="pln">H fd</span><span class="pun">:</span><span class="com">// --containerd=/run/containerd/containerd.sock</span><span class="pln">

</span><span class="typ">Oct</span><span class="pln"> </span><span class="lit">28</span><span class="pln"> </span><span class="lit">19</span><span class="pun">:</span><span class="lit">10</span><span class="pun">:</span><span class="lit">13</span><span class="pln"> rhel82</span><span class="pun">.</span><span class="pln">home</span><span class="pun">.</span><span class="pln">labs</span><span class="pun">.</span><span class="pln">com dockerd</span><span class="pun">[</span><span class="lit">30768</span><span class="pun">]:</span><span class="pln"> time</span><span class="pun">=</span><span class="str">"2020-10-28T19:10:13.889602941-04:00"</span><span class="pln"> level</span><span class="pun">=</span><span class="pln">error msg</span><span class="pun">=</span><span class="str">"&gt;</span><span class="pln">
</span><span class="typ">Oct</span><span class="pln"> </span><span class="lit">28</span><span class="pln"> </span><span class="lit">19</span><span class="pun">:</span><span class="lit">10</span><span class="pun">:</span><span class="lit">13</span><span class="pln"> rhel82</span><span class="pun">.</span><span class="pln">home</span><span class="pun">.</span><span class="pln">labs</span><span class="pun">.</span><span class="pln">com dockerd</span><span class="pun">[</span><span class="lit">30768</span><span class="pun">]:</span><span class="pln"> time</span><span class="pun">=</span><span class="str">"2020-10-28T19:10:13.903413613-04:00"</span><span class="pln"> level</span><span class="pun">=</span><span class="pln">warning msg</span><span class="pun">&gt;</span><span class="pln">
</span><span class="typ">Oct</span><span class="pln"> </span><span class="lit">28</span><span class="pln"> </span><span class="lit">19</span><span class="pun">:</span><span class="lit">10</span><span class="pun">:</span><span class="lit">13</span><span class="pln"> rhel82</span><span class="pun">.</span><span class="pln">home</span><span class="pun">.</span><span class="pln">labs</span><span class="pun">.</span><span class="pln">com dockerd</span><span class="pun">[</span><span class="lit">30768</span><span class="pun">]:</span><span class="pln"> time</span><span class="pun">=</span><span class="str">"2020-10-28T19:10:13.903427451-04:00"</span><span class="pln"> level</span><span class="pun">=</span><span class="pln">warning msg</span><span class="pun">&gt;</span><span class="pln">
</span><span class="typ">Oct</span><span class="pln"> </span><span class="lit">28</span><span class="pln"> </span><span class="lit">19</span><span class="pun">:</span><span class="lit">10</span><span class="pun">:</span><span class="lit">13</span><span class="pln"> rhel82</span><span class="pun">.</span><span class="pln">home</span><span class="pun">.</span><span class="pln">labs</span><span class="pun">.</span><span class="pln">com dockerd</span><span class="pun">[</span><span class="lit">30768</span><span class="pun">]:</span><span class="pln"> time</span><span class="pun">=</span><span class="str">"2020-10-28T19:10:13.903538271-04:00"</span><span class="pln"> level</span><span class="pun">=</span><span class="pln">info msg</span><span class="pun">=</span><span class="str">"</span><span class="pln">L</span><span class="pun">&gt;</span><span class="pln">
</span><span class="typ">Oct</span><span class="pln"> </span><span class="lit">28</span><span class="pln"> </span><span class="lit">19</span><span class="pun">:</span><span class="lit">10</span><span class="pun">:</span><span class="lit">14</span><span class="pln"> rhel82</span><span class="pun">.</span><span class="pln">home</span><span class="pun">.</span><span class="pln">labs</span><span class="pun">.</span><span class="pln">com dockerd</span><span class="pun">[</span><span class="lit">30768</span><span class="pun">]:</span><span class="pln"> time</span><span class="pun">=</span><span class="str">"2020-10-28T19:10:14.132060506-04:00"</span><span class="pln"> level</span><span class="pun">=</span><span class="pln">info msg</span><span class="pun">=</span><span class="str">"</span><span class="pln">D</span><span class="pun">&gt;</span><span class="pln">
</span><span class="typ">Oct</span><span class="pln"> </span><span class="lit">28</span><span class="pln"> </span><span class="lit">19</span><span class="pun">:</span><span class="lit">10</span><span class="pun">:</span><span class="lit">14</span><span class="pln"> rhel82</span><span class="pun">.</span><span class="pln">home</span><span class="pun">.</span><span class="pln">labs</span><span class="pun">.</span><span class="pln">com dockerd</span><span class="pun">[</span><span class="lit">30768</span><span class="pun">]:</span><span class="pln"> time</span><span class="pun">=</span><span class="str">"2020-10-28T19:10:14.308943088-04:00"</span><span class="pln"> level</span><span class="pun">=</span><span class="pln">info msg</span><span class="pun">=</span><span class="str">"</span><span class="pln">L</span><span class="pun">&gt;</span><span class="pln">
</span><span class="typ">Oct</span><span class="pln"> </span><span class="lit">28</span><span class="pln"> </span><span class="lit">19</span><span class="pun">:</span><span class="lit">10</span><span class="pun">:</span><span class="lit">14</span><span class="pln"> rhel82</span><span class="pun">.</span><span class="pln">home</span><span class="pun">.</span><span class="pln">labs</span><span class="pun">.</span><span class="pln">com dockerd</span><span class="pun">[</span><span class="lit">30768</span><span class="pun">]:</span><span class="pln"> time</span><span class="pun">=</span><span class="str">"2020-10-28T19:10:14.319438549-04:00"</span><span class="pln"> level</span><span class="pun">=</span><span class="pln">info msg</span><span class="pun">=</span><span class="str">"</span><span class="pln">D</span><span class="pun">&gt;</span><span class="pln">
</span><span class="typ">Oct</span><span class="pln"> </span><span class="lit">28</span><span class="pln"> </span><span class="lit">19</span><span class="pun">:</span><span class="lit">10</span><span class="pun">:</span><span class="lit">14</span><span class="pln"> rhel82</span><span class="pun">.</span><span class="pln">home</span><span class="pun">.</span><span class="pln">labs</span><span class="pun">.</span><span class="pln">com dockerd</span><span class="pun">[</span><span class="lit">30768</span><span class="pun">]:</span><span class="pln"> time</span><span class="pun">=</span><span class="str">"2020-10-28T19:10:14.319570298-04:00"</span><span class="pln"> level</span><span class="pun">=</span><span class="pln">info msg</span><span class="pun">=</span><span class="str">"</span><span class="pln">D</span><span class="pun">&gt;</span><span class="pln">
</span><span class="typ">Oct</span><span class="pln"> </span><span class="lit">28</span><span class="pln"> </span><span class="lit">19</span><span class="pun">:</span><span class="lit">10</span><span class="pun">:</span><span class="lit">14</span><span class="pln"> rhel82</span><span class="pun">.</span><span class="pln">home</span><span class="pun">.</span><span class="pln">labs</span><span class="pun">.</span><span class="pln">com dockerd</span><span class="pun">[</span><span class="lit">30768</span><span class="pun">]:</span><span class="pln"> time</span><span class="pun">=</span><span class="str">"2020-10-28T19:10:14.333419209-04:00"</span><span class="pln"> level</span><span class="pun">=</span><span class="pln">info msg</span><span class="pun">=</span><span class="str">"</span><span class="pln">A</span><span class="pun">&gt;</span><span class="pln">
</span><span class="typ">Oct</span><span class="pln"> </span><span class="lit">28</span><span class="pln"> </span><span class="lit">19</span><span class="pun">:</span><span class="lit">10</span><span class="pun">:</span><span class="lit">14</span><span class="pln"> rhel82</span><span class="pun">.</span><span class="pln">home</span><span class="pun">.</span><span class="pln">labs</span><span class="pun">.</span><span class="pln">com systemd</span><span class="pun">[</span><span class="lit">1</span><span class="pun">]:</span><span class="pln"> </span><span class="typ">Started</span><span class="pln"> </span><span class="typ">Docker</span><span class="pln"> </span><span class="typ">Application</span><span class="pln"> </span><span class="typ">Container</span><span class="pln"> </span><span class="typ">Engine</span></pre>

<p>
	تحقق من إصدار دوكر لديك:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_5335_10" style="">
<span class="pln">root@rhel82 </span><span class="pun">~]#</span><span class="pln"> docker </span><span class="pun">--</span><span class="pln">version</span><span class="pun">]</span><span class="pln">
</span><span class="typ">Docker</span><span class="pln"> version </span><span class="lit">19.03</span><span class="pun">.</span><span class="lit">13</span><span class="pun">,</span><span class="pln"> build </span><span class="lit">4484c46d9d</span></pre>

<h2>
	اخترق المضيف
</h2>

<p>
	أفضل الطرق للتعلم هي خوض التجربة، لذلك سنبيّن في هذه الفقرة سهولة اختراق مضيف دوكر باستخدام شيفرة حقن Injection خبيثة، إذا لم يكن أمن الحاوية مُعدًّا على النحو الصحيح.
</p>

<p>
	لكي تكون قادرًا على إجراء هجومٍ ما على المضيف، يجب أن يكون المستخدم الخبيث الذي لا يملك صلاحيات الجذر (باسم <code>mcalizo</code> في أمثلتنا) منتميًا للمجموعة التي أنشأت حاويات دوكر. وللتأكد من ذلك، نتفقّد المجموعة التي ينتمي إليها الحساب <code>mcalizo</code> عن طريق:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_5335_12" style="">
<span class="pln">root@Rhel82 </span><span class="pun">~]#</span><span class="pln"> groups mcalizo</span><span class="pun">]</span><span class="pln">
mcalizo </span><span class="pun">:</span><span class="pln"> mcalizo</span></pre>

<p>
	تُظهِر رسالة الخَرج أن الحساب <code>mcalizo</code> ينتمي لمجموعته الخاصة، وهذا يعني أنه لا يمكنه <a href="https://academy.hsoub.com/devops/cloud-computing/docker/%D8%A7%D9%84%D8%AA%D8%B9%D8%A7%D9%85%D9%84-%D9%85%D8%B9-%D8%AD%D8%A7%D9%88%D9%8A%D8%A7%D8%AA-docker-r310/" rel="">إنشاء حاوية دوكر</a>. وإذا حاولت إنشاء حاوية دوكر باستخدام الحساب سيظهر الخطأ التالي:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_5335_14" style="">
<span class="pln">mcalizo@Rhel82 </span><span class="pun">~]</span><span class="pln">$ docker run </span><span class="pun">-</span><span class="pln">it </span><span class="pun">--</span><span class="pln">rm centos</span><span class="pun">:</span><span class="pln">latest </span><span class="pun">/</span><span class="pln">bin</span><span class="pun">/</span><span class="pln">sh</span><span class="pun">]</span><span class="pln">
docker</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Got</span><span class="pln"> permission denied </span><span class="kwd">while</span><span class="pln"> trying to connect to the </span><span class="typ">Docker</span><span class="pln"> daemon socket at unix</span><span class="pun">:</span><span class="com">///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.40/containers/create: dial unix /var/run/docker.sock: connect: permission denied.</span><span class="pln">
</span><span class="typ">See</span><span class="pln"> </span><span class="str">'docker run --help'</span><span class="pun">.</span></pre>

<p>
	للسماح لحساب <code>mcalizo</code> بإنشاء الحاوية، أضِف المستخدم لمجموعة <code>docker</code>:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_5335_16" style="">
<span class="pln">root@Rhel82 </span><span class="pun">~]#</span><span class="pln"> usermod </span><span class="pun">-</span><span class="pln">G docker </span><span class="pun">-</span><span class="pln">a mcalizo</span><span class="pun">]</span><span class="pln">
root@Rhel82 </span><span class="pun">~]#</span><span class="pln"> groups mcalizo</span><span class="pun">]</span><span class="pln">
mcalizo </span><span class="pun">:</span><span class="pln"> mcalizo docker</span></pre>

<p>
	ثم أنشئ حاويةً من نوع <code>fedora:latest</code> وادخل إليها لتكتشفها:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_5335_18" style="">
<span class="pln">mcalizo@Rhel82 </span><span class="pun">~]</span><span class="pln">$ docker run </span><span class="pun">-</span><span class="pln">it </span><span class="pun">--</span><span class="pln">rm fedora</span><span class="pun">:</span><span class="pln">latest </span><span class="pun">/</span><span class="pln">bin</span><span class="pun">/</span><span class="pln">sh</span><span class="pun">]</span><span class="pln">
</span><span class="typ">Unable</span><span class="pln"> to find image </span><span class="str">'fedora:latest'</span><span class="pln"> locally
latest</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Pulling</span><span class="pln"> from library</span><span class="pun">/</span><span class="pln">fedora
ee7e89337106</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Pull</span><span class="pln"> complete
</span><span class="typ">Digest</span><span class="pun">:</span><span class="pln"> sha256</span><span class="pun">:</span><span class="pln">b9ec86d36fca7b1d3de39cd7c258e8d90c377d312c21a7748071ce49069b8db4
</span><span class="typ">Status</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Downloaded</span><span class="pln"> newer image </span><span class="kwd">for</span><span class="pln"> fedora</span><span class="pun">:</span><span class="pln">latest
sh</span><span class="pun">-</span><span class="lit">5.0</span><span class="pun">#</span><span class="pln"> cat </span><span class="pun">/</span><span class="pln">etc</span><span class="pun">/</span><span class="pln">redhat</span><span class="pun">-</span><span class="pln">release
</span><span class="pun">(</span><span class="typ">Fedora</span><span class="pln"> release </span><span class="lit">33</span><span class="pln"> </span><span class="pun">(</span><span class="typ">Thirty</span><span class="pln"> </span><span class="typ">Three</span></pre>

<p>
	ستُسجَّل مثل مستخدم بصلاحيات الجذر تلقائيًّا، عندما تسجل الدخول لحاوية منشأة جديدًا:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_5335_21" style="">
<span class="pln">sh</span><span class="pun">-</span><span class="lit">5.0</span><span class="pun">#</span><span class="pln"> whoami
root
sh</span><span class="pun">-</span><span class="lit">5.0</span><span class="pun">#</span></pre>

<p>
	تستطيع فعل أي شيء بداخل الحاوية بصفتك مستخدمًا بصلاحيات الجذر؛ وهذا يعني أنك تستطيع إساءة استخدام مضيف الحاوية وتتسبّب بكثيرٍ من الضرر. تعني قدرتك على إنشاء الحاويات أنّك تستطيع فعل أي شيء للمضيف، حتى إن لم تكن جزءًا من المستخدمين بصلاحيات الجذر على الجهاز المضيف.
</p>

<p>
	لتوضيح الثغرة الأمنية هذه، أُخرج من الحاوية التي أنشأتها وأنشئ حاويةً جديدة:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_5335_23" style="">
<span class="pln">mcalizo@Rhel82 </span><span class="pun">~]</span><span class="pln">$ docker run </span><span class="pun">-</span><span class="pln">it </span><span class="pun">--</span><span class="pln">rm </span><span class="pun">-</span><span class="pln">v </span><span class="pun">/:</span><span class="str">/exploit fedora:latest /</span><span class="pln">bin</span><span class="pun">/</span><span class="pln">bash</span><span class="pun">]</span><span class="pln">
  </span><span class="pun">#[</span><span class="pln">root@131043f2e306 </span><span class="pun">/]</span></pre>

<p>
	ينقل الخيار <code>‎-v</code> مسار المضيف الرئيس الخاص بدوكر <code>/</code> إلى مسار الحاوية المدعوّ <code>exploit/</code>:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_5335_25" style="">
<span class="str">/root@131043f2e306 /</span><span class="pun">]#</span><span class="pln">ls exploit</span><span class="pun">]</span><span class="pln">
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  </span><span class="kwd">var</span></pre>

<p>
	بسبب عملية النقل هذه، تستطيع فعل أي شيء على جهاز دوكر المضيف؛ إذ يمكنك مثلًا حذف الملفات، أو تعديل ملفات الضبط بهدف إلحاق الضرر بالنظام، أو تثبيت تطبيق حصان طروادة أو برمجيات خبيثة مشابهة لسرقة البيانات المهمة.
</p>

<h2>
	سبب هذه الثغرة
</h2>

<p>
	لعلك تتسائل عن سبب حدوث ذلك بالرغم من أن سي لينكس مفعّل، إذ نستطيع فهم ما السبب بالتحديد، من خلال النظر الدقيق لكيفية عمل سي لينكس.
</p>

<p>
	تأكد من أن سي لينكس يحتوي على سياق دوكر Docker Context:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_5335_27" style="">
<span class="pln">mcalizo@Rhel82 </span><span class="pun">~]</span><span class="pln">$ ps </span><span class="pun">-</span><span class="pln">eZ </span><span class="pun">|</span><span class="pln"> grep docker</span><span class="pun">]</span><span class="pln">
system_u</span><span class="pun">:</span><span class="pln">system_r</span><span class="pun">:</span><span class="typ">container_runtime_t</span><span class="pun">:</span><span class="pln">s0 </span><span class="lit">30768</span><span class="pln"> </span><span class="pun">?</span><span class="pln"> </span><span class="lit">00</span><span class="pun">:</span><span class="lit">00</span><span class="pun">:</span><span class="lit">04</span><span class="pln"> dockerd
$</span><span class="pun">[~</span><span class="pln"> mcalizo@Rhel82</span><span class="pun">]</span></pre>

<p>
	يحتوي سي لينكس على السياق كما توقعنا؛ وهذا يعني أن سي لينكس مسؤولٌ عن إدارة <a href="https://academy.hsoub.com/devops/cloud-computing/docker/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AA%D8%AB%D8%A8%D9%8A%D8%AA-%D8%AF%D9%88%D9%83%D8%B1-%D9%88%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85%D9%87-%D8%B9%D9%84%D9%89-%D8%AF%D8%A8%D9%8A%D8%A7%D9%86-r465/" rel="">عفريت دوكر Docker daemon</a>. افحص عفريت دوكر للتحقُّق مما إذا كان سي لينكس مفعّلًا تلقائيًا:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_5335_29" style="">
<span class="pln">mcalizo@Rhel82 </span><span class="pun">~]</span><span class="pln">$ docker info </span><span class="pun">|</span><span class="pln"> grep </span><span class="typ">Security</span><span class="pln"> </span><span class="pun">-</span><span class="pln">A3</span><span class="pun">]</span><span class="pln">
 </span><span class="pun">:</span><span class="typ">Security</span><span class="pln"> </span><span class="typ">Options</span><span class="pln">
  seccomp
    </span><span class="typ">Profile</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">default</span><span class="pln">  
 </span><span class="typ">Kernel</span><span class="pln"> </span><span class="typ">Version</span><span class="pun">:</span><span class="pln"> </span><span class="lit">4.18</span><span class="pun">.</span><span class="lit">0</span><span class="pun">-</span><span class="lit">193.el8.x86</span><span class="pln">_64</span></pre>

<p>
	كما نلاحظ، سي لينكس غير مفعَّل تلقائيًا، بالتالي لقد وجدنا المشكلة، وكل ما علينا فعله هو تفعيل سي لينكس لسد الثغرة؛ بحيث يتحكّم ويدير دوكر. ولتفعيل سي لينكس، أنشئ ملفًّا في المسار <code>etc/docker/daemon.json</code> كما هو <a href="https://docs.docker.com/engine/reference/commandline/dockerd/" rel="external nofollow">موضح هنا</a>، ولكن يجب أن تمتلك صلاحيات الجذر لتفعيله:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_5335_31" style="">
<span class="pln">root@Rhel82 </span><span class="pun">~]#</span><span class="pln"> cat </span><span class="pun">/</span><span class="pln">etc</span><span class="pun">/</span><span class="pln">docker</span><span class="pun">/</span><span class="pln">daemon</span><span class="pun">.</span><span class="pln">json</span><span class="pun">]</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
  </span><span class="str">"selinux-enabled"</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">true</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
 </span><span class="pun">#[~</span><span class="pln"> root@Rhel82</span><span class="pun">]</span><span class="pln">
root@Rhel82 </span><span class="pun">~]#</span><span class="pln"> systemctl restart docker</span><span class="pun">]</span></pre>

<p>
	بعد إنشائك للملف أو تحديثه، وإعادة تشغيل دوكر؛ يجب أن ترى أن سي لينكس مفعّل في عفريت دوكر:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_5335_33" style="">
<span class="pln">root@Rhel82 </span><span class="pun">~]#</span><span class="pln"> systemctl restart docker</span><span class="pun">]</span><span class="pln">
mcalizo@Rhel82 root</span><span class="pun">]</span><span class="pln">$ docker info </span><span class="pun">|</span><span class="pln"> grep </span><span class="typ">Security</span><span class="pln"> </span><span class="pun">-</span><span class="pln">A3</span><span class="pun">]</span><span class="pln">
 </span><span class="pun">:</span><span class="typ">Security</span><span class="pln"> </span><span class="typ">Options</span><span class="pln">
  seccomp
    </span><span class="typ">Profile</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">default</span><span class="pln">
      selinux
</span><span class="pun">[</span><span class="pln">mcalizo@Rhel82 root</span><span class="pun">]</span><span class="pln">$</span></pre>

<p>
	على الرغم من أنّ وصل مسارات ملفات filesystem معيّنة لمضيف دوكر داخل حاوية دوكر ما زال ممكنًا، إلّا أنّ تحديث الملفات أو الوصول إليها أصبح غير متاحًا الآن:
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_5335_35" style="">
<span class="pln">mcalizo@Rhel82 root</span><span class="pun">]</span><span class="pln">$ docker run </span><span class="pun">-</span><span class="pln">it </span><span class="pun">--</span><span class="pln">rm </span><span class="pun">-</span><span class="pln">v </span><span class="pun">/:/</span><span class="pln">exploit fedora</span><span class="pun">:</span><span class="pln">latest </span><span class="pun">/</span><span class="pln">bin</span><span class="pun">/</span><span class="pln">bash</span><span class="pun">]</span><span class="pln">
root@ecb5836da1f6 </span><span class="pun">/]#</span><span class="pln"> touch </span><span class="pun">/</span><span class="pln">exploit</span><span class="pun">/</span><span class="pln">etc</span><span class="pun">/</span><span class="pln">shadow</span><span class="pun">.</span><span class="pln">sh</span><span class="pun">]</span><span class="pln">
touch</span><span class="pun">:</span><span class="pln"> cannot touch </span><span class="str">'/exploit/etc/shadow.sh'</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Permission</span><span class="pln"> denied
</span><span class="com">#[/ root@ecb5836da1f6]</span></pre>

<p>
	تعتمد درجة أمان حاويتك على قوة أمان نظام تشغيل مضيف الحاوية. وهناك كثيرٌ من الوسائل لتأمين نظام لينكس، والعديد منها متاحٌ بهدف زيادة أمان نظامك.
</p>

<p>
	يتواجد سي لينكس افتراضيًا مع توزيعات لينكس ليضيف طبقةً إضافية من الحماية؛ فتأكد من تفعيله وعمله صحيحًا للاستفادة منه ومن الحماية التي يقدمها لنظامك.
</p>

<p>
	ترجمة -وبتصرف- للمقال <a href="https://opensource.com/article/20/11/selinux-containers" rel="external nofollow">Secure your containers with SELinux</a> لصاحبه Mike Calizo.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
<li>
		<a href="https://academy.hsoub.com/devops/servers/%D8%A8%D8%AF%D8%A1-%D8%AA%D8%B4%D8%BA%D9%8A%D9%84-%D9%88%D8%A7%D8%B3%D8%AA%D8%B9%D9%85%D8%A7%D9%84-%D8%AD%D8%A7%D9%88%D9%8A%D8%A7%D8%AA-%D9%84%D9%8A%D9%86%D9%83%D8%B3-lxc-r220/" rel="">بدء تشغيل واستعمال حاويات لينكس (LXC)</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/cloud-computing/docker/%D8%A7%D9%84%D8%AA%D8%B9%D8%A7%D9%85%D9%84-%D9%85%D8%B9-%D8%AD%D8%A7%D9%88%D9%8A%D8%A7%D8%AA-docker-r310/" rel="">التعامل مع حاويات Docker</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/servers/%D8%A5%D8%AC%D8%B1%D8%A7%D8%A1-%D9%85%D9%87%D8%A7%D9%85-%D9%85%D8%B9%D9%8A%D9%86%D8%A9-%D8%B9%D9%86%D8%AF-%D9%85%D8%AE%D8%AA%D9%84%D9%81-%D9%85%D8%B1%D8%A7%D8%AD%D9%84-%D8%AF%D9%88%D8%B1%D8%A9-%D8%AD%D9%8A%D8%A7%D8%A9-%D8%AD%D8%A7%D9%88%D9%8A%D8%A7%D8%AA-%D9%84%D9%8A%D9%86%D9%83%D8%B3-lxc-r221/" rel="">إجراء مهام معينة عند مختلف مراحل دورة حياة حاويات لينكس (LXC)</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/servers/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%AD%D8%A7%D9%88%D9%8A%D8%A7%D8%AA-%D9%84%D9%8A%D9%86%D9%83%D8%B3-lxc-r219/" rel="">مدخل إلى حاويات لينكس LXC</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">595</guid><pubDate>Thu, 17 Mar 2022 17:00:00 +0000</pubDate></item><item><title>&#x62F;&#x644;&#x64A;&#x644; &#x644;&#x641;&#x647;&#x645; &#x62D;&#x627;&#x648;&#x64A;&#x627;&#x62A; &#x644;&#x64A;&#x646;&#x643;&#x633; &#x648;&#x643;&#x64A;&#x641;&#x64A;&#x629; &#x627;&#x644;&#x62A;&#x639;&#x627;&#x645;&#x644; &#x645;&#x639;&#x647;&#x627;</title><link>https://academy.hsoub.com/devops/linux/%D8%AF%D9%84%D9%8A%D9%84-%D9%84%D9%81%D9%87%D9%85-%D8%AD%D8%A7%D9%88%D9%8A%D8%A7%D8%AA-%D9%84%D9%8A%D9%86%D9%83%D8%B3-%D9%88%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A7%D9%84%D8%AA%D8%B9%D8%A7%D9%85%D9%84-%D9%85%D8%B9%D9%87%D8%A7-r594/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_02/6218b547850c1_-------.png.cdaeece8411e1fa8b14b45e62a54ae3f.png" /></p>

<p>
	هل يمكنك الحصول على حاويات لينكس Linux Containers دون استخدام Docker أو OpebShift أو Kubernetes؟ نعم، يمكنك، فقد طوّر مشروع LXC مفهوم تشغيل نظام تشغيل افتراضي يعمل على نواة النظام، ومُحتوًى ضمن مجموعةٍ من التعليمات المعرفة مسبقًا، وذلك قبل سنوات عدّة من ظهور Docker وانتشار مصطلح الحاويات.
</p>

<p>
	في الحقيقة، بُنيَ Docker على مشروع LXC، وتتوافر اليوم كثيرٌ من المنصات التي تُبرِز مزايا LXC بصورةٍ مباشرة أو غير مباشرة، كما تبسّط معظم هذه المنصات عملية إنشاء وإدارة الحاويات بصورةٍ ملحوظة، ومن المنطقي أن تُستخدم هذه الأدوات المتخصصة في مشروعات كبيرة، لكن لا تنطبق هذه الحالة على الجميع، إذ من المحتمل ألا تدير مشروعًا كبيرًا، وألا تكون لديك الرغبة بالوصول إلى خدمات كبيرة وتعلّم أدوات مخصّصة لإنشاء الحاويات. لحسن الحظ، تستطيع إنشاء واستخدام وتعلّم الحاويات باستخدام حاسوبٍ يعمل على نظام لينكس ضمن هذا الدليل؛ إذ سنساعدك في فهم <a href="https://academy.hsoub.com/devops/servers/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%AD%D8%A7%D9%88%D9%8A%D8%A7%D8%AA-%D9%84%D9%8A%D9%86%D9%83%D8%B3-lxc-r219/" rel="">الحاويات باستخدام LXC</a>، وكيفية عملها، ولماذا تعمل، وكيف تصحّح الأخطاء إذا واجهت أي مشكلات.
</p>

<h2>
	تثبيت LXC
</h2>

<p>
	إذا كنتَ تبحث عن مصدر سريع لفهم مشروع LXC، فزُر <a href="https://linuxcontainers.org/lxc/getting-started" rel="external nofollow">موقع المشروع الرسمي</a>. إذا لم يكن LXC مثبتًا بعد على جهازك، فثبّته باستخدام مدير الحزم على لينكس. وبالنسبة لتوزيعة فيدورا Fedora والتوزيعات المشابهة، اكتب:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_4605_8" style="">
<span class="pln">sudo dnf install lxc lxc</span><span class="pun">-</span><span class="pln">templates lxc</span><span class="pun">-</span><span class="pln">doc $</span></pre>

<p>
	أما بالنسبة <a href="https://academy.hsoub.com/devops/linux/%D9%81%D9%8A-%D9%85%D8%A7%D8%B0%D8%A7-%D9%8A%D8%AE%D8%AA%D9%84%D9%81-ubuntu-%D8%B9%D9%86-debian%D8%9F-r235/" rel="">لتوزيعتي ديبيان Debian وأوبنتو Ubuntu</a> والتوزيعات المشابهة، فاكتب:
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_4605_10" style="">
<span class="pln">sudo apt install lxc $</span></pre>

<h2>
	إنشاء جسر للشبكة
</h2>

<p>
	تفترض معظم الحاويات توافر اتّصال بالشبكة، كما تفترض معظم أدوات إدارة الحاويات أن المستخدم سينشئ شبكات افتراضية. يُعد جسر الشبكة network bridge من المكونات الأساسية في أيّ حاوية، وهو يكافئ إلى حدٍ ما مبدّل switch شبكة، إذ يعمل بمثابة مأخذ ذكي ذي مخرجين Y-Adapter، مثل مأخذ سماعات الرأس الذي يسمح لك ولصديقك بالاستماع للصوت في الوقت ذاته باستخدام سماعتين منفصلتين، والفرق هنا هو أنّ الإشارة التي تُنقل هي حزم البيانات وليس إشارة الصوت.
</p>

<p>
	يمكنك إنشاء جسر للشبكة برمجيًّا، لتمكين كلٍّ من حاسوبك المضيف والنظام المحتوى من إرسال واستقبال البيانات عبر الشبكة باستخدام جهاز اتصالٍ واحد، مثل منفذ الإيثرنت Ethernet، أو شريحة الاتصال اللاسلكية. يُهمل هذا الجانب الأساسي غالبًا عند استخدامك لبرنامج يولّد حاويات النظام تلقائيًا، وذلك رغم أهميته؛ إذ من المستبعد أن تخصّص جهاز اتصال فيزيائي لكل حاوية تشغّلها. وبالتالي يجب أن تستوعب أنّ الحاويات تتعامل مع أجهزة اتصال افتراضية، وفهمك لهذا سيساهم في نجاح عملية تصحيح الأخطاء، إذا فقدت الحاوية اتّصالها بالشبكة.
</p>

<p>
	لإنشاء جسرٍ للشبكة على جهازك، عليك الحصول على الأذونات المطلوبة. ومن خلال تنفيذك للتعليمات في هذا الدليل، استخدم الأمر <code>sudo</code> الذي سيعطيك صلاحيات الجذر؛ بينما يقدم توثيق LXC طريقةً لتهيئة صلاحيات المستخدمين دون استخدام الأمر <code>sudo</code>.
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_4605_12" style="">
<span class="pln">sudo ip link add br0 type bridge $</span></pre>

<p>
	يمكن التحقق من عملية إنشاء واجهة الشبكة الافتراضية بنجاح عن طريق:
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_4605_14" style="">
<span class="pln">sudo ip addr show br0 $
</span><span class="lit">7</span><span class="pun">:</span><span class="pln"> br0</span><span class="pun">:</span><span class="pln"> </span><span class="pun">&lt;</span><span class="pln">BROADCAST</span><span class="pun">,</span><span class="pln">MULTICAST</span><span class="pun">&gt;</span><span class="pln"> mtu </span><span class="lit">1500</span><span class="pln"> qdisc
 noop state DOWN group </span><span class="kwd">default</span><span class="pln"> qlen </span><span class="lit">1000</span><span class="pln">
 link</span><span class="pun">/</span><span class="pln">ether </span><span class="lit">26</span><span class="pun">:</span><span class="pln">fa</span><span class="pun">:</span><span class="lit">21</span><span class="pun">:</span><span class="lit">5f</span><span class="pun">:</span><span class="pln">cf</span><span class="pun">:</span><span class="lit">99</span><span class="pln"> brd ff</span><span class="pun">:</span><span class="pln">ff</span><span class="pun">:</span><span class="pln">ff</span><span class="pun">:</span><span class="pln">ff</span><span class="pun">:</span><span class="pln">ff</span><span class="pun">:</span><span class="pln">ff</span></pre>

<p>
	بما أنّ <code>br0</code> واجهة شبكة افتراضية Virtual Network Interface، فهو يتطلب عنوان بروتوكول الإنترنت الخاص به. لذلك، اختر عنوانًا محليًا صالحًا لا يتعارض مع أي عنوانٍ آخر موجود على شبكتك، واربطه مع جهاز الشبكة الافتراضية <code>br0</code> على النحو التالي:
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_4605_16" style="">
<span class="pln">sudo ip addr add </span><span class="lit">192.168</span><span class="pun">.</span><span class="lit">168.168</span><span class="pln"> dev br0 $</span></pre>

<p>
	تأكّد في النهاية أن <code>br0</code> يعمل بنجاح من خلال الأمر التالي:
</p>

<pre class="ipsCode">
sudo ip link set br0 up $
</pre>

<h2>
	تهيئة تكوين الحاوية
</h2>

<p>
	قد يكون ملف ضبط Config <a href="https://academy.hsoub.com/devops/servers/%D8%A8%D8%AF%D8%A1-%D8%AA%D8%B4%D8%BA%D9%8A%D9%84-%D9%88%D8%A7%D8%B3%D8%AA%D8%B9%D9%85%D8%A7%D9%84-%D8%AD%D8%A7%D9%88%D9%8A%D8%A7%D8%AA-%D9%84%D9%8A%D9%86%D9%83%D8%B3-lxc-r220/" rel="">حاوية LXC</a> معقدًا بحسب الحاجة لتهيئة الحاوية على شبكتك ونظام المضيف، ولكن سيكون ملف الضبط في مثالنا التالي بسيطًا. أنشئ ملفًا باستخدام أي محرر نصوص تفضّله، وعرّف اسمًا للحاوية واكتب إعدادات الشبكة:
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_4605_18" style="">
<span class="pln">lxc</span><span class="pun">.</span><span class="pln">utsname </span><span class="pun">=</span><span class="pln"> opensourcedotcom
lxc</span><span class="pun">.</span><span class="pln">network</span><span class="pun">.</span><span class="pln">type </span><span class="pun">=</span><span class="pln"> veth
lxc</span><span class="pun">.</span><span class="pln">network</span><span class="pun">.</span><span class="pln">flags </span><span class="pun">=</span><span class="pln"> up
lxc</span><span class="pun">.</span><span class="pln">network</span><span class="pun">.</span><span class="pln">link </span><span class="pun">=</span><span class="pln"> br0
lxc</span><span class="pun">.</span><span class="pln">network</span><span class="pun">.</span><span class="pln">hwaddr </span><span class="pun">=</span><span class="pln"> </span><span class="lit">4a</span><span class="pun">:</span><span class="lit">49</span><span class="pun">:</span><span class="lit">43</span><span class="pun">:</span><span class="lit">49</span><span class="pun">:</span><span class="lit">79</span><span class="pun">:</span><span class="pln">bd
lxc</span><span class="pun">.</span><span class="pln">network</span><span class="pun">.</span><span class="pln">ipv4 </span><span class="pun">=</span><span class="pln"> </span><span class="lit">192.168</span><span class="pun">.</span><span class="lit">168.1</span><span class="pun">/</span><span class="lit">24</span><span class="pln">
lxc</span><span class="pun">.</span><span class="pln">network</span><span class="pun">.</span><span class="pln">ipv6 </span><span class="pun">=</span><span class="pln"> </span><span class="lit">2003</span><span class="pun">:</span><span class="pln">db8</span><span class="pun">:</span><span class="lit">1</span><span class="pun">:</span><span class="lit">0</span><span class="pun">:</span><span class="lit">214</span><span class="pun">:</span><span class="lit">1234</span><span class="pun">:</span><span class="pln">fe0b</span><span class="pun">:</span><span class="lit">3596</span></pre>

<p>
	احفظ هذا الملف في المسار الرئيسي Home باسم <code>mycontainer.conf</code>، وتكون تسمية <code>lxc.utsname</code> اختياريّة، إذ يمكنك تسمية الحاوية كما شئت، وستستخدم هذا الاسم لتشغيل وإيقاف الحاوية.
</p>

<p>
	يُضبط نوع الشبكة إلى <code>veth</code>، وهو نوع من كابلات الإيثرنت Ethernet الافتراضية؛ إذ يتمحور مبدأ عملها في إرسال الاتصال من نوع <code>veth</code> من الحاوية إلى جهاز جسر الشبكة، المُعرّف بخاصية <code>lxc.network.link</code>، وبقيمة <code>br0</code>. يقع عنوان بروتوكول الإنترنت الخاص بالحاوية في شبكة جهاز التجسير نفسها، ولكنّه مختلف لتفادي أي تعارض.
</p>

<p>
	جميع القيم متغيّرة ويمكن تعديلها حسب الحاجة، باستثناء نوع الشبكة <code>veth</code> وراية الشبكة <code>up</code>. ويمكن استعراض لائحة الخصائص عن طريق الأمر <code>man lxc.container.conf</code>؛ وإذا كان الأمر مفقودًا من نظامك، تفقّد مدير الحزم للحصول على حزم توثيق LXC منفصلة. هناك كثيرٌ من الأمثلة التي يمكنك مطالعتها لاحقًا على هيئة ملفات ضبط ضمن المسار <code>usr/share/doc/lxc/examples</code>.
</p>

<h2>
	تشغيل صدفة الحاوية
</h2>

<p>
	أنجزنا أكثر من نصف العمل اللازم لإنشاء حاوية؛ فقد أنشأنا بنية الشبكة التحتية، وثبتنا شريحة الاتصال الافتراضية على حاسوبنا الافتراضي؛ وبقي الآن تثبيت نظام التشغيل الخاص بالحاوية. ولكن يمكنك رؤية حاوية LXC تعمل بتشغيل <a href="https://academy.hsoub.com/certificates/redhat/rhcsa/%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA-%D8%A7%D9%84%D8%AA%D8%B9%D8%A7%D9%85%D9%84-%D9%85%D8%B9-%D8%A7%D9%84%D8%B5%D8%AF%D9%81%D8%A9-shell-%D9%81%D9%8A-red-hat-enterprise-linux-r40/" rel="">الصدفة Shell</a> ضمن مساحة الحاوية دون <a href="https://academy.hsoub.com/questions/12262-%D8%B7%D8%B1%D9%8A%D9%82%D8%A9-%D8%AA%D8%AB%D8%A8%D9%8A%D8%AA-%D9%86%D8%B8%D8%A7%D9%85-%D8%A7%D9%84%D8%AA%D8%B4%D8%BA%D9%8A%D9%84-%D9%84%D9%8A%D9%86%D9%83%D8%B3/" rel="">تثبيت نظام التشغيل</a>، من خلال الأمر التالي:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_4605_22" style="">
<span class="pln"> \ sudo lxc</span><span class="pun">-</span><span class="pln">execute </span><span class="pun">--</span><span class="pln">name basic $
\ rcfile </span><span class="pun">~</span><span class="str">/mycontainer.conf /</span><span class="pln">bin</span><span class="pun">/</span><span class="pln">bash</span><span class="pun">--</span><span class="pln">
logfile mycontainer</span><span class="pun">.</span><span class="pln">log</span><span class="pun">--</span><span class="pln">
</span><span class="pun">#</span></pre>

<p>
	في هذه المرحلة من بناء الحاوية، ألقِ نظرةً على إعدادات الشبكة، إذ ستكون مشابهةً لتلك الموجودة في الأسفل ولكن بقيم فريدة:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_4605_24" style="">
<span class="str">/usr/</span><span class="pln">sbin</span><span class="pun">/</span><span class="pln">ip addr show </span><span class="pun">#</span><span class="pln">
</span><span class="lit">1</span><span class="pun">:</span><span class="pln"> lo</span><span class="pun">:</span><span class="pln"> </span><span class="pun">&lt;</span><span class="pln">LOOPBACK</span><span class="pun">,</span><span class="pln">UP</span><span class="pun">,</span><span class="pln">LOWER_UP</span><span class="pun">&gt;</span><span class="pln"> mtu </span><span class="lit">65536</span><span class="pln"> qdisc noqueue state </span><span class="pun">[...]</span><span class="pln">
link</span><span class="pun">/</span><span class="pln">loopback </span><span class="lit">00</span><span class="pun">:</span><span class="lit">00</span><span class="pun">:</span><span class="lit">00</span><span class="pun">:</span><span class="lit">00</span><span class="pun">:</span><span class="lit">00</span><span class="pun">:</span><span class="lit">00</span><span class="pln"> brd </span><span class="lit">00</span><span class="pun">:</span><span class="lit">00</span><span class="pun">:</span><span class="lit">00</span><span class="pun">:</span><span class="lit">00</span><span class="pun">:</span><span class="lit">00</span><span class="pun">:</span><span class="lit">00</span><span class="pln">
inet </span><span class="lit">127.0</span><span class="pun">.</span><span class="lit">0.1</span><span class="pun">/</span><span class="lit">8</span><span class="pln"> scope host lo
</span><span class="pun">[...]</span><span class="pln">
</span><span class="lit">22</span><span class="pun">:</span><span class="pln"> eth0@if23</span><span class="pun">:</span><span class="pln"> </span><span class="pun">&lt;</span><span class="pln">BROADCAST</span><span class="pun">,</span><span class="pln">MULTICAST</span><span class="pun">,</span><span class="pln">UP</span><span class="pun">,</span><span class="pln">LOWER_UP</span><span class="pun">&gt;</span><span class="pln"> </span><span class="pun">[...]</span><span class="pln"> qlen </span><span class="lit">1000</span><span class="pln">
link</span><span class="pun">/</span><span class="pln">ether </span><span class="lit">4a</span><span class="pun">:</span><span class="lit">49</span><span class="pun">:</span><span class="lit">43</span><span class="pun">:</span><span class="lit">49</span><span class="pun">:</span><span class="lit">79</span><span class="pun">:</span><span class="pln">bd brd ff</span><span class="pun">:</span><span class="pln">ff</span><span class="pun">:</span><span class="pln">ff</span><span class="pun">:</span><span class="pln">ff</span><span class="pun">:</span><span class="pln">ff</span><span class="pun">:</span><span class="pln">ff link</span><span class="pun">-</span><span class="pln">netnsid </span><span class="lit">0</span><span class="pln">
inet </span><span class="lit">192.168</span><span class="pun">.</span><span class="lit">168.167</span><span class="pun">/</span><span class="lit">24</span><span class="pln"> brd </span><span class="lit">192.168</span><span class="pun">.</span><span class="lit">168.255</span><span class="pln"> scope global eth0
    valid_lft forever preferred_lft forever
inet6 </span><span class="lit">2003</span><span class="pun">:</span><span class="pln">db8</span><span class="pun">:</span><span class="lit">1</span><span class="pun">:</span><span class="lit">0</span><span class="pun">:</span><span class="lit">214</span><span class="pun">:</span><span class="lit">1234</span><span class="pun">:</span><span class="pln">fe0b</span><span class="pun">:</span><span class="lit">3596</span><span class="pun">/</span><span class="lit">64</span><span class="pln"> scope global
    valid_lft forever preferred_lft forever
</span><span class="pun">[...]</span></pre>

<p>
	تميِّز الحاوية بنية الشبكة المزيفة، ونواة النظام المستخدمة:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_4605_26" style="">
<span class="pln">uname </span><span class="pun">-</span><span class="pln">av </span><span class="pun">#</span><span class="pln">
</span><span class="typ">Linux</span><span class="pln"> opensourcedotcom </span><span class="lit">4.18</span><span class="pun">.</span><span class="lit">13</span><span class="pun">-</span><span class="lit">100.fc27.x86</span><span class="pln">_64 </span><span class="pun">#</span><span class="lit">1</span><span class="pln"> SMP </span><span class="typ">Wed</span><span class="pln"> </span><span class="typ">Oct</span><span class="pln"> </span><span class="lit">10</span><span class="pln"> </span><span class="lit">18</span><span class="pun">:</span><span class="lit">34</span><span class="pun">:</span><span class="lit">01</span><span class="pln"> UTC </span><span class="lit">2018</span><span class="pln"> x86_64 x86_64 x86_64 GNU</span><span class="pun">/</span><span class="typ">Linux</span></pre>

<p>
	استخدم الأمر <code>exit</code> لمغادرة الحاوية:
</p>

<pre class="ipsCode">
exit #
</pre>

<h2>
	تثبيت نظام تشغيل الحاوية
</h2>

<p>
	تُعَد عملية بناء بيئة مُحتواة كاملة من البداية معقدةً أكثر موازنةً بمرحلة تهيئة <a href="https://academy.hsoub.com/certificates/cisco/ccna/%D8%A7%D9%84%D8%B4%D8%A8%D9%83%D8%A7%D8%AA-%D8%A7%D9%84%D9%85%D8%AD%D9%84%D9%8A%D8%A9-%D8%A7%D9%84%D8%A7%D9%81%D8%AA%D8%B1%D8%A7%D8%B6%D9%8A%D8%A9-%D9%81%D9%8A-%D9%85%D8%A8%D8%AF%D9%84%D8%A7%D8%AA-cisco-r93/" rel="">الشبكة الافتراضية</a> وضبطها، لذا يمكننا استخدام قوالب حاويات جاهزة من LXC. وإذا لم يحتو جهازك على أيّ قالب، فألقِ نظرةً على حزمة قوالب LXC الموجودة ضمن مستودع برمجيّتك. ويكون المسار الافتراضي لقوالب LXC هو <code>usr/share/lxc/templates</code>.
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_4605_32" style="">
<span class="pln">ls </span><span class="pun">-</span><span class="pln">m </span><span class="pun">/</span><span class="pln">usr</span><span class="pun">/</span><span class="pln">share</span><span class="pun">/</span><span class="pln">lxc</span><span class="pun">/</span><span class="pln">templates</span><span class="pun">/</span><span class="pln"> $
lxc</span><span class="pun">-</span><span class="pln">alpine</span><span class="pun">,</span><span class="pln"> lxc</span><span class="pun">-</span><span class="pln">altlinux</span><span class="pun">,</span><span class="pln"> lxc</span><span class="pun">-</span><span class="pln">archlinux</span><span class="pun">,</span><span class="pln"> lxc</span><span class="pun">-</span><span class="pln">busybox</span><span class="pun">,</span><span class="pln"> lxc</span><span class="pun">-</span><span class="pln">centos</span><span class="pun">,</span><span class="pln"> lxc</span><span class="pun">-</span><span class="pln">cirros</span><span class="pun">,</span><span class="pln"> lxc</span><span class="pun">-</span><span class="pln">debian</span><span class="pun">,</span><span class="pln"> lxc</span><span class="pun">-</span><span class="pln">download</span><span class="pun">,</span><span class="pln"> lxc</span><span class="pun">-</span><span class="pln">fedora</span><span class="pun">,</span><span class="pln"> lxc</span><span class="pun">-</span><span class="pln">gentoo</span><span class="pun">,</span><span class="pln"> lxc</span><span class="pun">-</span><span class="pln">openmandriva</span><span class="pun">,</span><span class="pln"> lxc</span><span class="pun">-</span><span class="pln">opensuse</span><span class="pun">,</span><span class="pln"> lxc</span><span class="pun">-</span><span class="pln">oracle</span><span class="pun">,</span><span class="pln"> lxc</span><span class="pun">-</span><span class="pln">plamo</span><span class="pun">,</span><span class="pln"> lxc</span><span class="pun">-</span><span class="pln">slackware</span><span class="pun">,</span><span class="pln"> lxc</span><span class="pun">-</span><span class="pln">sparclinux</span><span class="pun">,</span><span class="pln"> lxc</span><span class="pun">-</span><span class="pln">sshd</span><span class="pun">,</span><span class="pln"> lxc</span><span class="pun">-</span><span class="pln">ubuntu</span><span class="pun">,</span><span class="pln"> lxc</span><span class="pun">-</span><span class="pln">ubuntu</span><span class="pun">-</span><span class="pln">cloud</span></pre>

<p>
	اختر قالبك المفضل، وأنشئ الحاوية. استخدمنا في مثالنا هذا قالب <code>Slackware</code>.
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_4605_30" style="">
<span class="pln">sudo lxc</span><span class="pun">-</span><span class="pln">create </span><span class="pun">--</span><span class="pln">name slackware </span><span class="pun">--</span><span class="kwd">template</span><span class="pln"> slackware $</span></pre>

<p>
	ستعلّمك مشاهدة عملية تنفيذ القالب عن كثب الكثير عن كيفية عمل <a href="https://academy.hsoub.com/devops/servers/%D8%A8%D8%AF%D8%A1-%D8%AA%D8%B4%D8%BA%D9%8A%D9%84-%D9%88%D8%A7%D8%B3%D8%AA%D8%B9%D9%85%D8%A7%D9%84-%D8%AD%D8%A7%D9%88%D9%8A%D8%A7%D8%AA-%D9%84%D9%8A%D9%86%D9%83%D8%B3-lxc-r220/" rel="">القوالب</a>، وكأنّك تبني قالبًا من الصفر بيديك؛ إذ تُوصَف عملية التنفيذ بأنها واضحة ومسهبة، وتستطيع ملاحظة أن <code>lxc-create</code>يضبط جذر Root الحاوية للمسار <code>var/lib/lxc/slackware/rootfs</code>، كما يمكن تحميل وتثبيت كثيرٍ من الحزم في هذا المسار أيضًا.
</p>

<p>
	تمنحك قراءة ملفات القالب فهمًا أكبر لكيفية عمل شجرة الأجهزة الدنيا minimal device tree وملفات تخزين البيانات المؤقتة Spool الشائعة وملف جدول الأنظمة fstab وملفات init وغيرها، كما تمنع القوالب بعض الخدمات التي لا تحتوي على فائدة مرجوّة في الحاويات من العمل، مثل <code>udev</code> للتعرُّف على العتاد الصلب. ونظرًا لاحتواء القوالب على عددٍ كبيرٍ من إعدادات لينكس التقليدية، فمن الأفضل بناء القالب مع التقيُّد بقالبٍ مشابه للقالب الذي تبنيه (إذا أردت بناء قالبٍ من الصفر)، وذلك تجنّبًا للأخطاء والعثرات التي قد تحدث، مثل بعض الأخطاء التي كُشف عنها وعولجت من قِبل مشروع LXC.
</p>

<p>
	بعد تهيئة بيئة نظام التشغيل الأساسيّة، تستطيع بدء الحاوية من خلال الأمر التالي:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_4605_34" style="">
<span class="pln"> \ sudo lxc</span><span class="pun">-</span><span class="pln">start </span><span class="pun">--</span><span class="pln">name slackware $
rcfile </span><span class="pun">~/</span><span class="pln">mycontainer</span><span class="pun">.</span><span class="pln">conf</span><span class="pun">--</span></pre>

<p>
	بكتابتك للأمر السابق، تكون قد بدأت تشغيل الحاوية، ولكنك لم تربطها بعد؛ فبعكس المثال السابق، أنت لا تتعامل مع الحاوية في سطر الأوامر Shell، وإنما تتعامل مع نظام تشغيل محتوى، لهذا اربط الحاوية بالاسم، عن طريق الأمر:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_4605_36" style="">
<span class="pln"> sudo lxc</span><span class="pun">-</span><span class="pln">attach </span><span class="pun">--</span><span class="pln">name slackware $
</span><span class="pun">#</span></pre>

<p>
	تأكد أن <a href="https://io.hsoub.com/network/35813-%D9%85%D8%A7-%D9%87%D9%88-%D8%B9%D9%86%D9%88%D8%A7%D9%86-%D8%A8%D8%B1%D9%88%D8%AA%D9%88%D9%83%D9%88%D9%84-%D8%A7%D9%84%D8%A5%D9%86%D8%AA%D8%B1%D9%86%D8%AA-ip-address-%D9%85%D8%AF%D9%88%D9%86%D8%A9-%D8%B9%D9%84%D9%88%D9%85" rel="external">عنوان بروتوكول الإنترنت</a> التابع للحاوية وعنوان بروتوكول الإنترنت في ملف الضبط Config متماثلان، عن طريق:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_4605_40" style="">
<span class="pln">usr</span><span class="pun">/</span><span class="pln">sbin</span><span class="pun">/</span><span class="pln">ip addr SHOW </span><span class="pun">|</span><span class="pln"> grep eth</span><span class="pun">/</span><span class="pln"> </span><span class="com"># </span><span class="pln">
</span><span class="lit">34</span><span class="pun">:</span><span class="pln"> eth0@if35</span><span class="pun">:</span><span class="pln"> </span><span class="pun">&lt;</span><span class="pln">BROADCAST</span><span class="pun">,</span><span class="pln">MULTICAST</span><span class="pun">,</span><span class="pln">UP</span><span class="pun">,</span><span class="pln">LOWER_UP</span><span class="pun">&gt;</span><span class="pln"> mtu </span><span class="lit">1500</span><span class="pln"> </span><span class="pun">[...]</span><span class="pln"> </span><span class="lit">1000</span><span class="pln">
link</span><span class="pun">/</span><span class="pln">ether </span><span class="lit">4a</span><span class="pun">:</span><span class="lit">49</span><span class="pun">:</span><span class="lit">43</span><span class="pun">:</span><span class="lit">49</span><span class="pun">:</span><span class="lit">79</span><span class="pun">:</span><span class="pln">bd brd ff</span><span class="pun">:</span><span class="pln">ff</span><span class="pun">:</span><span class="pln">ff</span><span class="pun">:</span><span class="pln">ff</span><span class="pun">:</span><span class="pln">ff</span><span class="pun">:</span><span class="pln">ff link</span><span class="pun">-</span><span class="pln">netnsid </span><span class="lit">0</span><span class="pln">
inet </span><span class="lit">192.168</span><span class="pun">.</span><span class="lit">168.167</span><span class="pun">/</span><span class="lit">24</span><span class="pln"> brd </span><span class="lit">192.168</span><span class="pun">.</span><span class="lit">168.255</span><span class="pln"> scope </span><span class="kwd">global</span><span class="pln"> eth0</span></pre>

<p>
	اُخرُج من الحاوية، وأغلقها عن طريق:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_4605_43" style="">
<span class="pln">exit </span><span class="pun">#</span><span class="pln">
sudo lxc</span><span class="pun">-</span><span class="pln">stop slackware $</span></pre>

<h2>
	استخدام حاويات LXC في التطبيقات الواقعية
</h2>

<p>
	يسهّل لنا مشروع LXC عملية إنشاء وتشغيل حاوية آمنة. تطورت الحاويات كثيرًا منذ ظهورها أول مرة بواسطة LXC في عام 2008، وننصحك بالاستفادة من خبرات مطوّريها لمصلحتك.
</p>

<p>
	على الرغم من وضوح <a href="https://linuxcontainers.org/lxc/getting-started" rel="external nofollow">توجيهات دليل LXC</a>، إلّا أن هدفنا في هذا الدليل هو توفير فهمٍ أعمق لما يحصل خلال تنفيذ هذه الأوامر خلف الكواليس.
</p>

<p>
	ترجمة -وبتصرف- للمقال <a href="https://opensource.com/article/18/11/behind-scenes-linux-containers" rel="external nofollow">Behind the scenes with Linux containers</a> لصاحبه Seth Kenlon
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
<li>
		<a href="https://academy.hsoub.com/devops/servers/%D8%A5%D8%AC%D8%B1%D8%A7%D8%A1-%D9%85%D9%87%D8%A7%D9%85-%D9%85%D8%B9%D9%8A%D9%86%D8%A9-%D8%B9%D9%86%D8%AF-%D9%85%D8%AE%D8%AA%D9%84%D9%81-%D9%85%D8%B1%D8%A7%D8%AD%D9%84-%D8%AF%D9%88%D8%B1%D8%A9-%D8%AD%D9%8A%D8%A7%D8%A9-%D8%AD%D8%A7%D9%88%D9%8A%D8%A7%D8%AA-%D9%84%D9%8A%D9%86%D9%83%D8%B3-lxc-r221/" rel="">إجراء مهام معينة عند مختلف مراحل دورة حياة حاويات لينكس (LXC)</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/linux/%d8%a3%d9%84%d9%81-%d8%a8%d8%a7%d8%a1-%d8%a3%d8%b3%d8%a7%d8%b3%d9%8a%d8%a7%d8%aa-%d8%a7%d9%84%d8%aa%d8%b9%d8%a7%d9%85%d9%84-%d9%85%d8%b9-%d9%84%d9%8a%d9%86%d9%83%d8%b3-r61/" rel="">ألف باء أساسيات التعامل مع لينكس</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">594</guid><pubDate>Fri, 11 Mar 2022 17:09:00 +0000</pubDate></item><item><title>&#x627;&#x637;&#x628;&#x639; &#x645;&#x646; &#x623;&#x64A; &#x62C;&#x647;&#x627;&#x632; &#x639;&#x644;&#x649; &#x634;&#x628;&#x643;&#x62A;&#x643; &#x645;&#x646; &#x62E;&#x644;&#x627;&#x644; &#x646;&#x638;&#x627;&#x645; &#x627;&#x644;&#x637;&#x628;&#x627;&#x639;&#x629; &#x627;&#x644;&#x634;&#x627;&#x626;&#x639; &#x641;&#x64A; &#x64A;&#x648;&#x646;&#x643;&#x633; CUPS</title><link>https://academy.hsoub.com/devops/linux/%D8%A7%D8%B7%D8%A8%D8%B9-%D9%85%D9%86-%D8%A3%D9%8A-%D8%AC%D9%87%D8%A7%D8%B2-%D8%B9%D9%84%D9%89-%D8%B4%D8%A8%D9%83%D8%AA%D9%83-%D9%85%D9%86-%D8%AE%D9%84%D8%A7%D9%84-%D9%86%D8%B8%D8%A7%D9%85-%D8%A7%D9%84%D8%B7%D8%A8%D8%A7%D8%B9%D8%A9-%D8%A7%D9%84%D8%B4%D8%A7%D8%A6%D8%B9-%D9%81%D9%8A-%D9%8A%D9%88%D9%86%D9%83%D8%B3-cups-r586/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_02/61fa6028354ad_-------------CUPS.png.d7aa81101b39f2dd836ee59dc775a208.png" /></p>

<p>
	توجد طابعتي في مكتبي، لكنني أعمل أحيانًا على حاسوبي المحمول في غرفة أخرى في المنزل. هذا لا يعد مشكلةً بالنسبة إلي لسببين: أولهما أنني نادرًا ما أطبع أي شيء على الورق وتمر أشهر دون أن أستعمل الطابعة. أما الثاني، أنني شاركت الطابعة على شبكة منزلي، لذا أستطيع إرسال ملف للطباعة من أي مكان في المنزل. لم ألجأ إلى استخدام أية تجهيزات خاصة لأحقق ذلك، اكتفيت فقط باستخدام نظام التشغيل لينوكس على حاسوبي و نظام الطباعة الشائع في يونيكس CUPS.
</p>

<h2>
	تثبيت نظام الطباعة الشائع في يونيكس على نظام التشغيل لينوكس
</h2>

<p>
	إذا كان نظام التشغيل على حاسوبك لينوكس أو BSD أو ماك أو إس macOS سيكون نظام CUPS منصبًا مسبقًا. كان نظام CUPS الحل المعتمَد مفتوح المصدر للطباعة على يونيكس منذ عام 1997. اعتمدت شركة أبل Apple عليه بدرجة كبيرة في <a href="https://academy.hsoub.com/files/24-%D8%A3%D9%86%D8%B8%D9%85%D8%A9-%D8%A7%D9%84%D8%AA%D8%B4%D8%BA%D9%8A%D9%84-%D9%84%D9%84%D9%85%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D9%86/" rel="">نظام تشغيلها</a> أو إس إكس OS X حديث العهد والمبني على يونيكس، وانتهى بها الأمر إلى شرائه في عام 2007 لتضمن الحصول على تطوير مستمر له وصيانته.
</p>

<p>
	إذا لم تجد نظام CUPS منصبًا على نظام تشغيل حاسوبك يمكنك تثبيته من مدير الحزم package manager. فإذا كان نظام التشغيل لديك فيدورا Fedora أو ماجيا Mageia أو سينتوس CentOS نفذ الأمر التالي:
</p>

<pre class="ipsCode">
$ sudo dnf install cups
</pre>

<p>
	أما إذا كان نظام التشغيل لديك <a href="https://academy.hsoub.com/devops/linux/%D9%81%D9%8A-%D9%85%D8%A7%D8%B0%D8%A7-%D9%8A%D8%AE%D8%AA%D9%84%D9%81-ubuntu-%D8%B9%D9%86-debian%D8%9F-r235/" rel="">ديبيان Debian</a> ولينوكس مينت Linux Mint وما يشابهها، نفذ الأمر التالي:
</p>

<pre class="ipsCode">
$ sudo apt install cups
</pre>

<h2>
	الوصول إلى نظام CUPS في نظامي التشغيل لينوكس وماك
</h2>

<p>
	افتح متصفح المواقع وأدخل الرابط <code>localhost:631</code>، هذا يوجه حاسوبك إلى فتح أي شيء موجود عليه على هذا المنفذ (يشير حاسوبك إلى نفسه دائمًا بعبارة localhost).
</p>

<p>
	يفتح متصفحك صفحةً تتيح لك الوصول إلى إعدادات الطابعة على نظام التشغيل. تستطيع من هذه الصفحة إضافة الطابعات وتعديل الإعدادات الافتراضية للطابعة والتحكم بطلبات الطباعة التي تكون في وضع الانتظار والسماح بمشاركة الطابعات على شبكتك المحلية.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="91254" href="https://academy.hsoub.com/uploads/monthly_2022_02/002cups-web-ui.jpeg.2497629ed5141c83cba1be4cd80369ad.jpeg" rel=""><img alt="002cups-web-ui.jpeg" class="ipsImage ipsImage_thumbnailed" data-fileid="91254" data-unique="ooybo6vy6" src="https://academy.hsoub.com/uploads/monthly_2022_02/002cups-web-ui.jpeg.2497629ed5141c83cba1be4cd80369ad.jpeg"></a>
</p>

<p style="text-align: center;">
	(واجهة المستخدم في نظام CUPS)
</p>

<h2>
	ضبط إعدادات الطابعة في نظام CUPS
</h2>

<p>
	تستطيع إما إضافة طابعة جديدة أو تعديل طابعة موجودة ضمن واجهة نظام CUPS. لا تختلف صفحات إضافة طابعة جديدة عن صفحات تعديل طابعة موجودة مسبقًا سوى أنك عندما تضيف طابعةً تحدد خيارات جديدة، أما عندما تعدل طابعةً فإنك تعتمد أو تغير خيارات سبق تحديدها.
</p>

<p>
	ابدأ بالضغط على تبويبة <strong>Administration</strong>، ثم اضغط على زر <strong>Add Printer</strong>.
</p>

<p>
	إذا كنت تعدل طابعة موجودة اضغط على Manage Printers بدل ذلك، ثم اختر الطابعة التي تريد تعديلها، ثم اختر خيار Modify Printer من القائمة المنسدلة Administration.
</p>

<p>
	سواءً كنت تعدل طابعةً موجودةً أو تضيف طابعةً جديدةً، عليك إجراء ذلك بصلاحيات مدير النظام ليسمح لك نظام CUPS بالمتابعة. إما سجل الدخول بمستخدم root إذا أتيح لك ذلك، أو بمستخدمك الحالي إذا كانت لديك سماحية استخدام الأمر<code>sudo</code>.
</p>

<p>
	ستظهر بعدها قائمة تتضمن الواجهات والبروتوكولات التي تستخدمها للطابعة. إذا كانت طابعتك موصولةً مباشرةً إلى حاسوبك وكانت قيد التشغيل سيشار إليها في القائمة بعبارة <em>Local Printer</em>. إذا كانت طابعتك شبكيةً وموصولةً <a href="https://academy.hsoub.com/certificates/cisco/ccna/%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA-%D8%B4%D8%A8%D9%83%D8%A7%D8%AA-%D8%A7%D9%84%D8%AD%D9%88%D8%A7%D8%B3%D9%8A%D8%A8-r2/" rel="">بمبدل switch أو موجه router على شبكتك</a>، استخدم بروتوكول الطباعة عبر الإنترنت (Internet Printing Protocol اختصارًا IPP) للوصول إليها (قد تحتاج إلى الاطلاع على الإعدادات في الموجه لتحدد عنوان ip الطابعة، لكن اقرأ توثيق طابعتك لمعرفة التفاصيل). أما إذا كانت الطابعة من طراز HP يمكنك أيضًا استخدام بروتوكول HPLIP للوصول إليها.
</p>

<p>
	استخدم أي بروتوكول يناسب البيئة الفيزيائية لديك. إذا احترت في اختيار البروتوكول المناسب جرب أحد البروتوكولات، ثم حاول طباعة صفحة تجريبية، فإذا لم تنجح جرب استخدام بروتوكول آخر.
</p>

<p>
	تطلب الصفحة التالية إدخال تفاصيل بسيطة عن الطابعة، تكون غالبًا لتتمكن من الرجوع إليها. حدد اسمًا مقبولًا للطابعة (أضعه عادةً رقم الطراز لكن أحيانًا تسمي الشركات الكبرى طابعاتها على اسم سفن فضاء خيالية أو عواصم الدول)، ووصفًا عنها وموقعها.
</p>

<p>
	كما يمكنك أن تختار في هذه الصفحة أن تشارك طابعتك مع حواسيب أخرى موصولة على شبكتك.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="91255" href="https://academy.hsoub.com/uploads/monthly_2022_02/003cups-web-ui-share_0.jpeg.5a6f0d78511ac55b4dff26d1e4c16256.jpeg" rel=""><img alt="003cups-web-ui-share_0.jpeg" class="ipsImage ipsImage_thumbnailed" data-fileid="91255" data-unique="2gi6riios" src="https://academy.hsoub.com/uploads/monthly_2022_02/003cups-web-ui-share_0.jpeg.5a6f0d78511ac55b4dff26d1e4c16256.jpeg" style="width: 550px; height: auto;"></a>
</p>

<p style="text-align: center;">
	(واجهة مشاركة الطابعات في نظام CUPS)
</p>

<p>
	إذا لم تجد خيار المشاركة مفعلًا، فعّل مربع اختيار مشارَكة الطابعة.
</p>

<h2>
	تعريفات الطابعة
</h2>

<p>
	تتيح لك الصفحة التالية ضبط تعريف طابعتك. تجد تعريفات الطابعات مفتوحة المصدر غالبًا في موقع <a href="http://openprinting.org/" rel="external nofollow">openprinting.org</a>. في حال نصبت حزمة <code>gutenprint</code> أو نصبت حزمة التعريفات التي تأتي مع الطابعة، يوجد احتمال كبير أنك تملك التعريف المناسب على حاسوبك. إذا كانت طابعتك من نوع بوست سكريبت PostScript printer كحال معظم الطابعات الليزرية، لن تحتاج إلا إلى تحميل ملف PPD من موقع <a href="http://openprinting.org/" rel="external nofollow">openprinting.org</a> الذي سيغنيك عن تثبيت التعريف.
</p>

<p>
	بفرض أنك نصبت التعاريف، اختر طراز طابعتك (الشركة المصنِّعة) لتظهر لك قائمة بالتعريفات المتاحة لها، ثم اختر التعريف الملائم ثم تابع.
</p>

<h2>
	الوصول إلى الطابعة المشارَكة
</h2>

<p>
	بعد أن نجحت في تثبيت طابعتك وضبط إعداداتها تستطيع الوصول إليها من أي حاسوب على شبكتك. لنفترض أنك تريد أن تضيف طابعتك المشارَكة shared printer إلى حاسوبك المحمول المسمّى <strong>client</strong> الذي تستخدمه في مختلف أنحاء منزلك.
</p>

<p>
	يمكنك إضافة الطابعة على الحواسيب التي تستخدم بيئة سطح مكتب مثل جنوم GNOME وبلاسما Plasma من شاشة <strong>Printer</strong> في <strong>الإعدادات Settings</strong>:
</p>

<ul>
<li>
		إذا كانت الطابعة موصولة على حاسوب أدخل <a href="https://academy.hsoub.com/certificates/cisco/ccna/%d8%a8%d9%86%d8%a7%d8%a1-%d9%85%d8%ae%d8%b7%d8%b7-%d9%84%d8%b9%d9%86%d8%a7%d9%88%d9%8a%d9%86-ip-%d8%b9%d8%a8%d8%b1-%d8%a7%d9%84%d8%b4%d8%a8%d9%83%d8%a7%d8%aa-%d8%a7%d9%84%d9%81%d8%b1%d8%b9%d9%8a%d8%a9-%d8%b9%d9%86%d8%af-%d8%a8%d9%86%d8%a7%d8%a1-%d8%a7%d9%84%d8%b4%d8%a8%d9%83%d8%a7%d8%aa-r23/" rel="">عنوان IP</a> هذا <em>الحاسوب</em> (لأنه يمكن الوصول إلى الطابعة من خلال مضيفها في هذه الحالة)
	</li>
	<li>
		إذا كانت الطابعة موصولة على موجه أو مبدل، أدخل عنوان IP الطابعة ذاتها.
	</li>
</ul>
<p>
	تجد إعدادات الطابعة على جهاز يعمل بنظام تشغيل ماك أو إس في تفضيلات النظام System Preferences.
</p>

<p>
	كما تستطيع أن تستخدم واجهة نظام CUPS على حاسوبك. لا تختلف عملية الوصول إلى نظام CUPS عليه: افتح شبكة ثم أدخل الرابط <code>localhost:631</code>.
</p>

<p>
	عندما تفتح واجهة ويب الخاصة بنظام CUPS اختر علامة التبويب Administration ثم اضغط على زر <strong>البحث عن طابعات جديدة Find New Printers</strong> في قسم <strong>الطابعات Printers</strong>، ثم أضف الطابعة المشتركة إلى شبكتك. كما تستطيع تحديد عنوان الطابعة IP يدويًا في نظام CUPS من خلال الخوض في عملية <strong>إضافة طابعة Add Printer</strong> المعتادة.
</p>

<h3>
	اطبع أينما كنت
</h3>

<p>
	لقد أصبحنا في القرن الحادي والعشرين! ضع سواقة USB جانبًا وتوقف عن إرسال الملفات إلى نفسك بالبريد الالكتروني من جهاز آخر، واجعل طابعتك متاحة في شبكتك المنزلية. ستدهشك سهولة تنفيذ ذلك وستسعدك الراحة التي سيوفرها لك، والأفضل من ذلك كله أنك ستبدو أمام جميع القاطنين في منزلك ساحر الشبكات المحترف.
</p>

<p>
	ترجمة -وبتصرف- للمقال <a href="https://opensource.com/article/21/8/share-printer-cups" rel="external nofollow">Print from anywhere with CUPS on Linux</a> لصاحبه Seth Kenlon.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
<li>
		<a href="https://academy.hsoub.com/devops/linux/%D8%B9%D8%B4%D8%B1%D9%88%D9%86-%D8%A3%D9%85%D8%B1%D8%A7-%D9%81%D9%8A-%D9%84%D9%8A%D9%86%D9%83%D8%B3-%D9%8A%D9%81%D8%AA%D8%B1%D8%B6-%D8%A3%D9%86-%D9%8A%D8%B9%D8%B1%D9%81%D9%87%D8%A7-%D9%83%D9%84-%D9%85%D8%AF%D9%8A%D8%B1-%D9%86%D8%B8%D9%85-r355/" rel="">إعداد خادوم الطباعة CUPS على أوبنتو</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/linux/%D9%86%D8%B5%D8%A7%D8%A6%D8%AD-%D9%88%D8%AD%D9%8A%D9%84-%D9%84%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D9%86%D8%B8%D8%A7%D9%85-cups-%D9%84%D9%84%D8%B7%D8%A8%D8%A7%D8%B9%D8%A9-%D9%81%D9%8A-%D9%84%D9%8A%D9%86%D9%83%D8%B3-r556/" rel="">نصائح وحيل لاستخدام نظام CUPS للطباعة في لينكس</a>
	</li>
</ul>
<p>
	 
</p>
]]></description><guid isPermaLink="false">586</guid><pubDate>Wed, 02 Feb 2022 10:57:03 +0000</pubDate></item><item><title>&#x623;&#x647;&#x645; 20 &#x623;&#x645;&#x631;&#x627; &#x641;&#x64A; &#x646;&#x638;&#x627;&#x645; &#x627;&#x644;&#x62A;&#x634;&#x63A;&#x64A;&#x644; &#x644;&#x64A;&#x646;&#x643;&#x633; &#x644;&#x62C;&#x645;&#x64A;&#x639; &#x627;&#x644;&#x645;&#x633;&#x62A;&#x62E;&#x62F;&#x645;&#x64A;&#x646;</title><link>https://academy.hsoub.com/devops/linux/%D8%A3%D9%87%D9%85-20-%D8%A3%D9%85%D8%B1%D8%A7-%D9%81%D9%8A-%D9%86%D8%B8%D8%A7%D9%85-%D8%A7%D9%84%D8%AA%D8%B4%D8%BA%D9%8A%D9%84-%D9%84%D9%8A%D9%86%D9%83%D8%B3-%D9%84%D8%AC%D9%85%D9%8A%D8%B9-%D8%A7%D9%84%D9%85%D8%B3%D8%AA%D8%AE%D8%AF%D9%85%D9%8A%D9%86-r585/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_02/61fa5a3008f1b_-20-------.png.2bd51bd36b7edce5b3345b6b50431fe1.png" /></p>

<p>
	سواءً كنت مستخدما مبتدئًا أو مخضرمًا، نقدم إليك 20 أمرًا سيسهل عملك على <a href="https://academy.hsoub.com/files/24-%D8%A3%D9%86%D8%B8%D9%85%D8%A9-%D8%A7%D9%84%D8%AA%D8%B4%D8%BA%D9%8A%D9%84-%D9%84%D9%84%D9%85%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D9%86/" rel="">نظام التشغيل</a> لينوكس.
</p>

<p>
	قد يعد البعض طباعة الأوامر في <a href="https://academy.hsoub.com/devops/linux/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%B7%D8%B1%D9%81%D9%8A%D9%91%D8%A9-%D9%84%D9%8A%D9%86%D9%83%D8%B3-linux-terminal-r18/" rel="">طرفية Terminal</a> سوداء أمرًا عفا عليه الزمن. لكن يختلف الحال بالنسبة للعديد من مستخدمي الحاسوب؛ إذ إن ذلك من أوضح الأساليب لتنفيذ أية مهمة يمكن أن يؤديها الحاسوب وأكثرها فعاليةً وأسهلها منالًا. في الآونة الأخيرة أصبحت طرفية الأوامر تناسب جميع المستخدمين ولم تعد تقتصر على مستخدمي نظامي لينوكس و BSD، وذلك بفضل المشاريع التي أتاحت أوامر الأنظمة مفتوحة المصدر إلى الأنظمة المحتكرَة مثل ماك أو إس macOS وويندوز. قد تدهشك معرفة وجود آلاف الأوامر المنصَّبة على حاسوب عادي نظام تشغيله يتوافق مع معايير POSIX، لكن بالطبع ليس الغرض من عدد لا بأس به من هذه الأوامر أن تستخدَم، على الأقل مباشرةً أو دوريًا. عمومًا إن بعض الأوامر مفيدة أكثر من غيرها، وحتى عدد أقل منها لا يمكن الاستغناء عنه عند استخدام الطرفية بأسلوب فعال.
</p>

<p>
	سنستعرض أبرز 20 أمرًا يلجأ مستخدمو الطرفية إلى استخدامه:
</p>

<h2>
	أمر cd
</h2>

<p>
	عندما تريد الانتقال من مجلد إلى آخر دون الاستعانة بالطرفية يكفي أن تنقر على أيقونته، أما في الطرفية نستخدم الأمر <code>cd</code>. إن <code>cd</code> اختصار لعبارة <em>تغيير المجلد change directory</em>، وهو وسيلة تنقلك بين مجلدات نظام التشغيل لينوكس، وهو أسرع سبل الانتقال من مكان إلى آخر وأقصرها.
</p>

<p>
	فمثلًا عندما تريد الانتقال من مجلدك الرئيسي home directory (حيث تحتفظ بجميع ملفاتك) على حاسوبك المكتبي إلى ملف اسمه <code>presentations</code>، عليك أن تفتح أولًا مجلد <code>Documents</code>، ثم تفتح مجلدًا اسمه <code>work</code>، ثم مجلد <code>projects</code>، وبعدها مجلد <code>conference</code>، ثم تفتح المجلد المنشود <code>presentations</code> الذي يحتوي على عرض الشرائح المبهر الذي صممته على برنامج من <a href="https://academy.hsoub.com/apps/productivity/liberoffice/%D9%85%D9%82%D8%AF%D9%85%D8%A9-%D8%A5%D9%84%D9%89-%D8%AD%D8%B2%D9%85%D8%A9-%D8%A3%D8%AF%D9%88%D8%A7%D8%AA-%D8%A7%D9%84%D9%85%D9%83%D8%AA%D8%A8-%D8%A7%D9%84%D8%AD%D8%B1-libreoffice-r1/" rel="">برامج ليبر أوفيس LibreOffice</a>. لتنتقل إلى المجلد المطلوب نقرت الكثير من النقرات المزدوجة، وربما تجولت كثيرًا ضمن الشاشة حسب مكان ظهور النوافذ الجديدة التي تفتحها، وكبدت عقلك عناء تتبع مسار طويل. يتحايل العديد من المستخدمين على هذه المهمة البسيطة ظاهريًا بأن يحفظوا <em>جميع ملفاتهم</em> على سطح المكتب في أجهزتهم.
</p>

<p>
	أما مستخدمي الطرفية يتجنبون هذه المشكلة بطباعة السطر التالي:
</p>

<pre class="ipsCode">
$ cd ~/Documents/work/projects/conference/presentations
</pre>

<p>
	حتى أن مستخدمي الطرفية المخضرمين لا يتعبوا أنفسهم بطباعة كل هذا السطر، بل يستخدمون مفتاح Tab على لوحة مفاتيحهم ليكمل الكلمات تلقائيًا نيابةً عنهم. وفي بعض الأحيان ليس عليك أن تلجأ إلى الإكمال التلقائي حتى، إذ يمكنك استخدام محارف البدل wildcards عوضًا عن ذلك:
</p>

<pre class="ipsCode">
$ cd ~/Doc*/work/*/conf*/p*
</pre>

<h2>
	أمر pwd
</h2>

<p>
	سنعبر عن هذا الأمر بكلمات بوكارو بانزاي Buckaroo Banzai: "أينما ذهبت، ها أنت ذا".
</p>

<p>
	تستخدم أمر <code>pwd</code> عندما تريد أن تعرف في أي مجلد أنت بالتحديد. إن أمر <code>pwd</code> اختصار لعبارة <em>اطبع المجلد الحالي print working directory</em> وهذه هي مهمته. عند إضافة الوسيط <code>physical--</code> (أو <code>p-</code> فقط في بعض التطبيقات) إلى الأمر يطبَع موقعك إضافةً إلى جميع الروابط اللينة التي عالجها.
</p>

<pre class="ipsCode">
$ pwd
/home/tux/presentation

$ pwd --physical
/home/tux/Documents/work/projects/conference/presentations
</pre>

<p>
	لمزيد من التفاصيل حول الأمر <code>pwd</code> يمكنك الاطلاع على مقال <a href="https://academy.hsoub.com/devops/linux/%D9%83%D9%8A%D9%81-%D8%AA%D8%B3%D8%AA%D8%AE%D8%AF%D9%85-%D8%A3%D9%88%D8%A7%D9%85%D8%B1-cd-%D9%88-pwd-%D9%88-ls-%D9%84%D8%A7%D8%B3%D8%AA%D9%83%D8%B4%D8%A7%D9%81-%D9%86%D8%B8%D8%A7%D9%85-%D8%A7%D9%84%D9%85%D9%84%D9%81%D8%A7%D8%AA-%D8%B9%D9%84%D9%89-%D9%86%D8%B8%D8%A7%D9%85-%D9%84%D9%8A%D9%86%D9%83%D8%B3-r305/" rel="">كيف تستخدم أوامر cd و pwd و ls لاستكشاف نظام الملفات على نظام لينكس</a>.
</p>

<h2>
	أمر sed
</h2>

<p>
	إن المحرر التدفقي stream editor الذي يعرف باسم <code>sed</code> هو أمر <em>بحث واستبدال</em> عام فعال، كما أنه محرر نصي معتمَد.
</p>

<p>
	إذا رغبت في التعمق في دراسة هذا الأمر اطلع على مقال <a href="https://academy.hsoub.com/devops/linux/%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85%D8%A7%D8%AA-%D9%85%D8%AA%D9%82%D8%AF%D9%85%D8%A9-%D9%84%D9%84%D9%85%D8%AD%D8%B1%D9%90%D9%91%D8%B1-sed-%D9%81%D9%8A-%D9%86%D8%B8%D8%A7%D9%85-%D9%84%D9%8A%D9%86%D9%83%D8%B3-r322/" rel="">استخدامات متقدمة للمحرِّر Sed في نظام لينكس</a> ومقال <a href="https://academy.hsoub.com/devops/linux/%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA-%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A7%D9%84%D9%85%D8%AD%D8%B1%D8%B1-%D8%A7%D9%84%D8%AA%D8%AF%D9%81%D9%82%D9%8A-sed-%D9%84%D8%AA%D8%B9%D8%AF%D9%8A%D9%84-%D8%A7%D9%84%D9%86%D8%B5%D9%88%D8%B5-%D9%81%D9%8A-%D9%86%D8%B8%D8%A7%D9%85-%D9%84%D9%8A%D9%86%D9%83%D8%B3-r318/" rel="">أساسيات استخدام المحرر التدفقي Sed لتعديل النصوص في نظام لينكس</a>.
</p>

<h2>
	أمر grep
</h2>

<p>
	إن استخدام أمر <code>grep</code> شائع جدًا. هو عنصر أساسي عند تحليل النصوص في shell الخاصة بك، سواءً كنت تبحث في ملفات السجل log files أو تحلل خرج بعض الأوامر الأخرى. إنه وسيلة المستخدم المنهمك في التركيز على معلومات محددة. بالنظر إلى كمية البيانات الضخمة في عالم الحوسبة، لا عجب أن يكون هذا الأمر رائجًا.
</p>

<p>
	في حال رغبت بالتوسُّع في دراسة هذا الأمر يمكنك الاطلاع على مقال <a href="https://academy.hsoub.com/devops/linux/%D9%85%D8%A7-%D8%A7%D9%84%D9%81%D8%B1%D9%88%D9%82-%D8%A8%D9%8A%D9%86-%D8%A7%D9%84%D8%A3%D9%88%D8%A7%D9%85%D8%B1-grep-%D9%88egrep-fgrep-r320/" rel="">ما الفروق بين الأوامر grep وegrep fgrep</a>
</p>

<h2>
	أمر file
</h2>

<p>
	استخدم الأمر <code>file</code> عندما تحتاج إلى معرفة نوع البيانات ضمن ملف ما:
</p>

<pre class="ipsCode">
$ file example.foo
example.foo: RIFF (little-endian) data, Web/P image [...]

$ file example.bar
example.bar: ELF 64-bit LSB executable, x86-64 [...]
</pre>

<p>
	لكن الأمر <code>file</code> ليس أداةً سحريةً طبعًا، فهو يعتمد في تحديد نتائجه على طريقة تعريف الملف لنفسه، علمًا أن الملفات قد تكون خاطئةً أو تالفةً أو مخفية. إذا أردت الحصول على نتائج أدق استخدم أداة <code>hexdump</code>، أما عند الاستخدام العادي فإن أمر<code>file</code> يفي بالغرض.
</p>

<h2>
	أمر awk
</h2>

<p>
	إن Awk ليس مجرد أمر، بل هو حرفيًا لغة برمجية، إذا تعلمتها ستتمكن من كتابة نصوص برمجية scripts لم تكن لتتخيل أنك قادر على كتابتها.
</p>

<p>
	لتعلمها يمكنك زيارة مقالة <a href="https://academy.hsoub.com/devops/linux/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D9%84%D8%BA%D8%A9-awk-%D9%84%D9%84%D8%AA%D8%B9%D8%A7%D9%85%D9%84-%D9%85%D8%B9-%D8%A7%D9%84%D9%86%D8%B5%D9%88%D8%B5-%D9%81%D9%8A-%D9%84%D9%8A%D9%86%D9%83%D8%B3-r133/" rel="">كيفية استخدام لغة AWK للتعامل مع النصوص في لينكس</a> والاطلاع على المحتوى الوارد حول هذا الأمر.
</p>

<h2>
	أمر curl
</h2>

<p>
	إن أمر <code>curl</code> هو متصفح مواقع غير تفاعلي على طرفيتك، فهو أداة برمجية للويب و<a href="https://academy.hsoub.com/programming/general/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A7%D9%84%D9%88%D8%A7%D8%AC%D9%87%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D8%A9-api-r1314/" rel="">الواجهات البرمجية <abbr title="Application Programming Interface | واجهة برمجية">API</abbr></a>. هو أمر معقد بسبب مرونته لكنه يستحق أن تتعلمه إذا أردت أن تتعامل مع خدمات الشبكة من خلال طرفيتك بسلاسة.
</p>

<h2>
	أمر ps
</h2>

<p>
	تتولى نواة نظام التشغيل لينوكس غالبًا إدارة موارد نظامك، لكن عندما تفضّل أو تضطر إلى معالجة أو تعديل شيء ما يدويًا يمكنك استخدام أمر <code>ps</code>.
</p>

<p>
	إذا رغبت في التعمق في دراسة هذا الأمر اطلع على مقالة <a href="https://academy.hsoub.com/devops/linux/%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D8%A7%D9%84%D8%B9%D9%85%D9%84%D9%8A%D8%A7%D8%AA-process-%D9%81%D9%8A-%D9%84%D9%8A%D9%86%D9%83%D8%B3-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A7%D9%84%D8%B7%D8%B1%D9%81%D9%8A%D8%A9-r70/" rel="">إدارة العمليات (Process) في لينكس باستخدام الطرفية</a> ومقالة <a href="https://academy.hsoub.com/certificates/redhat/rhcsa/%D9%85%D8%A8%D8%A7%D8%AF%D8%A6-%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D8%A7%D9%84%D8%B9%D9%85%D9%84%D9%8A%D8%A7%D8%AA-processes-%D8%B9%D9%84%D9%89-redhat-enterprise-linux-r44/" rel="">مبادئ إدارة العمليات (Processes) على RedHat Enterprise Linux</a>.
</p>

<h2>
	أمر cat
</h2>

<p>
	إن أمر <code>cat</code> اختصار لكلمة <em>ضمّ concatenate</em>، كان يفيد سابقًا في ضم الملفات التي جزّئَت (باستخدام أمر <code>split</code>) إلى عدة ملفات أصغر حجمًا بسبب محدودية الحجم. أما حاليًا صار يستخدم غالبًا لعرض محتويات الملف النصي على الطرفية للاطلاع السريع، أو يمكنك استخدام الأوامر <code>head</code> أو <code>tail</code> أو<code>more</code> أو <code>less</code> لنفس الغرض.
</p>

<p>
	بالرغم من الانتقادات التي طالت مهمة الأمر <code>cat</code> الأساسية، ووجود عدة أوامر أخرى تؤدي مهمته الثانوية، إلا أنه لا يزال أداةً مفيدةً، فمثلًا قد يكون بديلًا لأمر النسخ (<code>cp</code>):
</p>

<pre class="ipsCode">
$ cat myfile.ogg &gt; /backups/myfile.ogg
</pre>

<p>
	كما يكشف عن المحارف المضرة المخفية في الملفات، فمثلًا محرف Tab الذي يتلف الملفات المكتوبة بلغة YAML يرمّز بـ I^ عند إضافة خيار <code>show-tabs--</code> إلى الأمر وفق ما يلي:
</p>

<pre class="ipsCode">
$ cat --show-tabs my.yaml

---

- hosts: all
  tasks:
  - name: Make sure the current version of 'sysstat' is installed.
    dnf:
     name:
^I- sysstat
^I- httpd
^I- mariadb-server
     state: latest
</pre>

<p>
	أما عند إضافة الخيار <code>show-nonprinting--</code> تظهر الأحرف غير المطبعية، وعند إضافة خيار <code>show-ends--</code> تحدد نهايات الأسطر، وتحدد أرقام الأسطر بإضافة الخيار <code>number--</code>، وغيرها الكثير من الوظائف الأخرى.
</p>

<h2>
	أمر find
</h2>

<p>
	يساعدك الأمر <code>find</code> في البحث عن الملفات، وتمكنك خياراته المتعددة من تطبيق مرشحات ومعاملات بحث متنوعة خلال عملية البحث.
</p>

<p>
	وعندما تطلع على مرونة هذا الأمر لن تتساءل عن سبب غياب أهم الأوامر <code>ls</code> عن هذه القائمة، فإن الأمر <code>find</code> لا يمكنه إظهار الملفات في قائمة فحسب:
</p>

<pre class="ipsCode">
$ find .
./bar.txt
./baz.xml
./foo.txt
[...]
</pre>

<p>
	بل يستطيع أيضًا أن يزودنا بقوائم مفصَّلة:
</p>

<pre class="ipsCode">
$ find . -ls
3014803  464 -rw-rw-r--   1 tux users  473385 Jul 26 07:25 ./foo.txt
3014837  900 -rwxrwxr-x   1 tux users  918217 Nov  6  2019 ./baz.xml
3026891  452 -rw-rw-r--   1 tux users  461354 Aug 10 13:41 ./foo.txt
[...]
</pre>

<p>
	هذه تفاصيل ثانوية لكنها حيلة بارعة لا ضير في الاطلاع عليها.
</p>

<p>
	لا يزال أمامك الكثير لتتعلمه عن هذا الأمر، تجده في مقالة <a href="https://academy.hsoub.com/devops/linux/%D9%83%D9%8A%D9%81-%D8%AA%D8%B3%D8%AA%D8%AE%D8%AF%D9%90%D9%85-%D8%A3%D9%85%D8%B1%D9%8E%D9%8A-find-%D9%88-locate-%D9%84%D9%84%D8%A8%D8%AD%D8%AB-%D8%B9%D9%86-%D8%A7%D9%84%D9%85%D9%84%D9%81%D9%91%D8%A7%D8%AA-%D8%B9%D9%84%D9%89-linux-r43/" rel="">كيف تستخدِم أمرَي find و locate للبحث عن الملفّات على Linux</a>.
</p>

<h2>
	أمر tar
</h2>

<p>
	يلقي الناس أحيانًا الدعابات حول أوامر نظام لينوكس مستشهدين بصياغة الأمر <code>tar</code> في نظام التشغيل BSD. لكن على الرغم من سمعته قد يصبح هذا الأمر بديهيًا جدًا.
</p>

<p>
	إذا رغبت بتعلمه يمكنك الاطلاع على مقال <a href="https://academy.hsoub.com/devops/linux/%D9%85%D9%82%D8%AF%D9%85%D8%A9-%D8%A5%D9%84%D9%89-%D8%A3%D9%85%D8%B1-tar-%D9%81%D9%8A-%D9%84%D9%8A%D9%86%D9%83%D8%B3-r243/" rel="">مقدمة إلى أمر tar في لينكس</a>.
</p>

<h2>
	أمر more أو less أو most
</h2>

<p>
	تشبه أوامر الاستدعاء هذه الأمر <code>cat</code>، والفرق بينها أنها توقف خرجها مؤقتًا عند نهاية شاشتك إلى أن تنتقل للأسفل لمشاهدة المزيد. يسهل تطبيقها لكن يوجد فروق دقيقة بين كل منها عند تطبيقها؛ هل تنتقل للأعلى أو الأسفل باستخدام الأسهم في لوحة مفاتيحك أو باستخدام مفتاح المسافة؟ هل عليك الخروج يدويًا بعد انتهاء عرض الملف أم أن أمر الاستدعاء يخرج في نهاية الملف الذي يعرضه؟ ما هو أسلوبك المفضل في البحث؟ اختر أمر الاستدعاء المفضل لديك وضعه في النص البرمجي <code>!bashrc.</code>.
</p>

<h2>
	أمر <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr> و scp
</h2>

<p>
	لا يساعدك برنامج OpenSSH في تأمين الاتصالات مع الأنظمة عن بعد فحسب، بل يفعّل أوامر أخرى أيضًا. فمثلًا إن مجلد <code>‎.<abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr></code> هو من يتيح للعديد من المستخدمين التعامل بسلاسة مع مستودعات Git، ونشر تحديثات موقع، أو تسجيل الدخول إلى لوحة التحكم بسحابتهم cloud.
</p>

<p>
	لمزيد من التفاصيل حول الأمر <code>‎<abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr></code> يمكنك الاطلاع على مقال <a href="https://academy.hsoub.com/devops/security/ssh/%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA-%D9%88%D8%AE%D9%8A%D8%A7%D8%B1%D8%A7%D8%AA-%D8%A7%D9%84%D8%A7%D8%AA%D8%B5%D8%A7%D9%84-%D8%A8%D8%AE%D8%A7%D8%AF%D9%88%D9%85-%D8%B9%D9%86-%D8%A8%D8%B9%D8%AF-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-ssh-r74/" rel="">أساسيات وخيارات الاتصال بخادوم عن بعد باستخدام <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr></a>، أما مقال <a href="https://academy.hsoub.com/devops/linux/%D9%83%D9%8A%D9%81-%D8%AA%D8%B3%D8%AA%D8%AE%D8%AF%D9%85-%D8%A7%D9%84%D8%A3%D9%85%D8%B1-scp-%D9%84%D8%AA%D8%A3%D9%85%D9%8A%D9%86-%D9%86%D8%B3%D8%AE-%D8%A7%D9%84%D9%85%D9%84%D9%81%D8%A7%D8%AA-%D8%A8%D9%8A%D9%86-%D8%A7%D9%84%D8%AE%D9%88%D8%A7%D8%AF%D9%8A%D9%85-r321/" rel="">كيف تستخدم الأمر scp لتأمين نسخ الملفات بين الخواديم</a> ستثري معلوماتك حول الأمر <code>scp</code>.
</p>

<h2>
	أمر mv
</h2>

<p>
	ينفذ هذا الأمر مهمتين: ينقل الملفات ويعيد تسميتها. يتضمن العديد من الخيارات الوقائية مثل خياري <code>interactive--</code> و <code>no-clobber--</code> لتجنب الكتابة على ملف موجود، ويضمن الأمر <code>backup--</code> حفظ البيانات وعدم حذفها إلى أن يتأكد من انتقالها إلى موقعها الجديد، ويضمن الأمر <code>update--</code> ألا تستبدل نسخة قديمة من الملف ملفًا أحدث منه.
</p>

<p>
	يمكنك زيارة مقال <a href="https://academy.hsoub.com/devops/linux/%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA-%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D8%A7%D9%84%D9%85%D9%84%D9%81%D9%91%D8%A7%D8%AA-%D9%88%D8%A7%D9%84%D8%AA%D9%86%D9%82%D9%91%D9%84-%D9%81%D9%8A-%D9%84%D9%8A%D9%86%D9%83%D8%B3-r24/" rel="">أساسيات إدارة الملفّات والتنقّل في لينكس</a> لمزيد من التفاصيل.
</p>

<h2>
	أمر sudo
</h2>

<p>
	عندما يكون لديك مستخدم وحيد معروف اسمه user name ولديه صلاحيات <em>كاملة</em> على النظام، سرعان ما يصبح هذا المستخدم هدفًا للهجمات. يزيل الأمر <code>sudo</code> بأناقة معلومات مهمة عن نظام التشغيل من متناول العامة وذلك بإلغاء الحاجة إلى مستخدم جذر <code>root</code> بحد ذاته. ولا تقتصر وظيفته على ذلك فقط، فهو يتيح لك إدارة الصلاحيات بسهولة لكل أمر وللمستخدمين والمجموعات، كما يتيح لك تفعيل تنفيذ بعض الأوامر المختارة دون إدخال كلمة مرور، وتسجيل جلسات المستخدم، والتأكد من الأوامر بالتحقق من مجموعة قوانين، والكثير غير ذلك.
</p>

<p>
	إذا رغبت في التعمق في دراسة هذا الأمر اطلع على مقال <a href="https://academy.hsoub.com/devops/linux/%D9%85%D8%A7-%D9%82%D8%AF-%D9%84%D8%A7-%D8%AA%D8%B9%D8%B1%D9%81%D9%87-%D8%B9%D9%86-sudo-r455/" rel="">ما قد لا تعرفه عن sudo</a> أو مقال <a href="https://academy.hsoub.com/devops/linux/%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-sudo-%D9%84%D8%AA%D9%81%D9%88%D9%8A%D8%B6-%D8%A7%D9%84%D8%B5%D9%84%D8%A7%D8%AD%D9%8A%D8%A7%D8%AA-%D9%81%D9%8A-linux-r379/" rel="">استخدام Sudo لتفويض الصلاحيات في Linux</a>.
</p>

<h2>
	أمر alias
</h2>

<p>
	يتيح لك هذا الأمر تحويل الأوامر الطويلة إلى اختصارات يسهل حفظها:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_5008_18" style="">
<span class="pln">$ alias ls</span><span class="pun">=</span><span class="str">'ls --classify --almost-all --ignore-backups --color'</span></pre>

<p>
	يمكنك زيارة مقال <a href="https://academy.hsoub.com/devops/linux/%D9%85%D9%82%D8%AF%D9%91%D9%85%D8%A9-%D8%A5%D9%84%D9%89-%D8%A7%D8%AE%D8%AA%D8%B5%D8%A7%D8%B1%D8%A7%D8%AA-%D8%A7%D9%84%D8%B7%D8%B1%D9%81%D9%8A%D8%A9-aliases-%D9%88%D8%AF%D9%88%D8%A7%D9%84%D9%87%D8%A7-%D8%A3%D9%86%D8%AC%D8%B2-%D9%85%D9%87%D8%A7%D9%85%D9%83-%D8%A8%D8%B3%D8%B1%D8%B9%D8%A9-r65/" rel="">مقدّمة إلى اختصارات الطرفية (Aliases) ودوالها</a> للحصول على مزيد من التفاصيل حول هذا الأمر.
</p>

<h2>
	أمر clear
</h2>

<p>
	تزدحم طرفيك أحيانًا، ولا يضاهي شيء شاشةً جديدةً فارغةً تحصل عليها بعد طباعة <code>clear</code> (أو الضغط على ctrl+l في بعض shells).
</p>

<h2>
	أمر setfacl
</h2>

<p>
	عادةً يحدد الأمرين <code>chown</code> و <code>chmod</code> أذونات ملف POSIX، لكن مع زيادة تعقيد الأنظمة نحتاج إلى أمر يمنحنا مرونةً أكبر. يتيح لك الأمر <code>setfacl</code> إنشاء قائمة التحكم بالوصول Access Control List لتمنح <a href="https://academy.hsoub.com/devops/linux/%D9%85%D9%82%D8%AF%D9%85%D8%A9-%D8%A5%D9%84%D9%89-%D8%A3%D8%B0%D9%88%D9%86%D8%A7%D8%AA-%D9%84%D9%8A%D9%86%D9%83%D8%B3-linux-permissions-r25/" rel="">الأذونات permissions</a> للمستخدمين العشوائيين، وتضبط الأذونات الافتراضية للمجلدات وما تحتويه.
</p>

<h2>
	أمر netcat
</h2>

<p>
	هو أمر لا يحتاجه جميع المستخدمين، لكن القلة التي تستخدمه لا تستطيع الاستغناء عنه إطلاقًا. إن أمر <code>nc</code> هو أداة اتصال شبكية متعددة الاستخدامات.
</p>

<p>
	يمكنه الاتصال بمنفذ معين تمامًا مثل أمر <code>telnet</code>:
</p>

<pre class="ipsCode">
$ nc -u 192.168.0.12 80
</pre>

<p>
	يمكنه تنفيذ أمر ping على منفذ معين، تمامًا مثل أمر <code>ping</code> :
</p>

<pre class="ipsCode">
$ nc -zvn 192.168.0.12 25
</pre>

<p>
	يمكنه تقصي المنافذ المفتوحة تمامًا مثل أمر <code>nmap</code> :
</p>

<pre class="ipsCode">
$ nc -zv 192.168.0.12 25-80
</pre>

<p>
	وهذا نموذج بسيط عن وظائفه.
</p>

<h2>
	أوامرك أنت
</h2>

<p>
	إن إحدى أهداف تصميم <a href="https://academy.hsoub.com/devops/linux/%D9%83%D9%8A%D9%81-%D8%AA%D8%B3%D8%AA%D8%AE%D8%AF%D9%85-%D8%B7%D8%B1%D9%81%D9%8A%D8%A9-%D9%84%D9%8A%D9%86%D9%83%D8%B3-%D8%A8%D8%A7%D8%AD%D8%AA%D8%B1%D8%A7%D9%81-r367/" rel="">طرفية نظام التشغيل لينوكس</a> هي ابتكار حلول للمشكلات، فعندما تتعلم الأوامر أنت تتعلم أيضًا بناء كتل يمكنك استخدامها لإنشاء أوامرك الخاصة. إن العديد من الأوامر المحفوظة في سجل الصدفة الخاص بي shell history هي نصوص برمجية على الصدفة shell كتبتها بنفسي، ليكون مسار عملي متوافقًا مع أسلوبي في العمل. فيمكن أن تكون الأوامر الرئيسية في shell لديك هي ذاتها التي صممتها أنت لتحقق الكفاءة والراحة خلال عملك. لذا امض بعض الوقت في تعلم بعض الأوامر الرائعة ثم ابنِ أوامرك الخاصة، وعندما تجد أوامر فعالةً اجعلها مفتوحة المصدر لتشارك أفكارك مع الجميع.
</p>

<p>
	ترجمة -وبتصرف- للمقال <a href="https://opensource.com/article/21/9/essential-linux-commands" rel="external nofollow">‎20 essential Linux commands for every user</a> لصاحبه Seth Kenlon
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
<li>
		<a href="https://academy.hsoub.com/devops/linux/%D8%B9%D8%B4%D8%B1%D9%88%D9%86-%D8%A3%D9%85%D8%B1%D8%A7-%D9%81%D9%8A-%D9%84%D9%8A%D9%86%D9%83%D8%B3-%D9%8A%D9%81%D8%AA%D8%B1%D8%B6-%D8%A3%D9%86-%D9%8A%D8%B9%D8%B1%D9%81%D9%87%D8%A7-%D9%83%D9%84-%D9%85%D8%AF%D9%8A%D8%B1-%D9%86%D8%B8%D9%85-r355/" rel="">عشرون أمرا في لينكس يفترض أن يعرفها كل مدير نظم</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/linux/%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A7%D9%84%D8%A3%D9%85%D8%B1-grep-%D9%81%D9%8A-%D9%84%D9%8A%D9%86%D9%83%D8%B3-r566/" rel="">دليل استخدام الأمر grep في لينكس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/linux/%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D9%84%D8%B1%D8%A8%D8%B7-%D8%A7%D9%84%D8%B4%D8%A8%D9%83%D9%8A-%D9%81%D9%8A-%D8%AA%D8%B1%D9%85%D9%8A%D8%B2-cidr-%D9%88%D8%B6%D8%A8%D8%B7%D9%87-%D9%81%D9%8A-%D9%84%D9%8A%D9%86%D9%83%D8%B3-r565/" rel="">دليل الربط الشبكي في ترميز CIDR وضبطه في لينكس</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">585</guid><pubDate>Wed, 02 Feb 2022 10:35:44 +0000</pubDate></item><item><title>&#x645;&#x631;&#x627;&#x642;&#x628;&#x629; &#x62E;&#x627;&#x62F;&#x645; &#x644;&#x64A;&#x646;&#x643;&#x633; &#x628;&#x627;&#x633;&#x62A;&#x62E;&#x62F;&#x627;&#x645; &#x623;&#x62F;&#x627;&#x629; Checkmk</title><link>https://academy.hsoub.com/devops/linux/%D9%85%D8%B1%D8%A7%D9%82%D8%A8%D8%A9-%D8%AE%D8%A7%D8%AF%D9%85-%D9%84%D9%8A%D9%86%D9%83%D8%B3-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A3%D8%AF%D8%A7%D8%A9-checkmk-r584/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_02/61fa51d9ab1fb_-----Checkmk.png.0508b6cb16a92c3e17c281a6509a3c7f.png" /></p>

<p>
	تعد مراقبة الموارد التكنولوجية IT assets مهمة أساسية لأي قسم تكنولوجيا معلومات، لكن العدد المتزايد من الأجهزة المتصلة بشبكات الشركات الكبرى جعل مهمة البحث عن نهج مرن لمراقبة مختلَف الأنظمة مراقبةً محكمةً مهمةً شديدة التعقيد، لذا لا بد من وجود أداة مراقبة مرنة وقابلة للتوسيع وسهلة الاستخدام.
</p>

<p>
	سأوضح لك في هذه المقالة كيف تثبت أداة المراقبة Checkmk المقدَّمة من شركة tribe29، وكيف تستفيد منها في مراقبة الخوادم وتجهيزات الشبكة.
</p>

<h2>
	تثبيت أداة Checkmk على نظام التشغيل لينوكس
</h2>

<p>
	استخدمت في هذه المقالة نسخة <a href="https://checkmk.com/product/raw-edition" rel="external nofollow">Checkmk Raw Edition</a> والمرخصة برخصة جنو العمومية الإصدار الثاني community GPLv2 edition (يتضمن إصدار الشركات enterprise edition من هذه الأداة خصائص إضافيةً ويوفر دعمًا مدفوعًا)، وثبتها على خادم لينوكس. تعمل أداة Checkmk على معظم <a href="https://academy.hsoub.com/devops/linux/%d8%a7%d9%84%d8%af%d9%84%d9%8a%d9%84-%d8%a7%d9%84%d9%86%d9%87%d8%a7%d8%a6%d9%8a-%d9%84%d8%a7%d8%ae%d8%aa%d9%8a%d8%a7%d8%b1-%d8%aa%d9%88%d8%b2%d9%8a%d8%b9%d8%a9-%d9%84%d9%8a%d9%86%d9%83%d8%b3-r48/" rel="">توزيعات نظام التشغيل لينوكس</a> مثل توزيعات <a href="https://academy.hsoub.com/certificates/redhat/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%B4%D9%87%D8%A7%D8%AF%D8%A7%D8%AA-red-hat-%D8%A7%D9%84%D9%85%D8%AA%D8%AE%D8%B5%D8%B5%D8%A9-r37/" rel="">ريدهات</a> RHEL وسينتوس CentOS <a href="https://academy.hsoub.com/devops/linux/%D9%81%D9%8A-%D9%85%D8%A7%D8%B0%D8%A7-%D9%8A%D8%AE%D8%AA%D9%84%D9%81-ubuntu-%D8%B9%D9%86-debian%D8%9F-r235/" rel="">وديبيان Debian</a> وغيرها، كما تعمل على <a href="https://academy.hsoub.com/devops/cloud-computing/docker/%d9%86%d8%b8%d8%b1%d8%a9-%d8%b9%d8%a7%d9%85%d9%91%d8%a9-%d8%b9%d9%84%d9%89-%d8%a5%d8%b9%d8%af%d8%a7%d8%af-%d8%a7%d9%84%d8%ad%d8%a7%d9%88%d9%8a%d9%91%d8%a7%d8%aa-containerization-%d8%b9%d9%84%d9%89-docker-r23/" rel="">الحاوية container</a> أو كأداة افتراضية virtual appliance. يمكنك تحميل أحدث إصدار لأداة Checkmk لجميع المنصات من الموقع الرسمي <a href="https://checkmk.com/" rel="external nofollow">Checkmk website</a>.
</p>

<h2>
	الشروع في العمل
</h2>

<p>
	لن يستغرق الشروع في العمل وقتًا طويلًا لأن أداة Checkmk تدعم معظم حالات المراقبة بفضل إضافاتها plug-ins التي يقارب عددها 2000 إضافة. كما توفر عتبات thresholds معدَّة مسبقًا للتنبيهات والتحذيرات كي لا تضيع وقتك في إعدادها بنفسك، أو يمكنك بالطبع ضبطها وفق ما يناسبك.
</p>

<p>
	إضافةً إلى هذه التجميعات الرسمية، تستطيع أيضًا استخدام توسيعات المراقبة التي أنشأها مستخدمون آخرون وشاركوها على منصة <a href="https://exchange.checkmk.com/" rel="external nofollow">Checkmk Exchange</a>. يمكنك معرفة المزيد من التفاصيل حول أداة Checkmk أو المساهمة فيها على مستودعات <a href="https://github.com/tribe29/checkmk" rel="external nofollow">جت هَب GitHub repository</a>.
</p>

<p>
	لا تتطلب هذه المقالة التعليمية أية خبرة سابقة في المراقبة. لكن إذا أردت اتباع الإجراءات يجب أن تكون لديك صلاحيات المستخدم الجذر root على الخادم الذي ستستخدمه مضيفًا.
</p>

<h3>
	تنزيل نسخة Checkmk Raw Edition
</h3>

<p>
	أولًا، إما <a href="https://checkmk.com/download?edition=cre&amp;version=stable&amp;dist=ubuntu&amp;os=focal" rel="external nofollow">نزّل</a> نسخة Checkmk Raw Edition (المجانية ومفتوحة المصدر)، أو الإصدار المجاني من نسخة Enterprise Edition.
</p>

<p>
	ثانيًا، ثم أرسل ملف التثبيت إلى الخادم الذي تريد استضافة الأداة Checkmk عليه. أستخدم لتنفيذ ذلك أمر scp، وسيكون عنواني في هذه المقالة 10.0.2.15.
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_374_7" style="">
<span class="pln">$ scp check</span><span class="pun">-</span><span class="pln">mk</span><span class="pun">-</span><span class="pln">raw</span><span class="pun">-</span><span class="pln">X</span><span class="pun">.</span><span class="pln">Y</span><span class="pun">.</span><span class="typ">Zp8_0</span><span class="pun">.</span><span class="pln">focal_amd64</span><span class="pun">.</span><span class="pln">deb tux@10</span><span class="pun">.</span><span class="lit">0.2</span><span class="pun">.</span><span class="lit">15</span><span class="pun">:/</span><span class="pln">tmp</span></pre>

<p>
	ستنفَّذ جميع الإجراءات التالية في هذه المقالة التعليمية على الخادم المضيف.
</p>

<p>
	ثالثًا، سجل الدخول إلى الخادم المضيف باستخدام أمر <code><a href="https://academy.hsoub.com/devops/security/ssh/%D8%A3%D9%86%D9%81%D8%A7%D9%82-ssh%D8%8C-%D9%85%D8%A7%D9%87%D9%8A%D8%AA%D9%87%D8%A7-%D9%88%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A5%D8%B9%D8%AF%D8%A7%D8%AF%D9%87%D8%A7-r76/" rel=""><abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr></a></code>.
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_374_12" style="">
<span class="pln">$ <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">ssh</abbr> tux@10</span><span class="pun">.</span><span class="lit">0.2</span><span class="pun">.</span><span class="lit">15</span></pre>

<h3>
	ثبت حزمة Checkmk
</h3>

<p>
	عليك الآن تثبيت الحزمة متضنةً جميع مستودعاتها dependencies من خلال مدير الحزم في توزيعة نظام التشغيل لديك مثل <code>apt</code> أو <code>dnf</code>:
</p>

<pre class="ipsCode">
$ sudo apt install /tmp/check-mk-raw-X.Y.Zp8_0.focal_amd64.deb
</pre>

<p>
	بعد اكتمال عملية التثبيت اجرِِ اختبارًا بتنفيذ الأمر <code>omd</code>:
</p>

<pre class="ipsCode">
$ omd version
</pre>

<p>
	إن الأمر <code>omd</code> هو اختصار لعبارة <a href="https://checkmk.com/guides/open-monitoring-distribution" rel="external nofollow">توزيعة المراقبة المفتوحة Open Monitoring Distribution</a> وهو مشروع مفتوح المصدر أنشأه ماثياس كيتنر مبتكر أداة Checkmk، يساعدك في تثبيت أداة مراقبة مجمَّعة من مكونات متنوعة مفتوحة المصدر.
</p>

<h3>
	إنشاء موقع مراقبة Checkmk
</h3>

<p>
	تعد الخطوة التالية هي إنشاء موقع مراقبة أولي ("الموقع" هو <em>نسخة instance</em>). نفذ الأمر <code>omd create</code> لإنشاء موقع Checkmk جديد وسمه ما شئت. سأسميه في هذا المثال <code>checkmk_demo</code>.
</p>

<pre class="ipsCode">
$ sudo omd create checkmk_demo
</pre>

<p>
	ستتلقى في الرد معلومات مساعِدة عن طريقة إنشاء موقع Checkmk والوصول إليه. اتبع الخطوات لتغيير كلمة المرور الآن لكنني أفضل أن أغيرها في واجهة الويب الخاصة بأداة Checkmk. لذا حاليًا انسخ كلمة المرور المولَّدة عشوائيًا (ستستخدمها في الخطوات التالية) وشغّل موقع المراقبة الخاص بك:
</p>

<pre class="ipsCode">
$ sudo omd start checkmk_demo
</pre>

<p>
	ينبغي أن تتعمق في أداة Checkmk لاحقًا، فمن المهم أن تفهم ما حدث توًا.
</p>

<ul>
<li>
		أنشأتَ مستخدمًا جديدًا يعرَف باسم <em>site user</em>، ومجموعةً بنفس اسم الموقع على خادمك.
	</li>
	<li>
		أنشِئ مجلد للموقع في المسار <code>‎/omd/sites</code> (مثل <code>/omd/sites/checkmk_demo</code>). كما تنسخ أداة Checkmk إعداداتها الافتراضية إلى المجلد الجديد.
	</li>
	<li>
		أنشِئ مستخدم باسم <em>cmkadmin</em> لواجهة الويب لأداة Checkmk.
	</li>
</ul>
<h3>
	ابدأ عملية المراقبة بأداة Checkmk
</h3>

<p>
	حان وقت الانتقال إلى واجهة المستخدم لأداة Checkmk في متصفح الانترنت الخاص بك. يكون لكل موقع Checkmk رابط URL خاص به، يتكون من العنوان IP أو اسم المضيف لخادمك المخصص لعملية المراقبة واسم موقع Checkmk. توجد ملفات تثبيت Checkmk في هذا المثال في المسار monitoring-host-server/checkmk_demo/.
</p>

<ol>
<li>
		افتح رابط موقع Checkmk في متصفح جهازك. يمكنك فتح الرابط الظاهر على طرفية حاسوبك.
	</li>
	<li>
		سجل الدخول بمستخدم <em>cmkadmin</em> باستخدام كلمة المرور التي نسختها من الطرفية. عندما تسجل الدخول ستجد لوحة تحكم فارغة.
	</li>
	<li>
		اضغط على فئة <strong>المستخدم User</strong> في الشريط الجانبي sidebar على اليسار، ثم اضغط على <strong>تغيير كلمة المرور change password</strong> في فئة <strong>Profile</strong>.
	</li>
</ol>
<h2>
	إعداد خدمة المراقبة
</h2>

<p>
	تدعم أداة Checkmk عدة وسائل من خوادم المراقبة، وأفضل أسلوب لمراقبة الخوادم استخدام وكلاء agents لأداة Checkmk. عليك أن تثبت الوكيل قبل إضافة خادم.
</p>

<ul>
<li>
		أولًا، اضغط على <strong>إعداد Setup</strong> في الشريط الجانبي اليساري (الزر على شكل عجلة مسننة)، هذه لوحة التحكم التي تضبط فيها كافة الإعدادات وتجد فيها وكلاء المراقبة. جميع الصور في هذه المقالة مأخوذة من نسخة Raw Edition مفتوحة المصدر، لكن توجد بينها وبين واجهة المستخدم في نسخة Enterprise Edition بعض الاختلافات.
	</li>
	<li>
		ثانيًا، اضغط على <strong>وكلاء Agents</strong> واختر الحزمة التي تناسب <a href="https://academy.hsoub.com/files/24-%D8%A3%D9%86%D8%B8%D9%85%D8%A9-%D8%A7%D9%84%D8%AA%D8%B4%D8%BA%D9%8A%D9%84-%D9%84%D9%84%D9%85%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D9%86/" rel="">نظام التشغيل</a> لديك. إن حزم الوكلاء في لينوكس متوفرة بصيغتي الملفات RPM و DEB.
	</li>
</ul>
<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="91248" href="https://academy.hsoub.com/uploads/monthly_2022_02/002checkmk_agent.png.185ef82414afc6bffa2e2cf3a117b323.png" rel=""><img alt="002checkmk_agent.png" class="ipsImage ipsImage_thumbnailed" data-fileid="91248" data-unique="qgvoac65o" src="https://academy.hsoub.com/uploads/monthly_2022_02/002checkmk_agent.thumb.png.cb41271492eb030bcf56f310ed0feab9.png"></a>
</p>

<p style="text-align: center;">
	(اختيار وكيل)
</p>

<ul>
<li>
		ثالثًا، حمّل الوكيل agent وثبته على الخادم المضيف لأداة المراقبة، وبعد ذلك اختبر أداء الوكيل بتنفيذ أمر <code>check_mk_agent</code> في طرفية خادمك.
	</li>
</ul>
<h2>
	إضافة مضيف
</h2>

<p>
	بعدما ثبتّ الوكيل، ارجع إلى شاشة <strong>Setup</strong> واختر <strong>المضيفين Hosts</strong> ثم اضغط على <strong>إضافة مضيف Add host</strong> وأضف اسم خادمك إلى جانب خيار <strong>اسم المضيف Hostname</strong>.
</p>

<p>
	إذا كان لديك <a href="https://academy.hsoub.com/devops/servers/dns/%D8%AA%D9%86%D8%B5%D9%8A%D8%A8-%D9%88%D8%A5%D8%B9%D8%AF%D8%A7%D8%AF-%D8%AE%D8%AF%D9%85%D8%A9-%D8%A7%D8%B3%D9%85-%D8%A7%D9%84%D9%86%D8%B7%D8%A7%D9%82-dns-%D8%B9%D9%84%D9%89-%D8%AE%D9%88%D8%A7%D8%AF%D9%8A%D9%85-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-r176/" rel="">خادم DNS</a> معد في شبكتك، ستجد Checkmk <a href="https://academy.hsoub.com/certificates/cisco/ccna/%d8%a8%d9%86%d8%a7%d8%a1-%d9%85%d8%ae%d8%b7%d8%b7-%d9%84%d8%b9%d9%86%d8%a7%d9%88%d9%8a%d9%86-ip-%d8%b9%d8%a8%d8%b1-%d8%a7%d9%84%d8%b4%d8%a8%d9%83%d8%a7%d8%aa-%d8%a7%d9%84%d9%81%d8%b1%d8%b9%d9%8a%d8%a9-%d8%b9%d9%86%d8%af-%d8%a8%d9%86%d8%a7%d8%a1-%d8%a7%d9%84%d8%b4%d8%a8%d9%83%d8%a7%d8%aa-r23/" rel="">العنوان IP</a> لاسم المضيف الذي حددته تلقائيًا. وإلا أضف العنوان من خلال الضغط على مربع الاختيار إلى جانب خيار <strong>IPv4 Address</strong>. إذا أضفت عنوانًا اختر أي اسم مضيف تريده، ولا تعدّل بقية الخيارات.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="91249" href="https://academy.hsoub.com/uploads/monthly_2022_02/003checkmk_hosts.png.bb3cc589f9c9bee89f814dfabbb0cb65.png" rel=""><img alt="003checkmk_hosts.png" class="ipsImage ipsImage_thumbnailed" data-fileid="91249" data-unique="d3pz9obg9" src="https://academy.hsoub.com/uploads/monthly_2022_02/003checkmk_hosts.thumb.png.44fd17b13286ab76ec066966f9c741bd.png"></a>
</p>

<p style="text-align: center;">
	(إضافة مضيف)
</p>

<p>
	اضغط بعدها على <strong>حفظ التغييرات والانتقال إلى ضبط الخدمة Save &amp; go to service configuration</strong>. تعمل الآن Checkmk على الاكتشاف التلقائي لأية خدمات مناسبة تحتاج إلى المراقبة على ذلك المضيف ويصنفها بفئة <em>خدمات معلَّقة Undecided services</em>. كما تضيف Checkmk تلقائيًا تصنيفات حسب نوع الجهاز كما هو موضح في الصورة.
</p>

<p>
	بعدها، اضغط على <strong>معالجة الجميع Fix all</strong> لمراقبة جميع هذه الخدمات. يضيف ذلك جميع الخدمات وتصنيفات المضيف التي رُصدَت إلى لوحة تحكم المراقبة لديك، ويزيل الخدمات التي اختفت. تستطيع بالطبع إدارة الخدمات بنفسك لكن خيار <strong>Fix all</strong> تسهل هذه العملية كثيرًا.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="91250" href="https://academy.hsoub.com/uploads/monthly_2022_02/004checkmk_fix-all.png.a83ee1da565c83064005aebc38ffa503.png" rel=""><img alt="004checkmk_fix-all.png" class="ipsImage ipsImage_thumbnailed" data-fileid="91250" data-unique="xybkbbjli" src="https://academy.hsoub.com/uploads/monthly_2022_02/004checkmk_fix-all.thumb.png.2a21ef8b5a7efe36c825485c61a637e5.png"></a>
</p>

<p style="text-align: center;">
	(خيار Fix all لمراقبة المضيف)
</p>

<p>
	أخيرًا، ثم اضغط على الحقل المحدَّد الذي يتضمن إشارة تعجب صفراء <strong>(!)</strong> في الزاوية اليمنى في الأعلى، لتفعيل التعديلات التي أجريتها. اضغط على <strong>التفعيل على المواقع المختارة Activate on selected sites</strong>، وبهذا ستكون نجحت في إضافة أول خادم إلى عملية المراقبة لديك.
</p>

<p>
	إن لزوم التأكيد على تفعيل التعديلات هو آلية وقائية، فكل التعديلات التي أجريتها تصنف ضمن قائمة <strong>التعديلات المعلَّقة Pending changes</strong> أولًا حتى تراجع أي تعديل قبل أن تفعله ويؤثر على عملية المراقبة. تختلف Checkmk بين عملية الإعداد باعتبارها بيئة ضبط الإعدادات التي تدير فيها المضيفين والخدمات والإعدادات، ومنطقة <em>المراقبة Monitor</em> التي تجري فيها عملية المراقبة الفعلية. لا تؤثر إضافة المضيفين الجدد وإجراء أية تعديلات أخرى في الإعدادات على عملية المراقبة في البداية، عليك أن تفعلها حتى تطبَّق عليها المراقبة.
</p>

<h2>
	المراقبة باستخدام بروتوكول SNMP
</h2>

<p>
	إن مراقبة الشبكة هي مهمة أساسية أخرى إلى جانب مراقبة الخادم. وسأعرض عليك في مثال على ذلك كيف تراقب مبدلًا switch عن طريق بروتوكول SNMP. كل ما عليك فعله هو التأكد من تفعيل وكيل SNMP على الجهاز الذي تريد مراقبته، ومن إمكانية وصول خادمك الذي ثبتّ عليه Checkmk إلى ذلك الجهاز.
</p>

<ol>
<li>
		توجه إلى <strong>Setup</strong> ثم <strong>Hosts</strong> ثم اضغط على Add host.
	</li>
	<li>
		أدخل اسم المضيف والعنوان (إذا تطلب الأمر). تفترض Checkmk افتراضيًا أنك تستخدم وكيل Checkmk، لذا عليك تعديل ذلك في منطقة <strong>Monitoring agents</strong>.
	</li>
	<li>
		فعل مربع الاختيار الموجود إلى جانب <em>SNMP</em> وعدّل إصدار SNMP (سيكون غالبًا SNMP v2 أو SNMP v3). كما تفترض Checkmk افتراضيًا أن منظومة SNMP لديك <em>متاحة Public</em> لأن هذا الخيار هو الافتراضي على معظم أجهزة SNMP. إذا كان الحال كذلك لا تحدد صندوق إضافة <em>بيانات SNMP</em> (كما فعلت أنا)، أما في حالة أخرى حدد هذا الصندوق وأضف بيانات SNMP فيه.
	</li>
</ol>
<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="91251" href="https://academy.hsoub.com/uploads/monthly_2022_02/005checkmk_add-host-snmp.png.adc242da2904037e9b753a665abcb137.png" rel=""><img alt="005checkmk_add-host-snmp.png" class="ipsImage ipsImage_thumbnailed" data-fileid="91251" data-unique="otpe6dhag" src="https://academy.hsoub.com/uploads/monthly_2022_02/005checkmk_add-host-snmp.thumb.png.f353bb7c182b60b997af94bd48b3fdb1.png"></a>
</p>

<p style="text-align: center;">
	(إضافة مضيف SNMP)
</p>

<ol start="4">
<li>
		اضغط على <strong>Save &amp; go to service configuration</strong> وستكتشف Checkmk جميع المنافذ المتاحة حاليًا ووقت التشغيل والتحقق من معلومات SNMP. إذا وجِدت إضافة plug-in مراقبة لنوع محدد من الأجهزة، تكتشف Checkmk المزيد من خدمات المراقبة تلقائيًا.
	</li>
	<li>
		اضغط على <strong>Fix all</strong> واقبل جميع التعديلات.
	</li>
</ol>
<h2>
	مراقبة ممتعة
</h2>

<p>
	أصبح موقع Checkmk الخاص بك الآن يعمل وأضفت إليه مضيفين، وهنا تنتهي هذه المقالة التعليمية، لكن تجربتك الحقيقية في المراقبة بدأت لتوها. ربما قد لاحظت أن Checkmk توفر وكلاء لجميع أنظمة التشغيل تقريبًا حتى تتمكن من إضافة مزيد من المضيفين، وهذه العملية مشابهة لبقية الأنظمة. كما تدعم Checkmk بروتوكول SNMP وIPMI <a href="https://wiki.hsoub.com/HTML" rel="external">وHTML</a> والكثير من الخدمات المعيارية الأخرى، وذلك ليتوفر دومًا لديك طريقة فعالة لمراقبة نظام معين. نتمنى لك مراقبة ممتعة.
</p>

<p>
	ترجمة -وبتصرف- للمقال <a href="https://opensource.com/article/21/8/monitor-linux-server-checkmk" rel="external nofollow">Monitor your Linux server with Checkmk</a> لصاحبه Ferdinand.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
<li>
		<a href="https://academy.hsoub.com/devops/linux/%D9%85%D8%A7-%D9%87%D9%88-%D9%86%D8%B8%D8%A7%D9%85-%D8%A7%D9%84%D8%AA%D8%B4%D8%BA%D9%8A%D9%84-%D9%84%D9%8A%D9%86%D9%83%D8%B3%D8%9F-r451/" rel="">ما هو نظام التشغيل لينكس؟</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/linux/%D8%B9%D8%B4%D8%B1%D9%88%D9%86-%D8%A3%D9%85%D8%B1%D8%A7-%D9%81%D9%8A-%D9%84%D9%8A%D9%86%D9%83%D8%B3-%D9%8A%D9%81%D8%AA%D8%B1%D8%B6-%D8%A3%D9%86-%D9%8A%D8%B9%D8%B1%D9%81%D9%87%D8%A7-%D9%83%D9%84-%D9%85%D8%AF%D9%8A%D8%B1-%D9%86%D8%B8%D9%85-r355/" rel="">عشرون أمرا في لينكس يفترض أن يعرفها كل مدير نظم</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/linux/%D9%85%D8%A7-%D8%A7%D9%84%D9%81%D8%B1%D9%82-%D8%A8%D9%8A%D9%86-%D9%86%D8%B3%D8%AE%D8%A9-%D8%A7%D9%84%D8%AE%D8%A7%D8%AF%D9%85-%D9%88%D9%86%D8%B3%D8%AE%D8%A9-%D8%A7%D9%84%D9%85%D8%B3%D8%AA%D8%AE%D8%AF%D9%85-%D9%85%D9%86-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-%D9%84%D9%8A%D9%86%D9%83%D8%B3-r578/" rel="">ما الفرق بين نسخة الخادم ونسخة المستخدم من أوبنتو لينكس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/linux/" rel="">تثبيت لينكس مع نظام ويندوز</a>
	</li>
</ul>
<p>
	 
</p>
]]></description><guid isPermaLink="false">584</guid><pubDate>Wed, 02 Feb 2022 10:10:49 +0000</pubDate></item><item><title>&#x639;&#x631;&#x636; &#x645;&#x648;&#x627;&#x635;&#x641;&#x627;&#x62A; &#x639;&#x62A;&#x627;&#x62F; &#x62D;&#x627;&#x633;&#x648;&#x628;&#x643; &#x639;&#x646; &#x637;&#x631;&#x64A;&#x642; &#x623;&#x648;&#x627;&#x645;&#x631; &#x646;&#x638;&#x627;&#x645; &#x627;&#x644;&#x62A;&#x634;&#x63A;&#x64A;&#x644; &#x644;&#x64A;&#x646;&#x643;&#x633;</title><link>https://academy.hsoub.com/devops/linux/%D8%B9%D8%B1%D8%B6-%D9%85%D9%88%D8%A7%D8%B5%D9%81%D8%A7%D8%AA-%D8%B9%D8%AA%D8%A7%D8%AF-%D8%AD%D8%A7%D8%B3%D9%88%D8%A8%D9%83-%D8%B9%D9%86-%D8%B7%D8%B1%D9%8A%D9%82-%D8%A3%D9%88%D8%A7%D9%85%D8%B1-%D9%86%D8%B8%D8%A7%D9%85-%D8%A7%D9%84%D8%AA%D8%B4%D8%BA%D9%8A%D9%84-%D9%84%D9%8A%D9%86%D9%83%D8%B3-r583/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_02/61fa4fb7a3c75_----------.png.354268758b430abf0ee262b3d819cfda.png" /></p>

<p>
	تفيدك معرفة تفاصيل عتاد حاسوبك الصلب hardware بعدة نواحٍ، فمثلًا إذا احتجت إلى إصلاح خلل ما ونشرت سؤالًا على منتدى إلكتروني، سيسألك الناس مباشرةً عن تفاصيل حاسوبك. أو إذا أردت أن تطور حاسوبك لا بد أن تعلم مواصفاته والتطويرات المتاحة له بناءً عليها. يجب أن تستجوب حاسوبك لاسكتشاف مواصفاته.
</p>

<p>
	إن أسهل طريقة لذلك هي استخدام إحدى برامج لينوكس المعيارية ذات الواجهة الرسومية:
</p>

<ul>
<li>
		i-nex: يجمع معلومات العتاد الصلب ويعرضها بأسلوب مشابه لبرنامج CPU-Z المعروف على <a href="https://academy.hsoub.com/files/24-%D8%A3%D9%86%D8%B8%D9%85%D8%A9-%D8%A7%D9%84%D8%AA%D8%B4%D8%BA%D9%8A%D9%84-%D9%84%D9%84%D9%85%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D9%86/" rel="">نظام التشغيل</a> ويندوز.
	</li>
	<li>
		HardInfo: يعرض مواصفات العتاد الصلب، ويتضمن مجموعةً من 8 برامج قياس الأداء benchmark programs المعروفة التي تشغلها لتقييم أداء حاسوبك.
	</li>
	<li>
		KInfoCenter و Lshw: يعرضان أيضًا تفاصيل العتاد الصلب، وهما متاحان في أغلب مستودعات البرامج software repositories.
	</li>
</ul>
<p>
	بدلًا عن ذلك يمكنك فتح صندوق جهازك وقراءة مواصفات الأقراص والذاكرة وغيرهما من الملصقات الموجودة عليه. أو تستطيع الدخول إلى لوحات التحكم خلال عملية إقلاع الجهاز التي تسمى لوحات UEFI أو BIOS، وذلك بضغط مفتاح الوظائف function key المناسب خلال عملية الإقلاع للوصول إليها. تمنحك هاتين الطريقتين تفاصيل العتاد الصلب لكنهما تهملان معلومات البرامج.
</p>

<p>
	أو يمكنك تنفيذ أمر على نظام التشغيل لينوكس. لكن مهلًا، يبدو ذلك صعبًا، فلم تلجأ لهذه الطريقة؟
</p>

<p>
	أحيانًا يسهل إيجاد معلومة محددة بتنفيذ أمر موجه بدقة، وقد لا يكون لديك برنامجًا ذا واجهات رسومية أو لا ترغب بتثبيته.
</p>

<p>
	قد يكون السبب الرئيسي في استخدام الأوامر هو كتابة النصوص البرمجية، سواءً كنت تستخدم الصدفة shell على <a href="https://academy.hsoub.com/devops/linux/%D9%85%D8%A7-%D9%87%D9%88-%D9%86%D8%B8%D8%A7%D9%85-%D8%A7%D9%84%D8%AA%D8%B4%D8%BA%D9%8A%D9%84-%D9%84%D9%8A%D9%86%D9%83%D8%B3%D8%9F-r451/" rel="">لينوكس</a> أو أية لغة برمجية أخرى، فإن كتابة <a href="https://academy.hsoub.com/programming/general/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A7%D9%84%D8%AA%D8%B9%D8%A7%D9%85%D9%84-%D9%85%D8%B9-%D8%A7%D9%84%D9%86%D8%B5%D9%88%D8%B5-%D9%81%D9%8A-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-r1341/" rel="">النصوص البرمجية</a> يتطلب عادةً كتابة الأوامر.
</p>

<p>
	لا يستطيع أي مستخدم غير المستخدم الجذر أو المسؤول root تنفيذ العديد من الأوامر التي تكشف عن العتاد الصلب. لذا إما بدّل مستخدمك الحالي إلى المستخدم root، أو نفذ الأمر بواسطة مستخدمك العادي نفسه مسبوقًا بالأمر <code>sudo</code>:
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_3218_11" style="">
<span class="pln">sudo </span><span class="str">&lt;the_line_command&gt;</span></pre>

<p>
	ثم أدخل كلمة مرور المستخدم الجذر root.
</p>

<p>
	تقدم لك هذه المقالة أكثر أوامر استكشاف النظام فائدةً، وسنلخصها لك في نهاية المقالة في جدول ليكون مرجعًا سريعًا.
</p>

<h2>
	لمحة عامة عن العتاد الصلب
</h2>

<p>
	توجد عدة أوامر تمنحك لمحةً عامةً شاملةً عن عتاد حاسوبك الصلب.
</p>

<p>
	يعرض الأمر <code>inxi</code> قائمةً بتفاصيل عن نظام التشغيل <a href="https://academy.hsoub.com/certificates/comptia/%D9%88%D8%AD%D8%AF%D8%A9-%D8%A7%D9%84%D9%85%D8%B9%D8%A7%D9%84%D8%AC%D8%A9-%D8%A7%D9%84%D9%85%D8%B1%D9%83%D8%B2%D9%8A%D8%A9-r58/" rel="">ووحدة المعالجة المركزية CPU</a> والرسوم البيانية graphics والصوت والشبكة والأقراص وتقسيم الأقراص والحساسات sensors وغيرها. يطلب المشاركون بالمنتديات أن يعرفوا خرج هذا الأمر عندما يحاولون المساعدة في حل مشكلات الآخرين، فهو أداة معيارية لتشخيص المشكلة تستخدم لعلاج المشكلات:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_3218_14" style="">
<span class="pln">inxi </span><span class="pun">-</span><span class="typ">Fxz</span></pre>

<p>
	يعني المعامل <strong>F-</strong> أن الخرج سيكون كاملًا، ويضيف المعامل <strong>x</strong> تفاصيلًا على الخرج، ويخفي المعامل <strong>z</strong> المعلومات التعريفية الشخصية مثل العناوين المنطقية IP والفيزيائية MAC. يعرض الأمران <code>hwinfo</code> و <code>Ishw</code> نفس المعلومات تقريبًا بصياغة مختلفة:
</p>

<pre class="ipsCode">
hwinfo --short
</pre>

<p>
	أو
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_3218_19" style="">
<span class="pln">lshw </span><span class="pun">-</span><span class="kwd">short</span></pre>

<p>
	تعرض الصياغة الطويلة لهذين الأمرين خرجًا مستفيضًا لكن تصعب قراءته:
</p>

<pre class="ipsCode">
hwinfo
</pre>

<p>
	أو
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3218_21" style="">
<span class="pln">lshw</span></pre>

<h2>
	تفاصيل وحدة المعالجة المركزية
</h2>

<p>
	اعرض تفاصيل وحدة المعالجة المركزية بتنفيذ الأمر<code>Iscpu</code> أو نظيره <code>Ishw</code>:
</p>

<pre class="ipsCode">
lscpu
</pre>

<p>
	أو
</p>

<pre class="ipsCode">
lshw -C cpu
</pre>

<p>
	تعرض آخر بضع أسطر من الخرج في كلتا الحالتين كافة إمكانيات وحدة المعالجة المركزية، وهنا تستطيع أن تعرف هل يدعم معالج حاسوبك خصائص معينة.
</p>

<p>
	تستطيع اختصار الإسهاب في خرج جميع هذه الأوامر وتقليص أية إجابة إلى تفصيل واحد فقط من خلال تحليل خرج الأمر باستخدام أمر <strong>grep</strong>. فمثلًا للاكتفاء بإظهار نوع وطراز وحدة المعالجة المركزية نكتب:
</p>

<pre class="ipsCode">
lshw -C cpu | grep -i product
</pre>

<p>
	لعرض سرعة وحدة المعالجة المركزية فقط بوحدة ميغاهرتز:
</p>

<pre class="ipsCode">
lscpu | grep -i mhz
</pre>

<p>
	لعرض معدّل قدرتها وفق مقياس BogoMips:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3218_23" style="">
<span class="pln">lscpu </span><span class="pun">|</span><span class="pln"> grep </span><span class="pun">-</span><span class="pln">i bogo</span></pre>

<p>
	يضمن معامل <strong>i-</strong> في الأمر <strong>grep</strong> أن يتجاهل عند البحث حالة الأحرف سواءً كانت صغيرةً أو كبيرةً.
</p>

<h2>
	الذاكرة
</h2>

<p>
	تتيح لك <a href="https://academy.hsoub.com/devops/linux/%D8%B9%D8%B4%D8%B1%D9%88%D9%86-%D8%A3%D9%85%D8%B1%D8%A7-%D9%81%D9%8A-%D9%84%D9%8A%D9%86%D9%83%D8%B3-%D9%8A%D9%81%D8%AA%D8%B1%D8%B6-%D8%A3%D9%86-%D9%8A%D8%B9%D8%B1%D9%81%D9%87%D8%A7-%D9%83%D9%84-%D9%85%D8%AF%D9%8A%D8%B1-%D9%86%D8%B8%D9%85-r355/" rel="">الأوامر في لينوكس</a> جمع كافة التفاصيل الممكنة عن ذاكرة حاسوبك، كما تمكنك أن تحدد إمكانية إضافة ذاكرة إضافية إلى حاسوبك دون أن تفتح صندوق حاسوبك حتى.
</p>

<p>
	استخدم الأمر <code>dmidecode</code> لعرض كل بطاقة ذاكرة موجودة على حاسوبك وسعتها:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_3218_26" style="">
<span class="pln">dmidecode </span><span class="pun">-</span><span class="pln">t memory </span><span class="pun">|</span><span class="pln"> grep </span><span class="pun">-</span><span class="pln">i size</span></pre>

<p>
	جرب تنفيذ السطر التالي للحصول على تفاصيل أكثر عن كل بطاقة من بطاقات <a href="https://academy.hsoub.com/certificates/comptia/%D8%A7%D9%84%D8%B0%D8%A7%D9%83%D8%B1%D8%A9-%D9%88%D8%A3%D9%86%D9%88%D8%A7%D8%B9%D9%87%D8%A7-r59/" rel="">الذاكرة</a> RAM مثل النوع والحجم والسرعة والجهد:
</p>

<pre class="ipsCode">
lshw -short -C memory
</pre>

<p>
	وإن الأمر الذي لا بد أنك ترغب في معرفته هو الحد الأعظمي للذواكر التي يمكن إضافتها إلى حاسوبك، وذلك من خلال تنفيذ الأمر التالي:
</p>

<pre class="ipsCode">
dmidecode -t memory | grep -i max
</pre>

<p>
	ثم اكتشف هل توجد فتحات فارغة لتركيب بطاقات ذاكرة إضافية. يمكنك معرفة ذلك دون الحاجة إلى فك حاسوبك من خلال تنفيذ الأمر التالي:
</p>

<pre class="ipsCode">
lshw -short -C memory | grep -i empty
</pre>

<p>
	عندما يكون خرج الأمر فارغًا يعني أن جميع فتحات بطاقات الذواكر مستخدَمة.
</p>

<p>
	يتطلب تحديد حجم ذاكرة جهاز الفيديو/بطاقة الشاشة لديك تنفيذ عدة أوامر. ابدأ بعرض جميع الأجهزة لديك باستخدام أمر <code>Ispci</code>، واحصر الخرج ليعرض جهاز الفيديو الذي ترغب بعرض تفاصيله:
</p>

<pre class="ipsCode">
lspci | grep -i vga
</pre>

<p>
	سيبدو سطر الخرج الذي يعرّف المتحكم بالفيديو عادةً كالسطر التالي:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_3218_29" style="">
<span class="lit">00</span><span class="pun">:</span><span class="lit">02.0</span><span class="pln"> VGA compatible controller</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Intel</span><span class="pln"> </span><span class="typ">Corporation</span><span class="pln"> </span><span class="lit">82Q35</span><span class="pln"> </span><span class="typ">Express</span><span class="pln"> </span><span class="typ">Integrated</span><span class="pln"> </span><span class="typ">Graphics</span><span class="pln"> </span><span class="typ">Controller</span><span class="pln"> </span><span class="pun">(</span><span class="pln">rev </span><span class="lit">02</span><span class="pun">)</span></pre>

<p>
	ثم أعد تنفيذ الأمر <code>Ispci</code> مع ذكر رقم جهاز الفيديو باعتباره الجهاز المطلوب:
</p>

<pre class="ipsCode">
lspci -v -s 00:02.0
</pre>

<p>
	يكون سطر الأوامر المحدد بأنه prefetchable هو حجم ذاكرة أجهزة الفيديو على حاسوبك:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_3218_31" style="">
<span class="pun">...</span><span class="pln">
</span><span class="typ">Memory</span><span class="pln"> at f0100000 </span><span class="pun">(</span><span class="lit">32</span><span class="pun">-</span><span class="pln">bit</span><span class="pun">,</span><span class="pln"> non</span><span class="pun">-</span><span class="pln">prefetchable</span><span class="pun">)</span><span class="pln"> </span><span class="pun">[</span><span class="pln">size</span><span class="pun">=</span><span class="lit">512K</span><span class="pun">]</span><span class="pln">
I</span><span class="pun">/</span><span class="pln">O ports at </span><span class="lit">1230</span><span class="pln"> </span><span class="pun">[</span><span class="pln">size</span><span class="pun">=</span><span class="lit">8</span><span class="pun">]</span><span class="pln">
</span><span class="typ">Memory</span><span class="pln"> at e0000000 </span><span class="pun">(</span><span class="lit">32</span><span class="pun">-</span><span class="pln">bit</span><span class="pun">,</span><span class="pln"> prefetchable</span><span class="pun">)</span><span class="pln"> </span><span class="pun">[</span><span class="pln">size</span><span class="pun">=</span><span class="lit">256M</span><span class="pun">]</span><span class="pln">
</span><span class="typ">Memory</span><span class="pln"> at f0000000 </span><span class="pun">(</span><span class="lit">32</span><span class="pun">-</span><span class="pln">bit</span><span class="pun">,</span><span class="pln"> non</span><span class="pun">-</span><span class="pln">prefetchable</span><span class="pun">)</span><span class="pln"> </span><span class="pun">[</span><span class="pln">size</span><span class="pun">=</span><span class="lit">1M</span><span class="pun">]</span><span class="pln">
</span><span class="pun">...</span></pre>

<p>
	نفذ الأمر التالي لعرض حجم الاستهلاك الحالي للذاكرة بواحدة ميغابايتس:
</p>

<pre class="ipsCode">
free -m
</pre>

<p>
	يعرض لك هذا الأمر حجم الذاكرة المتاح والحجم المستهلَك وحجم مساحة <a href="https://academy.hsoub.com/devops/servers/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A5%D8%B6%D8%A7%D9%81%D8%A9-%D9%82%D8%B1%D8%B5-swap-%D8%B9%D9%84%D9%89-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-1404-r230/" rel="">الذاكرة swap</a> وهل هي مستخدَمة أم لا. فيما يلي مثال عن خرج هذا الأمر:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_3218_33" style="">
<span class="pln">              total        used        free     shared    buff</span><span class="pun">/</span><span class="pln">cache   available
</span><span class="typ">Mem</span><span class="pun">:</span><span class="pln">    </span><span class="lit">11891</span><span class="pln">        </span><span class="lit">1326</span><span class="pln">        </span><span class="lit">8877</span><span class="pln">      </span><span class="lit">212</span><span class="pln">        </span><span class="lit">1687</span><span class="pln">       </span><span class="lit">10077</span><span class="pln">
</span><span class="typ">Swap</span><span class="pun">:</span><span class="pln">    </span><span class="lit">1999</span><span class="pln">           </span><span class="lit">0</span><span class="pln">        </span><span class="lit">1999</span></pre>

<p>
	يقدم لك الأمر <strong>top</strong> مزيدًا من التفاصيل عن استهلاك الذاكرة، فهو يعرض الاستهلاك الإجمالي الحالي للذاكرة ووحدة المعالجة المركزية، ويصنفها حسب معرف الإجرائية process ID، ومعرف المستخدم user ID، والأوامر قيد التشغيل. ويكون خرجه نصًا يملأ الشاشة.
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_3218_36" style="">
<span class="pln">top</span></pre>

<h2>
	الأقراص وأنظمة الملفات والأجهزة
</h2>

<p>
	لعرض سطر واحد يصف كل قرص على حاسوبك:
</p>

<pre class="ipsCode">
lshw -short -C disk
</pre>

<p>
	احصل على تفاصيل عن أي قرص من نوع ساتا SATA، مثل طرازه ورقمه التسلسلي والأنماط التي يدعمها، وعدد قطاعاته وغيرها من التفاصيل بتنفيذ الأمر التالي:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_3218_38" style="">
<span class="pln">hdparm </span><span class="pun">-</span><span class="pln">i </span><span class="pun">/</span><span class="pln">dev</span><span class="pun">/</span><span class="pln">sda</span></pre>

<p>
	طبعًا لا تنسى أن تبدل <strong>sda</strong> بـ <strong>sdb</strong> أو أي رمز جهاز device mnemonic عند الضرورة.
</p>

<p>
	لعرض جميع الأقراص مع كافة أقسامها partitions المعرّفة بالإضافة إلى حجم كل منها:
</p>

<pre class="ipsCode">
lsblk
</pre>

<p>
	لمزيد من التفاصيل مثل عدد القطاعات والأحجام ومعرّفات أنظمة الملفات ونوعها والقطاعات الابتدائية والنهائية لكل قسم:
</p>

<pre class="ipsCode">
fdisk -l
</pre>

<p>
	لتشغّل حاسوبًا بنظام تشغيل لينوكس يجب أن تعرّف أقسامًا قابلةً للتحميل mountable partitions إلى <a href="https://academy.hsoub.com/certificates/redhat/rhcsa/%D9%85%D8%A8%D8%A7%D8%AF%D8%A6-%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D8%A7%D9%84%D8%B9%D9%85%D9%84%D9%8A%D8%A7%D8%AA-processes-%D8%B9%D9%84%D9%89-redhat-enterprise-linux-r44/" rel="">محمّل الإقلاع GRUB</a>. يظهر لك الأمر هذه المعلومات؛ إذ يعرض المعرّف الفريد لكل قسم unique identifier (اختصارًا UUID) ونوع نظام ملفاته (مثل ext3 أو ext4):
</p>

<pre class="ipsCode">
blkid
</pre>

<p>
	لعرض أنظمة الملفات المحمَّلة ونقط التوصيل mount points الخاصة بها والمساحة المستهلكة والفارغة من كل منها (بواحدة ميغابايتس):
</p>

<pre class="ipsCode">
df -m
</pre>

<p>
	وأخيرًا يمكنك عرض تفاصيل كافة نواقل buses منافذ USB و PCI والأجهزة من خلال تنفيذ الأمر:
</p>

<pre class="ipsCode">
lsusb
</pre>

<p>
	أو تنفيذ الأمر:
</p>

<pre class="ipsCode">
lspci
</pre>

<h2>
	الشبكة
</h2>

<p>
	يوفر نظام التشغيل لينوكس عددًا هائلًا من الأوامر الشبكية، سنستعرض بعضها.
</p>

<p>
	لعرض تفاصيل العتاد الصلب الخاص ببطاقة الشبكة ننفذ الأمر التالي:
</p>

<pre class="ipsCode">
lshw -C network
</pre>

<p>
	كان الأمر المستخدَم في عرض بطاقات الشبكة network interfaces عادةً <code>ifconfig</code>:
</p>

<pre class="ipsCode">
ifconfig -a
</pre>

<p>
	لكن أصبح العديد من الناس الآن يستخدمون الأمر:
</p>

<pre class="ipsCode">
ip link show
</pre>

<p>
	أو الأمر:
</p>

<pre class="ipsCode">
netstat -i
</pre>

<p>
	تساعدك قراءة الخرج في معرفة الاختصارات الشبكية الشائعة:
</p>
<style type="text/css">
table {
    width: 100%;
}

thead {
    vertical-align: middle;
    text-align: center;
} 

td, th {
    border: 1px solid #dddddd;
    text-align: right;
    padding: 8px;
    text-align: inherit;

}
tr:nth-child(even) {
    background-color: #dddddd;
}</style>
<table>
<thead><tr>
<th>
				<strong>الاختصار</strong>
			</th>
			<th>
				<strong>المعنى</strong>
			</th>
		</tr></thead>
<tbody>
<tr>
<td>
				<strong>lo</strong>
			</td>
			<td>
				بطاقة الاسترجاع Loopback interface
			</td>
		</tr>
<tr>
<td>
				<strong>eth0</strong> أو <strong>enp*</strong>
			</td>
			<td>
				بطاقة إيثرنت Ethernet interface
			</td>
		</tr>
<tr>
<td>
				<strong>wlan0</strong>
			</td>
			<td>
				بطاقة الشبكة اللاسلكية Wireless interface
			</td>
		</tr>
<tr>
<td>
				<strong>ppp0</strong>
			</td>
			<td>
				بطاقة بروتوكول نقطة إلى نقطة Point-to-Point (يستخدمه مودِم الطلب الهاتفي dial-up modem أو اتصال <abbr title="Virtual Private Network | الشبكة الخاصة الافتراضية">VPN</abbr> الذي يعمل ببروتوكول PPTP أو مودِم USB)
			</td>
		</tr>
<tr>
<td>
				<strong>vboxnet0</strong> أو <strong>vmnet*</strong>
			</td>
			<td>
				بطاقة الجهاز الافتراضي Virtual machine interface
			</td>
		</tr>
</tbody>
</table>
<p>
	إن النجوم المذكورة ضمن هذا الجدول هي محارف بدل wildcard characters تنوب عن أية سلسلة من المحارف التي تختلف من نظام إلى آخر.
</p>

<p>
	لعرض البوابة الافتراضية default gateway لجهازك وجداول التوجيه routing tables نفذ أحد الأمرين التاليين:
</p>

<pre class="ipsCode">
ip route | column -t
</pre>

<p>
	أو
</p>

<pre class="ipsCode">
netstat -r
</pre>

<h2>
	البرامج
</h2>

<p>
	دعونا نختم بأمرين يعرضان تفاصيل البرامج منخفضة المستوى، مثلًا تساعدك في معرفة برنامج التحكم بالعتاد firmware المثبَّت على جهازك. يعرض الأمر التالي تاريخ وإصدار UEFI أو BIOS:
</p>

<pre class="ipsCode">
dmidecode -t bios
</pre>

<p>
	ويساعدك الأمر التالي في معرفة إصدار النواة وإذا كانت 64-bit واسم المضيف hostname للشبكة:
</p>

<pre class="ipsCode">
uname -a
</pre>

<h2>
	جدول مرجعي سريع
</h2>

<p>
	يلخص هذا الجدول كافة الأوامر التي تحدثنا عنها في هذا المقال:
</p>

<table>
<thead><tr>
<th>
				<strong>inxi -Fxz</strong> أو <strong>hwinfo --short</strong> أو <strong>lshw -short</strong>
			</th>
			<th>
				تعرض جميع معلومات العتاد الصلب للجهاز
			</th>
		</tr></thead>
<tbody>
<tr>
<td>
				<strong>lscpu</strong> أو <strong>lshw -C cpu</strong>
			</td>
			<td>
				تعرض جميع معلومات وحدة المعالجة المركزية
			</td>
		</tr>
<tr>
<td>
				<strong>lshw -C cpu \grep -i capabilities</strong>
			</td>
			<td>
				يعرض خصائص وحدة المعالجة المركزية مثل PAE و SSE2
			</td>
		</tr>
<tr>
<td>
				<strong>lshw -C cpu \grep -i width</strong>
			</td>
			<td>
				يبين فيما إذا كانت وحدة المعالجة المركزية 32 أو 64 bit
			</td>
		</tr>
<tr>
<td>
				<strong>dmidecode -t memory \grep -i size أو lshw -short -C memory</strong>
			</td>
			<td>
				يعرض حجم الذاكرة الحالي وإعداداتها
			</td>
		</tr>
<tr>
<td>
				<strong>dmidecode -t memory \grep -i max</strong>
			</td>
			<td>
				يعرض الحد الأعظمي من الذاكرة الذي يمكن إضافته للعتاد الصلب
			</td>
		</tr>
<tr>
<td>
				<strong>lshw -short -C memory \grep -i empty</strong> (عندما يكون خرج الأمر فارغًا يعني أن جميع فتحات بطاقات الذواكر مستخدَمة.)
			</td>
			<td>
				تحديد فتحات slots الذاكرة المتاحة
			</td>
		</tr>
<tr>
<td>
				<strong>lspci \grep -i vga </strong>ثم أعد تنفيذها بإضافة رقم الجهاز، مثل:<strong> </strong><strong>lspci -v -s 00:02.0</strong> تكون ذاكرة أجهزة الفيديو هي السطر المحدد بـقيمة prefetchable
			</td>
			<td>
				تحدد حجم ذاكرة أجهزة الفيديو
			</td>
		</tr>
<tr>
<td>
				<strong>free -m</strong> أو <strong>top</strong>
			</td>
			<td>
				يعرض الاستهلاك الحالي للذاكرة
			</td>
		</tr>
<tr>
<td>
				<strong>lshw -short -C disk</strong>
			</td>
			<td>
				يعرض الأقراص الصلبة
			</td>
		</tr>
<tr>
<td>
				<strong>hdparm -i /dev/sda</strong> (بدّل sda إن لزم الأمر)
			</td>
			<td>
				يعرض معلومات مفصَّلة عن قرص صلب محدد
			</td>
		</tr>
<tr>
<td>
				<strong>lsblk (</strong>عرض عام<strong>)</strong> <strong>أو</strong> <strong>fdisk -l</strong> (مفصَّل)
			</td>
			<td>
				تعرض معلومات عن الأقراص وأقسامها partitions
			</td>
		</tr>
<tr>
<td>
				<strong>blkid</strong>
			</td>
			<td>
				يعرض معرفات الأقسام (UUIDs)
			</td>
		</tr>
<tr>
<td>
				<strong>df -m</strong>
			</td>
			<td>
				يعرض أنظمة الملفات المحمَّلة mounted ونقط التوصيل mount points الخاصة بهم ويمكن تحديد الواحدة بميغابايتس لكليهما
			</td>
		</tr>
<tr>
<td>
				<strong>lsusb</strong>
			</td>
			<td>
				يعرض أجهزة USB
			</td>
		</tr>
<tr>
<td>
				<strong>lspci</strong>
			</td>
			<td>
				يعرض أجهزة PCI
			</td>
		</tr>
<tr>
<td>
				<strong>lshw -C network</strong>
			</td>
			<td>
				يعرض تفاصيل بطاقة الشبكة
			</td>
		</tr>
<tr>
<td>
				<strong>ifconfig -a</strong> أو <strong>ip link show</strong> أو <strong>netstat -i</strong>
			</td>
			<td>
				يعرض بطاقات الشبكة
			</td>
		</tr>
<tr>
<td>
				<strong>ip route \column -t أو netstat -r</strong>
			</td>
			<td>
				يعرض جداول التوجيه
			</td>
		</tr>
<tr>
<td>
				<strong>dmidecode -t bios</strong>
			</td>
			<td>
				يعرض معلومات UEFI/BIOS
			</td>
		</tr>
<tr>
<td>
				<strong>uname -a</strong>
			</td>
			<td>
				يعرض إصدار النواة واسم المضيف hostname للشبكة وغير ذلك
			</td>
		</tr>
</tbody>
</table>
<p>
	ترجمة -وبتصرف- للمقال <a href="https://opensource.com/article/19/9/linux-commands-hardware-information" rel="external nofollow">Linux commands to display your hardware information</a> لصاحبه Howard Fosdick.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
<li>
		<a href="https://academy.hsoub.com/apps/general/%D8%A7%D8%AE%D8%AA%D9%8A%D8%A7%D8%B1-%D8%A7%D9%84%D8%B9%D8%AA%D8%A7%D8%AF-%D9%88%D8%A7%D9%84%D8%A8%D8%B1%D8%A7%D9%85%D8%AC-%D9%81%D9%8A-%D8%A7%D9%84%D8%B9%D8%A7%D9%84%D9%85-%D8%A7%D9%84%D8%B1%D9%82%D9%85%D9%8A-r372/" rel="">اختيار العتاد والبرامج في العالم الرقمي</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/general/%D8%B9%D9%84%D9%88%D9%85-%D8%A7%D9%84%D8%AD%D8%A7%D8%B3%D9%88%D8%A8/" rel="">المدخل الشامل لتعلم علوم الحاسوب</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/linux/%d8%a3%d9%84%d9%81-%d8%a8%d8%a7%d8%a1-%d8%a3%d8%b3%d8%a7%d8%b3%d9%8a%d8%a7%d8%aa-%d8%a7%d9%84%d8%aa%d8%b9%d8%a7%d9%85%d9%84-%d9%85%d8%b9-%d9%84%d9%8a%d9%86%d9%83%d8%b3-r61/" rel="">ألف باء أساسيات التعامل مع لينكس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/linux/%d8%a7%d9%84%d8%af%d9%84%d9%8a%d9%84-%d8%a7%d9%84%d9%86%d9%87%d8%a7%d8%a6%d9%8a-%d9%84%d8%a7%d8%ae%d8%aa%d9%8a%d8%a7%d8%b1-%d8%aa%d9%88%d8%b2%d9%8a%d8%b9%d8%a9-%d9%84%d9%8a%d9%86%d9%83%d8%b3-r48/" rel="">الدليل النهائي لاختيار توزيعة لينكس</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">583</guid><pubDate>Wed, 02 Feb 2022 09:36:12 +0000</pubDate></item><item><title>&#x645;&#x627; &#x627;&#x644;&#x641;&#x631;&#x642; &#x628;&#x64A;&#x646; &#x646;&#x633;&#x62E;&#x629; &#x627;&#x644;&#x62E;&#x627;&#x62F;&#x645; &#x648;&#x646;&#x633;&#x62E;&#x629; &#x627;&#x644;&#x645;&#x633;&#x62A;&#x62E;&#x62F;&#x645; &#x645;&#x646; &#x623;&#x648;&#x628;&#x646;&#x62A;&#x648; &#x644;&#x64A;&#x646;&#x643;&#x633;</title><link>https://academy.hsoub.com/devops/linux/%D9%85%D8%A7-%D8%A7%D9%84%D9%81%D8%B1%D9%82-%D8%A8%D9%8A%D9%86-%D9%86%D8%B3%D8%AE%D8%A9-%D8%A7%D9%84%D8%AE%D8%A7%D8%AF%D9%85-%D9%88%D9%86%D8%B3%D8%AE%D8%A9-%D8%A7%D9%84%D9%85%D8%B3%D8%AA%D8%AE%D8%AF%D9%85-%D9%85%D9%86-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-%D9%84%D9%8A%D9%86%D9%83%D8%B3-r578/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_01/61efba0373b0c_--------.png.a8ff07b10913826579f0cb987baeb28d.png" /></p>

<p>
	ستظهر لك عدة خيارات عند الانتقال إلى صفحة التنزيلات Download في <a href="https://ubuntu.com/" rel="external nofollow">الموقع الرسمي لتوزيعة أوبنتو Ubuntu</a>، منها إصدار <a href="https://academy.hsoub.com/devops/linux/%D8%A3%D8%AA%D9%85%D8%AA%D8%A9-%D8%A5%D8%B9%D8%AF%D8%A7%D8%AF-%D8%AE%D8%A7%D8%AF%D9%85-%D8%A3%D9%88%D9%84%D9%8A-%D8%A3%D9%88%D8%A8%D9%88%D9%86%D8%AA%D9%88-%D8%A8%D8%A5%D8%B5%D8%AF%D8%A7%D8%B1-1804-r443/" rel="">خادم أوبنتو</a> Ubuntu Server وإصدار الحاسوب الموجه للمستخدم العادي Ubuntu Desktop.
</p>

<p>
	قد يبدو الأمر مربكًا للمستخدمين الجدد، لماذا يوجد إصداران، بل أربعة إصدارات؟ وأيها يجب أن تستخدم؟ هل هذه الإصدارات متماثلة، وما الفرق بينها؟
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="90192" href="https://academy.hsoub.com/uploads/monthly_2022_01/ubuntu-server-desktop-download.png.10e5f980f8b20579a69c9205d6fafd87.png" rel=""><img alt="ubuntu-server-desktop-download.png" class="ipsImage ipsImage_thumbnailed" data-fileid="90192" data-unique="9h7hhc30g" src="https://academy.hsoub.com/uploads/monthly_2022_01/ubuntu-server-desktop-download.png.10e5f980f8b20579a69c9205d6fafd87.png" style="width: 500px; height: auto;"></a>
</p>

<p>
	سنتعرف في هذا المقال على الفرق بين نسختي الخادم والمستخدم من أوبنتو، وأي منها يجب أن تستخدم.
</p>

<p>
	حتى نميز الفرق بين خادم أوبنتو ومستخدم أوبنتو، يجب أن ندرك أولًا الفرق بين نظام تشغيل الخادم ونظام التشغيل ذي الواجهات الرسومية (نظام تشغيل الحاسوب المكتبي).
</p>

<h2>
	نظام تشغيل الحاسوب المكتبي
</h2>

<p>
	يُشار عادةً إلى الحاسوب الشخصي بحاسوب مكتبي أو كلمة Desktop باللغة الانجليزية، ويوفر نظام تشغيل الحاسوب المكتبي <a href="https://academy.hsoub.com/programming/java/%D9%85%D9%82%D8%AF%D9%85%D8%A9-%D8%A5%D9%84%D9%89-%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D9%88%D8%A7%D8%AC%D9%87%D8%A7%D8%AA-%D8%A7%D9%84%D9%85%D8%B3%D8%AA%D8%AE%D8%AF%D9%85-%D8%A7%D9%84%D8%B1%D8%B3%D9%88%D9%85%D9%8A%D8%A9-gui-%D9%81%D9%8A-%D8%AC%D8%A7%D9%81%D8%A7-r1070/" rel="">واجهة مستخدم رسومية</a> يتحكم بها المستخدم بواسطة الفأرة ولوحة المفاتيح بكل سهولة، حيث أن الهدف الرئيسي لهذا النظام هو توفير إمكانية تصفح الويب، وتعديل المستندات، وعرض الصور أو الفيديو وتعديلها، بالإضافة إلى استخدام الألعاب وكتابة الأكواد البرمجية؛ أي توفير حاسوب للاستخدامات العامة للأشخاص، و المستخدمين العاديين، وأفراد العائلة.
</p>

<p>
	سنستخدم في هذا المقال مصطلح "حاسوب مكتبي" والذي يشمل الحاسوب المحمول أيضًا، فهو المصطلح العام للتعبير عن أي حاسوب شخصي.
</p>

<h2>
	نظام تشغيل الخادم
</h2>

<p>
	يُسهل نظام تشغيل الخادم تفعيل خدمات الاستضافة على الويب، مثل <a href="https://academy.hsoub.com/apps/web/%D8%A3%D9%86%D9%88%D8%A7%D8%B9-%D8%A7%D9%84%D8%A7%D8%B3%D8%AA%D8%B6%D8%A7%D9%81%D8%A7%D8%AA-%D9%88%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AD%D8%AC%D8%B2-%D8%A7%D8%B3%D8%AA%D8%B6%D8%A7%D9%81%D8%A9-%D9%88%D8%B1%D8%A8%D8%B7%D9%87%D8%A7-%D9%85%D8%B9-%D8%A7%D8%B3%D9%85-%D9%86%D8%B7%D8%A7%D9%82-%D9%85%D8%AA%D8%AC%D8%B1%D9%83-%D8%A7%D9%84%D8%A5%D9%84%D9%83%D8%AA%D8%B1%D9%88%D9%86%D9%8A-r392/" rel="">استضافة المواقع</a> الالكترونية، والتطبيقات، وخوادم الوسائط المرئية وقواعد البيانات، وغيرها.
</p>

<p>
	لا يُزود هذا النظام عادةً بواجهة رسومية، بل يجب عليك التعامل مع النظام عن طريق كتابة الأوامر في سطر الأوامر أو ما يعرف <a href="https://academy.hsoub.com/devops/linux/%25D9%2585%25D8%25AF%25D8%25AE%25D9%2584-%25D8%25A5%25D9%2584%25D9%2589-%25D8%25B7%25D8%25B1%25D9%2581%25D9%258A%25D9%2591%25D8%25A9-%25D9%2584%25D9%258A%25D9%2586%25D9%2583%25D8%25B3-linux-terminal-r18/" rel="">بالطرفية Terminal</a>، كما في أنظمة التشغيل المبنية على <a href="https://academy.hsoub.com/devops/linux/%D9%85%D8%A7-%D9%87%D9%88-%D9%86%D8%B8%D8%A7%D9%85-%D8%A7%D9%84%D8%AA%D8%B4%D8%BA%D9%8A%D9%84-%D9%84%D9%8A%D9%86%D9%83%D8%B3%D8%9F-r451/" rel="">نظام لينكس Linux</a>.
</p>

<p>
	وتكمن ميزة هذه النظم بأن نظام التشغيل لا يتطلب ذاكرة وصول عشوائية RAM ذات حجم كبير أو حاسوب ذو قدرات حوسبة عالية، لأنها لاتتعامل مع <a href="https://academy.hsoub.com/questions/1019-%25D9%2585%25D8%25A7%25D8%25B0%25D8%25A7-%25D9%258A%25D9%2582%25D8%25B5%25D8%25AF-%25D8%25A8%25D9%2585%25D8%25B5%25D8%25B7%25D9%2584%25D8%25AD-%25D9%2588%25D8%25A7%25D8%25AC%25D9%2587%25D8%25A9-%25D9%2581%25D9%258A-%25D9%2584%25D9%258A%25D9%2586%25D9%2583%25D8%25B3%25D8%259F/" rel="">بيئة سطح مكتب رسومية</a>. كما يُزود نظام تشغيل الخادم بحزم لها إعداداتها الخاصة.
</p>

<p>
	بت الآن تعرف الفرق بين إصداري خادم أوبنتو ومستخدم أوبنتو بعد أن أوضحنا الفرق بين نظامي الخادم والحاسوب المكتبي.
</p>

<h2>
	واجهة المستخدم
</h2>

<p>
	تُعد <a href="https://academy.hsoub.com/design/user-interface/%D8%AA%D8%B5%D9%85%D9%8A%D9%85-%D9%88%D8%A7%D8%AC%D9%87%D8%A9-%D8%A7%D9%84%D9%85%D8%B3%D8%AA%D8%AE%D8%AF%D9%85-%D9%85%D8%A8%D8%A7%D8%AF%D8%A6-%D9%8A%D8%AC%D8%A8-%D8%AA%D8%B9%D9%84%D9%85%D9%87%D8%A7-%D9%85%D9%86-%D8%A3%D8%AE%D8%B7%D8%A7%D8%A1-%D9%85%D8%A4%D9%84%D9%85%D8%A9-r657/" rel="">واجهة المستخدم</a> أحد أبرز الفروق بين نسخة الخادم ونسخة نظام الحاسوب المكتبي أو نسخة المستخدم من أوبنتو، حيث أن نسخة المستخدم تعتمد واجهة غنوم Gnome الرسومية ويتم التعامل معها بسهولة باستخدام الفأرة.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="90189" href="https://academy.hsoub.com/uploads/monthly_2022_01/installing-gui-ubuntu-server-gnome-desktop.png.c93bb996d613712adb4247a8acaf6f82.png" rel=""><img alt="installing-gui-ubuntu-server-gnome-desktop.png" class="ipsImage ipsImage_thumbnailed" data-fileid="90189" data-unique="tj6gl2ry4" src="https://academy.hsoub.com/uploads/monthly_2022_01/installing-gui-ubuntu-server-gnome-desktop.png.c93bb996d613712adb4247a8acaf6f82.png" style="width: 500px; height: auto;"></a>
</p>

<p>
	لا يوفر إصدار نظام تشغيل الخادم واجهة رسومية، ويعتمد فقط واجهة طرفية تظهر عند تسجيل الدخول إليه يمكن التحكم بها عن بُعد من حواسيب أخرى باستخدام بروتوكول الاتصال الآمن <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr>.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="90191" href="https://academy.hsoub.com/uploads/monthly_2022_01/system-restart-required.png.76a906d18650324b1cdd00de49fb15b4.png" rel=""><img alt="system-restart-required.png" class="ipsImage ipsImage_thumbnailed" data-fileid="90191" data-unique="u50wuqz37" src="https://academy.hsoub.com/uploads/monthly_2022_01/system-restart-required.png.76a906d18650324b1cdd00de49fb15b4.png" style="width: 500px; height: auto;"></a>
</p>

<h2>
	طريقة التنزيل
</h2>

<p>
	يُعد تثبيت نسخة مستخدم أوبنتو أمرًا سهلًا بفضل واجهة التثبيت الرسومية، كما يمكنك تجريب نسخة USB مباشرة أولًا ثم تنزيلها في بضع دقائق، في حال أعجبتك، باتباع تعليمات التثبيت التي ستظهر لك على الشاشة.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="90190" href="https://academy.hsoub.com/uploads/monthly_2022_01/installing-ubuntu.png.7800ad8681568139d5358e7edde72903.png" rel=""><img alt="installing-ubuntu.png" class="ipsImage ipsImage_thumbnailed" data-fileid="90190" data-unique="6wwoiwxc4" src="https://academy.hsoub.com/uploads/monthly_2022_01/installing-ubuntu.png.7800ad8681568139d5358e7edde72903.png" style="width: 500px; height: auto;"></a>
</p>

<p>
	لايُعد تثبيت إصدار الخادم من أوبنتو أمرًا سهلًا، على خلاف إصدار المستخدم، لأنك ستضطر إلى استخدام الطرفية لتثبيته، فإن لم يكن التعامل مع الطرفية مألوفًا بالنسبة لك ستواجه صعوبة في تنفيذ المهام، حتى أبسطها كالاتصال بشبكة الواي فاي Wi-Fi.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="90193" href="https://academy.hsoub.com/uploads/monthly_2022_01/ubuntu-server-installation.png.439261f266679af35111336d65063456.png" rel=""><img alt="ubuntu-server-installation.png" class="ipsImage ipsImage_thumbnailed" data-fileid="90193" data-unique="sxf1qmamg" src="https://academy.hsoub.com/uploads/monthly_2022_01/ubuntu-server-installation.png.439261f266679af35111336d65063456.png" style="width: 500px; height: auto;"></a>
</p>

<h2>
	التطبيقات
</h2>

<p>
	تركز التطبيقات الأساسية في واجهة المستخدم من أوبنتو على المستخدمين العاديين؛ فهي تشمل <a href="https://academy.hsoub.com/programming/html/html5/%D8%A7%D9%83%D8%AA%D8%B4%D8%A7%D9%81-%D8%AF%D8%B9%D9%85-%D8%A7%D9%84%D9%85%D8%AA%D8%B5%D9%81%D8%AD%D8%A7%D8%AA-%D9%84%D9%85%D9%8A%D8%B2%D8%A7%D8%AA-html5-r340/" rel="">متصفحات الويب</a>، والبرامج المكتبية، ومشغلات الوسائط والألعاب وغيرها.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="90187" href="https://academy.hsoub.com/uploads/monthly_2022_01/gnome-app-arranger.jpg.c77ca2f67b4e3982254495ac0200dd4a.jpg" rel=""><img alt="gnome-app-arranger.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="90187" data-unique="rlmuhtxpy" src="https://academy.hsoub.com/uploads/monthly_2022_01/gnome-app-arranger.jpg.c77ca2f67b4e3982254495ac0200dd4a.jpg" style="width: 500px; height: auto;"></a>
</p>

<p>
	بينما تكون تطبييقات خادم أوبنتو مخصصة لخدمات الويب، و لايقتصر الأمر على ذلك فقط، بل يكون لبعض التطبيقات إعدادات مختلفة، على سبيل المثال يكون <a href="https://academy.hsoub.com/questions/1887-%D9%85%D8%A7%D9%87%D9%88-ssh-%D9%88%D9%81%D9%8A%D9%85%D8%A7-%D9%8A%D8%B3%D8%AA%D8%B9%D9%85%D9%84%D8%9F/" rel="">بروتوكول الاتصال الآمن <abbr title="Secure Shell | القشرة (أو الصَدَفة) الآمنة">SSH</abbr></a> مهيئًا بشكل مسبق للعمل مع نظام الخادم والاتصال به عن بعد من حواسيب أخرى. بينما يجب عليك تفعيل <a href="https://academy.hsoub.com/devops/security/ssh/%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA-%D9%88%D8%AE%D9%8A%D8%A7%D8%B1%D8%A7%D8%AA-%D8%A7%D9%84%D8%A7%D8%AA%D8%B5%D8%A7%D9%84-%D8%A8%D8%AE%D8%A7%D8%AF%D9%88%D9%85-%D8%B9%D9%86-%D8%A8%D8%B9%D8%AF-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-ssh-r74/" rel="">بروتوكول الاتصال الآمن</a> يدويًا في نسخة المستخدم.
</p>

<h2>
	العتاديات اللازمة
</h2>

<p>
	ستحتاج إلى ذاكرة وصول عشوائية بحجم 4 جيغا بايت لتشغيل الواجهة الرسومية غنوم على نسخة المستخدم، ويجب أن تتوفر لديك مساحة تخزين على أحد الأقراص بمقدار 20 جيغا بايت على الأقل، ولكن تختلف الأمور بالنسبة لنسخة الخادم، حيث أنها لا تستخدم الواجهة الرسومية، أي لا تستهلك واجهة سطر الأوامر الكثير من موارد النظام، ولذلك يمكنك تشغيل خادم أوبنتو بسهولة على جهاز بحجم ذاكرة 512 ميغا بايت وقرص تخزين بحجم 5 جيغا بايت.
</p>

<p>
	يعتمد حجم الذاكرة RAM وقرص التخزين على خدمة الويب التي تريد تفعيلها، ولذلك يجب أن تتقيد بالحجم المطلوب للخدمة المعينة، لكن تفي سعة 512 ميغا بايت للذاكرة و 1 جيغا بايت لقرص التخزين بالغرض في أغلب الحالات.
</p>

<h2>
	غرض الاستخدام
</h2>

<p>
	يجب أن تسأل نفسك هذا السؤال: ما هي أغراض استخدامك لنظام أوبنتو؟ حتى تتمكن من اختيار النسخة المناسبة لك، فإذا كنت تريد تفعيل واستخدام أحد <a href="https://academy.hsoub.com/devops/networking/%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-%D8%A7%D9%84%D8%B4%D8%A8%D9%83%D8%A7%D8%AA-%D8%A7%D9%84%D8%AD%D8%A7%D8%B3%D9%88%D8%A8%D9%8A%D8%A9-%D8%AE%D8%AF%D9%85%D8%A7%D8%AA-%D8%A7%D9%84%D9%88%D9%8A%D8%A8-r549/" rel="">خدمات الويب</a>، فعليك اختيار نسخة الخادم، ويجب أن تكون على دراية بكيفية التعامل مع الطرفية بواسطة أوامر لينوكس.
</p>

<p>
	أما إذا كنت تريد استخدام نظام أوبنتو كحاسوب عادي يعمل بنظام تشغيل، استخدم نسخة المستخدم، وإذا كنت تريد استخدامه لتعلم أوامر لينكس، أو <a href="https://academy.hsoub.com/devops/cloud-computing/docker/%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%84%D9%89-docker-r3/" rel="">أداة دوكر Docker</a> أو حتى <a href="https://academy.hsoub.com/devops/servers/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AA%D8%AB%D8%A8%D9%8A%D8%AA-%D9%88%D8%A5%D8%B9%D8%AF%D8%A7%D8%AF-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-lamp-%D8%B9%D9%84%D9%89-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-r195/" rel="">تثبيت خادم LAMP</a> محلي بسيط، فإن نسخة المستخدم مناسبة لذلك.
</p>

<p>
	الخلاصة، يعد <a href="https://academy.hsoub.com/devops/linux/%D8%A7%D9%84%D8%AA%D9%87%D9%8A%D8%A6%D8%A9-%D8%A7%D9%84%D8%A3%D9%88%D9%84%D9%8A%D8%A9-%D9%84%D8%AE%D8%A7%D8%AF%D9%85-%D8%A3%D9%88%D8%A8%D9%88%D9%86%D8%AA%D9%88-1804-r431/" rel="">خادم أوبنتو</a> الخيار الأفضل عند استخدام الخوادم، بينما تُعد نسخة المستخدم أفضل للاستخدامات العادية.
</p>

<h2>
	هل يفضل استخدام نسخة المستخدم على الخادم أم تثبيت واجهة رسومية على نسخة الخادم؟
</h2>

<p>
	يجب أن نأخذ في الحسبان أن نسخة المستخدم من أوبنتو ونسخة الخادم كلاهما توزيعات لنظام التشغيل لينكس، إذًا يمكن استخدام نسخة المستخدم من أوبنتو كخادم لتوفير خدمات استضافة الويب، كما يمكن تثبيت واجهة رسومية على نسخة الخادم.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="90188" href="https://academy.hsoub.com/uploads/monthly_2022_01/installing-gui-ubuntu-server-gnome-desktop-greet.png.9abf17eb8882575c6ece7670073aa1fc.png" rel=""><img alt="installing-gui-ubuntu-server-gnome-desktop-greet.png" class="ipsImage ipsImage_thumbnailed" data-fileid="90188" data-unique="khyx9f9p7" src="https://academy.hsoub.com/uploads/monthly_2022_01/installing-gui-ubuntu-server-gnome-desktop-greet.png.9abf17eb8882575c6ece7670073aa1fc.png" style="width: 500px; height: auto;"></a>
</p>

<p>
	لكن لايعني ذلك أن الاستخدام الأنف الذكر أمرٌ محمود؛ فذلك يعارض غرض إنشاء إصدارات مختلفة من أنظمة تشغيل <a href="https://academy.hsoub.com/devops/servers/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D9%85%D8%AC%D9%85%D9%88%D8%B9%D8%A7%D8%AA-%D8%A7%D9%84%D8%AA%D8%AD%D9%83%D9%85-cgroup-%D8%B9%D9%84%D9%89-%D8%AE%D9%88%D8%A7%D8%AF%D9%8A%D9%85-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-r224/" rel="">الخوادم</a> والمستخدمين. ضع في الحسبان أن التبديل من نسخة المستخدم إلى نسخة الخادم يتطلب جهدًا إضافيًا، والعكس صحيح، لذلك تجنب العناء عن طريق تحديد غرضك من استخدام نظام أوبنتو، ثم نزّل وثبّت النسخة المناسبة.
</p>

<p>
	في الختام، نأمل أن نكون أوضحنا الفرق بين نسخة أوبنتو المكتبية ونسخة الخادم.
</p>

<p>
	للحصول على المساعدة والدعم يمكنك إضافة سؤالك في قسم الأسئلة والأجوبة في <a href="https://academy.hsoub.com/questions/" rel="">أكاديمية حسوب</a>
</p>

<p>
	ترجمة- وبتصرف <a href="https://itsfoss.com/ubuntu-server-vs-desktop" rel="external nofollow">للمقال</a> من موقع <a href="https://itsfoss.com" rel="external nofollow">Itsfoss</a> لصاحبه Abhishek Prakash
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
<li>
		<a href="https://academy.hsoub.com/devops/servers/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AA%D9%86%D8%B5%D9%8A%D8%A8-%D9%86%D8%B3%D8%AE%D8%A9-%D8%A7%D9%84%D8%AE%D9%88%D8%A7%D8%AF%D9%8A%D9%85-%D9%85%D9%86-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-%D9%88%D8%A5%D8%B9%D8%AF%D8%A7%D8%AF-%D9%85%D8%AE%D8%AA%D9%84%D9%81-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA%D9%87-r152/" rel="">كيفية تنصيب نسخة الخواديم من أوبنتو وإعداد مختلف تطبيقاته</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/security/firewalls/%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA-%D8%A7%D9%84%D8%A3%D9%85%D9%86-%D9%88%D8%A7%D9%84%D8%AD%D9%85%D8%A7%D9%8A%D8%A9-%D8%B9%D9%84%D9%89-%D8%AE%D9%88%D8%A7%D8%AF%D9%8A%D9%85-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-%D8%A7%D9%84%D8%AC%D8%AF%D8%A7%D8%B1-%D8%A7%D9%84%D9%86%D8%A7%D8%B1%D9%8A-r185/" rel="">أساسيات الأمن والحماية على خواديم أوبنتو: الجدار الناري</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/servers/mail/%D8%AA%D9%86%D8%B5%D9%8A%D8%A8-%D9%88%D8%A5%D8%B9%D8%AF%D8%A7%D8%AF-%D8%AE%D8%AF%D9%85%D8%A9-%D8%A7%D9%84%D8%A8%D8%B1%D9%8A%D8%AF-%D8%A7%D9%84%D8%A5%D9%84%D9%83%D8%AA%D8%B1%D9%88%D9%86%D9%8A-postfix-%D8%B9%D9%84%D9%89-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-r203/" rel="">تنصيب وإعداد خدمة البريد الإلكتروني Postfix على أوبنتو</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/servers/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AA%D8%AB%D8%A8%D9%8A%D8%AA-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-%D8%B9%D9%84%D9%89-%D8%AE%D8%A7%D8%AF%D9%88%D9%85-lamp-%D9%81%D9%8A-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-1604-r342/" rel="">كيفية تثبيت ووردبريس على خادوم LAMP في أوبنتو 16.04</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">578</guid><pubDate>Wed, 26 Jan 2022 17:00:00 +0000</pubDate></item><item><title>&#x62A;&#x62B;&#x628;&#x64A;&#x62A; &#x646;&#x638;&#x627;&#x645; &#x644;&#x64A;&#x646;&#x643;&#x633; &#x62F;&#x627;&#x62E;&#x644; &#x646;&#x638;&#x627;&#x645; &#x648;&#x64A;&#x646;&#x62F;&#x648;&#x632; &#x641;&#x64A; &#x628;&#x64A;&#x626;&#x629; &#x648;&#x647;&#x645;&#x64A;&#x629;</title><link>https://academy.hsoub.com/devops/linux/%D8%AA%D8%AB%D8%A8%D9%8A%D8%AA-%D9%86%D8%B8%D8%A7%D9%85-%D9%84%D9%8A%D9%86%D9%83%D8%B3-%D8%AF%D8%A7%D8%AE%D9%84-%D9%86%D8%B8%D8%A7%D9%85-%D9%88%D9%8A%D9%86%D8%AF%D9%88%D8%B2-%D9%81%D9%8A-%D8%A8%D9%8A%D8%A6%D8%A9-%D9%88%D9%87%D9%85%D9%8A%D8%A9-r577/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed6c1985648_--------.png.e44b85d7c7dfbfe952c9b7a98fac8970.png" /></p>
<p>
	إنّ تثبيت <a href="https://academy.hsoub.com/devops/linux/%D9%85%D8%A7-%D9%87%D9%88-%D9%86%D8%B8%D8%A7%D9%85-%D8%A7%D9%84%D8%AA%D8%B4%D8%BA%D9%8A%D9%84-%D9%84%D9%8A%D9%86%D9%83%D8%B3%D8%9F-r451/" rel="">نظام لينكس Linux</a> ضمن بيئة وهمية ستُمكّنك من استخدام لينكس ضمن نظام ويندوز Windows، وفي هذا المقال ستتعرف على كيفية إنجاز ذلك باستخدام أحد برامج إنشاء <a href="https://academy.hsoub.com/devops/servers/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A7%D9%84%D8%A3%D9%86%D8%B8%D9%85%D8%A9-%D8%A7%D9%84%D9%88%D9%87%D9%85%D9%8A%D8%A9-%D8%B9%D9%84%D9%89-%D8%AE%D9%88%D8%A7%D8%AF%D9%8A%D9%85-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-r215/" rel="">البيئات الوهمية</a> وهو برنامج VirtualBox.
</p>

<p>
	يوجد العديد من الطرق لتثبيت نظام لينكس، فبإمكانك <a href="https://academy.hsoub.com/devops/linux/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AA%D8%AB%D8%A8%D9%8A%D8%AA-%D8%AA%D9%88%D8%B2%D9%8A%D8%B9%D8%A9-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-%D9%85%D9%86-%D9%84%D9%8A%D9%86%D9%83%D8%B3-%D8%A8%D8%A3%D8%A8%D8%B3%D8%B7-%D8%B7%D8%B1%D9%8A%D9%82%D8%A9-r575/" rel="">حذف نظام التشغيل الحالي لديك واستبداله بنظام لينكس</a>، أو أن تنصّب <a href="https://academy.hsoub.com/devops/linux/%D8%AA%D8%AB%D8%A8%D9%8A%D8%AA-%D9%84%D9%8A%D9%86%D9%83%D8%B3-%D9%85%D8%B9-%D9%86%D8%B8%D8%A7%D9%85-%D9%88%D9%8A%D9%86%D8%AF%D9%88%D8%B2-r576/" rel="">لينكس مع نظام ويندوز</a> مستخدمًا وضع الإقلاع الثنائي Dual Boot وهذا ما يتيح لك إمكانية اختيار أحد النظامين لاستخدامه عند كل تشغيل للحاسوب، كما يمكنك تثبيت لينكس ضمن نظام ويندوز مستخدمًا الخيار الذي يوفّره متجر Microsoft (إلّا أنّ الإصدار الوحيد المتوفر من لينكس لهذه الطريقة هو الإصدار المُعتمد على موجه الأوامر).
</p>

<p>
	أمّا طريقة استخدام الأقراص الوهمية فتمثّل الخيار الأفضل والأسهل لك في حال أردت استخدام Linux استخدامًا محدودًا، والتي تتيح لك تثبيت واستخدام لينكس وكأنّه تطبيق عادي من تطبيقات ويندوز، وذلك دون القيام بأي تغييرات على نظام ويندوز المُنصّب أصلًا لديك.
</p>

<p>
	سنستعرض في هذا المقال كيفية تثبيت نظام لينكس ضمن نظام ويندوز باستخدام <a href="https://academy.hsoub.com/devops/servers/%D8%A5%D9%86%D8%B4%D8%A7%D8%A1-%D8%B4%D8%A8%D9%83%D8%A9-%D8%AF%D8%A7%D8%AE%D9%84%D9%8A%D8%A9-%D8%A7%D9%81%D8%AA%D8%B1%D8%A7%D8%B6%D9%8A%D8%A9-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-oracle-virtualbox-r263/" rel="">برنامج VirtualBox</a> وهو برنامج مجاني مفتوح المصدر أصدرته Oracle، مهمّته إنشاء الأقراص الوهمية فيمكّنك من تثبيت أنظمة تشغيل مختلفة على أقراص وهمية ضمن نفس القرص الفعلي، وللحصول على أداء جيد لنظام التشغيل الوهمي، يُنصح بأن يكون لديك ذاكرة وصول عشوائي RAM بحجم 4 GB على الأقل.
</p>

<h2>
	متطلبات تثبيت نظام لينكس ضمن بيئة وهمية
</h2>

<ul>
	<li>
		اتصال إنترنت بسرعة جيدة لتحميل كل من برنامج إنشاء الأقراص الوهمية وصوة ISO من نظام لينكس، يمكنك إجراء التحميل على حاسب آخر إن أردت.
	</li>
	<li>
		نظام ويندوز يحتوي على مساحة تخزينية فارغة قدرها 12 GB على الأقل.
	</li>
	<li>
		ذاكرة RAM بحجم 4 GB (يمكن الإكمال حتى في حال كان حجم الذاكرة أقل، إلّا أنّ حاسوبك سيعاني في هذه الحالة من البطء خلال استخدامك لنظام لينكس على القرص الوهمي).
	</li>
	<li>
		يجب أن تتأكّد من تمكين ميزة التعامل مع الأقراص الوهمية virtualization في إعدادات BIOS.
	</li>
</ul>

<p>
	سنستعرض في هذا المقال خطوات تثبيت الإصدار 17.10 من توزيعة أوبنتو Ubuntu، وتبقى الخطوات نفسها من أجل أي إصدار أو توزيعة تختارها من نظام التشغيل لينكس.
</p>

<div class="banner-container ipsBox ipsPadding">
	<div class="inner-banner-container">
		<p class="banner-heading">
			دورة علوم الحاسوب
		</p>

		<p class="banner-subtitle">
			دورة تدريبية متكاملة تضعك على بوابة الاحتراف في تعلم أساسيات البرمجة وعلوم الحاسوب
		</p>

		<div>
			<a class="ipsButton ipsButton_large ipsButton_primary ipsButton_important" href="https://academy.hsoub.com/learn/computer-science/" rel="">اشترك الآن</a>
		</div>
	</div>

	<div class="banner-img">
		<img alt="دورة علوم الحاسوب" src="https://academy.hsoub.com/learn/assets/images/courses/computer-science.png">
	</div>
</div>

<h2>
	الخطوة الأولى: تحميل وتثبيت برنامج VirtualBox
</h2>

<p>
	بدايةً <a href="https://www.virtualbox.org/" rel="external nofollow">نزّل</a> أحدث إصدار من البرنامج Oracle VirtualBox وذلك من الموقع الإلكتروني الخاص به، ثمّ ثبته، وهو أمر بسيط لا يتطلّب منك سوى نقرة مزدوجة على الملف ذو اللاحقة ‎.exe الذي حمله واتّباع التعليمات بشكلٍ مشابه لتثبيت أي برنامج عادي على نظام ويندوز.
</p>

<h2>
	الخطوة الثانية: تحميل صورة ISO لنظام لينكس
</h2>

<p>
	الآن يجب عليك <a href="https://www.ubuntu.com/desktop" rel="external nofollow">تحميل</a> ملف من النوع ISO لإصدار لينكس الذي ترغب بتثبيته من الموقع الإلكتروني الرسمي له، في هذا المقال سنستعرض خطوات تثبيت توزيعة أوبنتو، وبإمكانك تحميل صورة ISO لأي إصدار ترغب بتثبيته من إصدارات لينكس وذلك من موقعه الرسمي.
</p>

<h2>
	الخطوة الثالثة: تثبيت نظام لينكس باستخدام برنامج VirtualBox
</h2>

<p>
	الآن وبعد تحميل ملف ISO لإصدار لينكس وتثبيت برنامج VirtualBox، أصبحت جاهزًا للبدء بعملية تثبيت لينكس في VirtualBox.
</p>

<p>
	بدايةً افتح برنامج VirtualBox ومن ثم انقر على رمز "جديد New"، واختر اسمًا مناسبًا لنظام التشغيل الوهمي.
</p>

<p style="text-align: center;">
	<img alt="creat virtual machine (1).jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="90069" data-unique="z0hrwk0la" style="width: 650px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed6c16219c9_creatvirtualmachine(1).jpg.ab3fc6cf39f233a5d0a0353245e96c0c.jpg">
</p>

<p>
	خصص جزءًا من الذاكرة RAM لنظام التشغيل الوهمي، فمثلًا في مثالنا حجم الذاكرة 8 GB خصّصنا منها 2 GB، ويمكنك تخصيص حجم إضافي تبعًا لحجم الذاكرة في حاسوبك.
</p>

<p style="text-align: center;">
	<img alt="creat virtual machine (2).jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="90070" data-unique="2ro6mofnr" style="width: 650px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed6c1683c5c_creatvirtualmachine(2).jpg.849eb11949c45629516be098116f6ccb.jpg">
</p>

<p>
	أنشئ قرصًا وهميًا، والذي سيعمل كقرص صلب لنظام لينكس، أي أنّه المكان الذي ستخزن فيه ملفات <a href="https://academy.hsoub.com/devops/servers/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A7%D9%84%D8%A3%D9%86%D8%B8%D9%85%D8%A9-%D8%A7%D9%84%D9%88%D9%87%D9%85%D9%8A%D8%A9-%D8%B9%D9%84%D9%89-%D8%AE%D9%88%D8%A7%D8%AF%D9%8A%D9%85-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-r215/" rel="">نظام التشغيل الوهمي</a>.
</p>

<p style="text-align: center;">
	<img alt="creat virtual machine (3).jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="90071" data-unique="k6rqcnhc8" style="width: 650px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed6c16d9475_creatvirtualmachine(3).jpg.66f5216d3337513781bd0c95618affa8.jpg">
</p>

<p>
	وفي هذه المرحلة، ننصح باستخدام نمط الملفات VDI.
</p>

<p style="text-align: center;">
	<img alt="creat virtual hard disk (4).jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="90067" data-unique="fxyl5rmq2" style="width: 650px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed6c152b43c_creatvirtualharddisk(4).jpg.b034b5062027231efeb774050a93f659.jpg">
</p>

<p>
	وعند إنشاء القرص الصلب الوهمي يمكنك اختيار إمّا "مُخصّص ديناميكيًا Dynamically allocated" أو "ثابت الحجم Fixed Size".
</p>

<p style="text-align: center;">
	<img alt="creat virtual hard disk (5).jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="90068" data-unique="dhxz32grd" style="width: 650px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed6c15a166b_creatvirtualharddisk(5).jpg.576c2499acb4b3f82052fd36319a14ac.jpg">
</p>

<p>
	الحجم الموصى به للقرص الصلب الوهمي هو 10 GB، إلّا أنّنا ننصح بتخصيص حجم إضافي، أي حوالي 15-20 GB إن أمكن.
</p>

<p style="text-align: center;">
	<img alt="file location and size (6).jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="90074" data-unique="68qqtlbld" style="width: 650px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed6c18015ff_filelocationandsize(6).jpg.81525fd4afe8f43d21bddf996e4f0f05.jpg">
</p>

<p>
	وبعد إكمال الإجراءات السابقة، يحين وقت الإقلاع من ملف ISO وتثبيت لينكس كنظام تشغيل وهمي.
</p>

<p style="text-align: center;">
	<img alt="welcome to virtualbox (7).jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="90083" data-unique="u3v31k40r" style="width: 650px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed6c1ce5dcd_welcometovirtualbox(7).jpg.f7cc8688fb242321576f906eaeaf702a.jpg">
</p>

<p>
	إذا لم يحدد برنامج VirtualBox ملف ISO تلقائيًا، اضغط على رمز الملف واختر ملف ISO الذي حملته من مسار موقعه، كما هو موضّح في الصورة التالية:
</p>

<p style="text-align: center;">
	<img alt="select start up disk (8).jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="90080" data-unique="to3vw51if" style="width: 650px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed6c1b69b59_selectstartupdisk(8).jpg.7ac756810efff53ce212a9c6ee01893d.jpg">
</p>

<p>
	وبعد لحظات يجب أن تظهر شاشة تتضمّن خيار تثبيت لينكس، ومن هذه المرحلة تصبح الخطوات خاصّة بتوزيعة أوبنتو كونه التوزيعة التي نرغب بتثبيتها في حالتنا، وستختلف قليلًا عند اختيارك لإحدى توزيعات لينكس الأُخرى.
</p>

<p style="text-align: center;">
	<img alt="install ubuntu (9).jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="90075" data-unique="ugdhu28ft" style="width: 650px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed6c185ee19_installubuntu(9).jpg.1e8bcb99d90550b1cfbfd03295ad893c.jpg">
</p>

<p>
	يمكنك اختيار "تجاوز Skip" وصولًا لخيار "إكمال Continue".
</p>

<p style="text-align: center;">
	<img alt="download updates and third party (10).jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="90072" data-unique="thtqc51zz" style="width: 650px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed6c173a777_downloadupdatesandthirdparty(10).jpg.0f7323bd359cffe675ae88cb89777df1.jpg">
</p>

<p>
	الآن اختر Erase disk and install Ubuntu "مسح محتويات القرص وتثبيت توزيعة أوبنتو"، ولا داعي للقلق من هذه الخطوة، فلن يحذف أي شيء لأنّك تستخدم المساحة التخزينية الخاصّة بالقرص الوهمي التي أنشأتها في الخطوات السابقة، ولن تؤثر هذه الخطوة على نظام التشغيل الأساسي ويندوز.
</p>

<p style="text-align: center;">
	<img alt="installation type (11).jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="90077" data-unique="3npucmj2v" style="width: 650px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed6c196c5ba_installationtype(11).jpg.289b71e296a69a734ba3ae68ab50e987.jpg">
</p>

<p>
	والآن انقر على زر المتابعة Continue.
</p>

<p style="text-align: center;">
	<img alt="write the changes to disk (12).jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="90084" data-unique="domnmgim4" style="width: 650px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed6c1d4ad1b_writethechangestodisk(12).jpg.640b466bf8fce00a05d2b37842fc6200.jpg">
</p>

<p>
	وتصبح الخطوات من هذه المرحلة بمنتهى الوضوح.
</p>

<p style="text-align: center;">
	<img alt="choose timezone (13).jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="90066" data-unique="bccdx7g95" style="width: 650px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed6c14c80a2_choosetimezone(13).jpg.5a8ac231ccd22613987dea54e95ea077.jpg">
</p>

<p>
	مجرّد متابعة للخطوات.
</p>

<p style="text-align: center;">
	<img alt="keyboard layout (14).jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="90078" data-unique="y960wobw6" style="width: 650px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed6c1a1dabb_keyboardlayout(14).jpg.3152124add110eaa2f86866923fad9a1.jpg">
</p>

<p>
	حاول أن تختار كلمة مرور لن تنساها، وفي حال حدوث ذلك، يمكنك في أي وقت تصفير <a href="https://academy.hsoub.com/apps/general/%D9%83%D9%84%D9%85%D8%A7%D8%AA-%D8%A7%D9%84%D9%85%D8%B1%D9%88%D8%B1-%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AD%D9%81%D8%B8%D9%87%D8%A7-%D9%88%D8%A7%D8%B3%D8%AA%D8%B9%D9%85%D8%A7%D9%84%D9%87%D8%A7-%D9%81%D9%8A-%D8%A7%D9%84%D8%B9%D8%A7%D9%84%D9%85-%D8%A7%D9%84%D8%B1%D9%82%D9%85%D9%8A-r381/" rel="">كلمة المرور</a> الخاصّة بتوزيعة أوبنتو.
</p>

<p style="text-align: center;">
	<img alt="select username and password (15).jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="90081" data-unique="3iw8fjy4s" style="width: 650px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed6c1c0f4df_selectusernameandpassword(15).jpg.b5832da9d72150ae538592f079d424a0.jpg">
</p>

<p>
	الآن أوشكت على الانتهاء، سيستغرق الأمر بحدود 10-15 دقيقة لإكمال التثبيت.
</p>

<p style="text-align: center;">
	<img alt="welcome to ubuntu (16).jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="90082" data-unique="2hzornd0b" style="width: 650px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed6c1c73c0c_welcometoubuntu(16).jpg.355024f13b30a31aa429aa7b842de236.jpg">
</p>

<p>
	عند اكتمال التثبيت، أعد تشغيل النظام الوهمي.
</p>

<p style="text-align: center;">
	<img alt="installation complete (17).jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="90076" data-unique="ef8s7l677" style="width: 500px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed6c18afc4c_installationcomplete(17).jpg.7110b406cf3f9d40861efba67d06c2c7.jpg">
</p>

<p>
	يمكنك إغلاق برنامج VirtualBox في حال تجمّده عند ظهور الشاشة المبينة في الصورة التالية:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="90079" href="https://academy.hsoub.com/uploads/monthly_2022_01/61ed6c1aacb31_removetheinstallationmedia(18).jpg.839f53074bdb2381cb4e05b2f4cc2c1d.jpg" rel="" data-fileext="jpg"><img alt="remove the installation media (18).jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="90079" data-unique="2k9ti2ai0" style="width: 500px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed6c1ac74b4_removetheinstallationmedia(18).thumb.jpg.ff6a39957a5cd78d7c7fdb7114d1651a.jpg"></a>
</p>

<p>
	وبذلك تكون أنهيت العملية، ومن الآن فصاعدًا يمكنك استخدام نظام لينكس مباشرةً بمجرّد النقر على النظام الوهمي الذي نصّبته، ولن تحتاج لإعادة التثبيت عند كل استخدام، لذا بإمكانك حذف ملف ISO الذي حملته سابقًا.
</p>

<p>
	من الأمور المهمة الموصى بها أن تستخدم إصدار Guest من برنامج VirtualBox، لأنّ هذا الإصدار هو الأكثر توافق مع توزيعة أوبنتو، كما أنّه يوفّر لك حرية التعامل مع نظام ويندوز وتوزيعة أوبنتو معًا، كأن تستخدم النسخ واللصق أو السحب والإفلات بين النظامين.
</p>

<h2>
	استكشاف المشاكل وإصلاحها
</h2>

<p>
	في حال كانت خاصّية AMD-V معطّلة من إعدادات BIOS، فقد يظهر لك الخطأ التالي أثناء استخدامك للقرص الوهمي:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_1377_13" style=""><span class="typ">Not</span><span class="pln"> in a hypervisor partition </span><span class="pun">(</span><span class="pln">HVP</span><span class="pun">=</span><span class="lit">0</span><span class="pun">)</span><span class="pln"> </span><span class="pun">(</span><span class="pln">VERR_NEM_NOT_AVAILABLE</span><span class="pun">).</span><span class="pln">
AMD</span><span class="pun">-</span><span class="pln">V is disabled in the BIOS </span><span class="pun">(</span><span class="pln">or by the host OS</span><span class="pun">)</span><span class="pln"> </span><span class="pun">(</span><span class="pln">VERR_SVM_DISABLED</span><span class="pun">).</span><span class="pln">
</span><span class="typ">Result</span><span class="pln"> </span><span class="typ">Code</span><span class="pun">:</span><span class="pln">
E_FAIL </span><span class="pun">(</span><span class="lit">0x80004005</span><span class="pun">)</span><span class="pln">
</span><span class="typ">Component</span><span class="pun">:</span><span class="pln">
</span><span class="typ">ConsoleWrap</span><span class="pln">
</span><span class="typ">Interface</span><span class="pun">:</span><span class="pln">
</span><span class="typ">IConsole</span><span class="pln"> </span><span class="pun">{</span><span class="lit">872da645</span><span class="pun">-</span><span class="lit">4a9b</span><span class="pun">-</span><span class="lit">1727</span><span class="pun">-</span><span class="pln">bee2</span><span class="pun">-</span><span class="lit">5585105b9eed</span><span class="pun">}</span></pre>

<p>
	فهذا يعني أنّ ميزة التعامل مع الأقراص الوهمية مُعطّلة في نظامك، وكل ما عليك فعله هو تمكينها من إعدادات BIOS، ولإجراء ذلك أعد تشغيل حاسوبك، ولحظة بدء تشغيله اضغط على أحد المفاتيح F2/F10/F12 (تختلف بحسب نوع حاسوبك) للوصول إلى إعدادات BIOS، والآن ابحث عن الخيار Virtualization وفعله.
</p>

<p style="text-align: center;">
	<img alt="enable virtualization technology BIOS (19).jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="90073" data-unique="cihzqqx72" style="width: 500px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed6c1790374_enablevirtualizationtechnologyBIOS(19).jpg.0ab8c8c2149571f378e62458e72355e5.jpg">
</p>

<p>
	وهذا كل ما تحتاجه لتثبيت نظام لينكس ضمن نظام ويندوز باستخدام برنامج VirtualBox.
</p>

<p>
	ترجمة -وبتصرف- للمقال <a href="https://itsfoss.com/install-linux-in-virtualbox/" rel="external nofollow">Install Linux Inside Windows Using VirtualBox [Step by Step Guide]</a> لصاحبه Abhishek Prakash.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
	<li>
		<a href="https://academy.hsoub.com/devops/linux/%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA-%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D8%A7%D9%84%D8%AD%D8%B2%D9%85-%D9%81%D9%8A-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-%D9%88%D8%AF%D8%A8%D9%8A%D8%A7%D9%86-%D8%A7%D9%84%D8%AC%D8%B2%D8%A1-%D8%A7%D9%84%D8%A3%D9%88%D9%84-r248/" rel="">أساسيات إدارة الحزم في أوبنتو ودبيان - الجزء الأول</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/linux/%D9%83%D9%8A%D9%81-%D8%AA%D8%B6%D8%A8%D8%B7-%D9%85%D8%B2%D8%A7%D9%85%D9%86%D8%A9-%D8%A7%D9%84%D9%88%D9%82%D8%AA-%D9%81%D9%8A-%D8%AE%D8%A7%D8%AF%D9%88%D9%85-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-1604-r347/" rel="">كيف تضبط مزامنة الوقت في خادوم أوبنتو 16.04</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/c/%D8%A7%D9%84%D9%81%D8%B5%D9%84-%D8%A7%D9%84%D8%AB%D8%A7%D9%84%D8%AB-%D8%A7%D9%84%D8%B0%D8%A7%D9%83%D8%B1%D8%A9-%D8%A7%D9%84%D9%88%D9%87%D9%85%D9%8A%D8%A9-virtual-memory-%D9%81%D9%8A-%D9%86%D8%B8%D8%A7%D9%85-%D8%A7%D9%84%D8%AA%D8%B4%D8%BA%D9%8A%D9%84-r978/" rel="">الفصل الثالث: الذاكرة الوهمية (Virtual memory) في نظام التشغيل</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/servers/%D8%A5%D8%B9%D8%AF%D8%A7%D8%AF-%D8%A7%D9%84%D8%B0%D9%91%D8%A7%D9%83%D8%B1%D8%A9-%D8%A7%D9%84%D9%88%D9%87%D9%85%D9%8A%D9%91%D8%A9-%D9%85%D9%84%D9%81%D9%91%D8%A7%D8%AA-%D8%A7%D9%84%D8%AA%D8%A8%D8%A7%D8%AF%D9%84-%D8%B9%D9%84%D9%89-%D8%AE%D8%A7%D8%AF%D9%88%D9%85-%D8%AE%D8%A7%D8%B5-%D9%88%D9%87%D9%85%D9%8A%D9%91-vps-r34/" rel="">إعداد الذّاكرة الوهميّة (ملفّات التبادل) على خادوم خاص وهميّ (VPS)</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">577</guid><pubDate>Sun, 23 Jan 2022 17:00:00 +0000</pubDate></item><item><title>&#x643;&#x64A;&#x641;&#x64A;&#x629; &#x62A;&#x62B;&#x628;&#x64A;&#x62A; &#x62A;&#x648;&#x632;&#x64A;&#x639;&#x629; &#x623;&#x648;&#x628;&#x646;&#x62A;&#x648; &#x645;&#x646; &#x644;&#x64A;&#x646;&#x643;&#x633; &#x628;&#x623;&#x628;&#x633;&#x637; &#x637;&#x631;&#x64A;&#x642;&#x629;</title><link>https://academy.hsoub.com/devops/linux/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AA%D8%AB%D8%A8%D9%8A%D8%AA-%D8%AA%D9%88%D8%B2%D9%8A%D8%B9%D8%A9-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-%D9%85%D9%86-%D9%84%D9%8A%D9%86%D9%83%D8%B3-%D8%A8%D8%A3%D8%A8%D8%B3%D8%B7-%D8%B7%D8%B1%D9%8A%D9%82%D8%A9-r575/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed21d195e27_-------.png.800d8afeea81958ff4cd8f3a2259efc4.png" /></p>

<p>
	تتصدّر توزيعة أوبنتو Ubuntu من نظام لينكس Linux الخيارات عند المبتدئين الراغبين باستخدام <a href="https://academy.hsoub.com/devops/linux/%D9%85%D8%A7-%D9%87%D9%88-%D9%86%D8%B8%D8%A7%D9%85-%D8%A7%D9%84%D8%AA%D8%B4%D8%BA%D9%8A%D9%84-%D9%84%D9%8A%D9%86%D9%83%D8%B3%D8%9F-r451/" rel="">نظام لينكس</a> لن نتحدّث في هذا المقال عن أسباب ودوافع استخدامك لتوزيعة أوبنتو، وإنمّا سنستعرض لك كيفية تثبيته.
</p>

<p>
	هنالك العديد من الطرق لتثبيت توزيعة أوبنتو أو أي نظام آخر من أنظمة لينكس ومنها:
</p>

<ol>
<li>
		تثبيت توزيعة أوبنتو ضمن جهاز وهمي في <a href="https://academy.hsoub.com/apps/operating-systems/windows/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-windows-10-r172/" rel="">نظام ويندوز</a>.
	</li>
	<li>
		استخدام ميزة Bash on Windows التي توفّر نظامًا فرعيًا ليعمل توزيعة أوبنتو ضمن نظام ويندوز.
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/linux/%D8%AA%D8%AB%D8%A8%D9%8A%D8%AA-%D9%84%D9%8A%D9%86%D9%83%D8%B3-%D9%85%D8%B9-%D9%86%D8%B8%D8%A7%D9%85-%D9%88%D9%8A%D9%86%D8%AF%D9%88%D8%B2-r576/" rel="">تثبيت كلا من توزيعة أوبنتو ونظام ويندوز</a>، وعند الإقلاع تختار نظام التشغيل الذي تريد استخدامه بما يسمّى وضع الإقلاع المزدوج Dual Boot.
	</li>
	<li>
		يمكنك حذف نظام نظام ويندوز نهائيًا واستبداله بتوزيعة أوبنتو.
	</li>
</ol>
<p>
	والطريقة التي سنعرضها في هذا المقال هي الطريقة الرابعة، إذ سنحذف النظام بالكامل ونجعل توزيعة أوبنتو نظام التشغيل الوحيد على الحاسوب، ويمكن أن تكون هذه الطريقة هي الأسهل لتثبيت توزيعة أوبنتو.
</p>

<p>
	تعمل الطريقة المعروضة في هذا المقال لتثبيت توزيعة أوبنتو نفسه أو أي من التوزيعات القائمة عليه مثل Kubuntu و Xubuntu و Lubuntu و Linux Mint وغيرها، وأثناء تثبيت أي من هذه التوزيعات، ستجدُ بعض الاختلافات عن الصور التوضيحية المعروضة هنا، إلّا أنّ الخطوات الرئيسة تبقى نفسها.
</p>

<h2>
	متطلبات تثبيت توزيعة أوبنتو من لينكس
</h2>

<p>
	الأدوات التي تحتاجها لتثبيت توزيعة أوبنتو:
</p>

<ul>
<li>
		قرص تخزين قابل للإزالة USB بحجم لا يقل عن 4 GB، كما يمكنك استخدام قرص DVD.
	</li>
	<li>
		اتصال انترنت (لتنزيل توزيعة أوبنتو وتنزيل أداة إعداد قرص تخزين قابل للإزالة ليصبح إقلاعيًا، ولا يلزم هذا الاتصال أثناء عملية تثبيت توزيعة أوبنتو).
	</li>
	<li>
		يمكن أن تحتاج قرص تخزين خارجي، لحفظ <a href="https://academy.hsoub.com/apps/general/%D8%A7%D9%84%D9%86%D8%B3%D8%AE-%D8%A7%D9%84%D8%A7%D8%AD%D8%AA%D9%8A%D8%A7%D8%B7%D9%8A-%D9%88%D8%AD%D9%81%D8%B8-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-%D9%81%D9%8A-%D8%A7%D9%84%D8%B9%D8%A7%D9%84%D9%85-%D8%A7%D9%84%D8%B1%D9%82%D9%85%D9%8A-r375/" rel="">نسخة احتياطية</a> من ملفاتك الهامّة الموجودة على نظام التشغيل الحالي لديك قبل البدء بالإجراء، وهو أمر اختياري.
	</li>
</ul>
<p>
	أمّا المتطلبات الدنيا للحاسوب في حال أردت تثبيت الإصدار الافتراضي أوبنتو جنوم فهي:
</p>

<ul>
<li>
		معالج ثنائي النواة بسرعة 2 GHz.
	</li>
	<li>
		ذاكرة وصول عشوائي RAM بحجم 2 GB.
	</li>
	<li>
		مساحة خالية على القرص الصلب تعادل 25 GB على الأقل.
	</li>
</ul>
<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		اقتباس
	</div>

	<p>
		<strong>تحذير</strong> ستحذفُ هذه الطريقة أية أنظمة تشغيل وبيانات موجودة على القرص الصلب، لذا يجب أن تحفظ ملفاتك الخاصّة ومستنداتك والصور وغيرها إلى قرص خارجي أو إلى أي وسيلة تخزين سحابي في حال أردت استخدام هذه الملفات لاحقًا.
	</p>
</blockquote>

<h2>
	الخطوة الأولى تنزيل توزيعة أوبنتو
</h2>

<p>
	بدايةً وقبل أي خطوة عليك تنزيل توزيعة أوبنتو من الإنترنت، وهو متوفّر كملف من نوع ISO بحجم حوالي 2 غيغابايت، إذ أنّ ملف ISO ما هو إلّا صورة عن قرص تخزيني ولا بدّ من استخراجها على قرص تخزين قابل للإزالة أو على قرص DVD.
</p>

<p>
	ويمكنك <a href="https://ubuntu.com/download/desktop" rel="external nofollow">تنزيل نسخة ISO من توزيعة</a> أوبنتو من موقعه الرسمي، أمّا إذا كان اتصال الانترنت لديك بطيء أو غير مستقر، يمكنك استخدام الطرق البديلة للتنزيل المعروضة في <a href="https://ubuntu.com/download/alternative-downloads" rel="external nofollow">صفحة التنزيل البديلة</a> (حرك شريط التمرير قليلًا نحو الأسفل).
</p>

<h2>
	الخطوة الثانية إنشاء وتجهيز قرص إقلاعي قابل للإزالة
</h2>

<p>
	بعد تنزيل توزيعة أوبنتو من الإنترنت كملف من نوع ISO، ننتقل إلى الخطوة التالية وهي استخراج هذا الملف على قرص تخزين قابل للإزالة وتجهيزه ليصبح قرصًا إقلاعيًا متضمّنًا نظام التشغيل ليسمح لك بالإقلاع في توزيعة أوبنتو، وبذلك يمكنك اختبار توزيعة أوبنتو حتّى دون تثبيته على حاسوبك، كما سنستخدم نفس قرص التخزين لتثبيت توزيعة أوبنتو.
</p>

<p>
	يوجد العديد من الأدوات التي تساعدك في تجهيز قرص إقلاعي لتوزيعة أوبنتو، ومن هذه الأدوات Etcher و Rufus و Unetbootin و Universal USB installer.
</p>

<p>
	إذا كنت تستخدم أصلًا إحدى توزيعات لينكس، فيمكنك استخدام أداة <a href="https://www.balena.io/etcher/" rel="external nofollow">Etcher</a>.
</p>

<h2>
	الخطوة الثالثة الإقلاع من القرص الإقلاعي
</h2>

<p>
	الآن أوصِل قرص التخزين القابل للإزالة الذي أعددته ليكون إقلاعيًا ونزّلت توزيعة أوبنتو عليه إلى جهازك، وتأكّد من أنّك ضبطت إعدادات الإقلاع في BIOS ليقلع جهازك من قرص USB عوضًا عن الإقلاع من القرص الصلب، وذلك عبر جعل قرص USB هو الخيار الأوّل في ترتيب الإقلاع، ولتنفيذ ذلك أعد تشغيل جهازك، واضغط على مفتاح F2 أو F10 أو F12 لحظة ظهور شعار الشركة المصنّعة (Dell أو Acer أو Lenovo …إلخ)، وذلك للوصول إلى إعدادات BIOS، والتي تظهر لديك بطريقة مختلفة عن الصورة التالية.
</p>

<p style="text-align: center;">
	<img alt="Change the boot order to boot from USB (2).jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="90012" data-unique="0blk9t0yd" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed21c8ecd8f_ChangethebootordertobootfromUSB(2).jpg.bc9bcaf8d50679985025a563391c58c8.jpg" style="width: 500px; height: auto;"></p>

<p>
	إذًا تتلخّص الفكرة هنا فقط بجعل القرص القابل للإزالة في بداية قائمة ترتيب خيارات الإقلاع، ومن ثمّ احفظ التغييرات واخرج من إعدادات BIOS.
</p>

<h2>
	الخطوة الرابعة تثبيت توزيعة أوبنتو
</h2>

<p>
	الآن وبعد ضبط إعدادات BIOS يجب أن يقلع الجهاز ضمن بيئة توزيعة أوبنتو، وستظهر لك شاشة تتضمّن خيارين، الأوّل تجربة توزيعة أوبنتو دون تثبيته، والثاني تثبيت توزيعة أوبنتو، يمكنك اختيار الخيار الأوّل.
</p>

<p style="text-align: center;">
	<img alt="Boot into live Ubuntu (3).jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="90011" data-unique="txr3npvro" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed21c86e9a1_BootintoliveUbuntu(3).jpg.e9d4a03ca7cdbee7953d5cfb1590febc.jpg" style="width: 500px; height: auto;"></p>

<p>
	وبمرور من 10 إلى 20 ثانية أو أكثر في حال استخدامك لمنفذ من نوع USB 2، ستُسجل دخولك إلى بيئة توزيعة أوبنتو، والآن انقر على أيقونة تثبيت توزيعة أوبنتو الموجودة على سطح المكتب المسمّاة Install Ubuntu.
</p>

<p style="text-align: center;">
	<img alt="Install Ubuntu icon on the desktop (4).jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="90017" data-unique="sitc0j5vr" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed21cb076cf_InstallUbuntuicononthedesktop(4).jpg.db381443d4a8b313a0b87d7c812ffcd1.jpg" style="width: 500px; height: auto;"></p>

<p>
	سيطلب منك اختيار بعض الإعدادات الرئيسة مثل اللغة وتنسيق لوحة المفاتيح، اختر ما يناسبك منها.
</p>

<p style="text-align: center;">
	<img alt="choose keyboard layout (6).jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="90013" data-unique="xl5h3gg4t" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed21c963864_choosekeyboardlayout(6).jpg.2709a39d40bf5588539183e178cf301f.jpg" style="width: 500px; height: auto;"></p>

<p style="text-align: center;">
	<img alt="choose your language (5).jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="90014" data-unique="tiwfuunal" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed21c9a9899_chooseyourlanguage(5).jpg.045856a2984aa938155638e863a0e7a8.jpg" style="width: 500px; height: auto;"></p>

<p>
	ومن ثمّ اختر التثبيت العادي normal installation، حتّى تثبت بعض البرمجيات مثل مشغّل الموسيقى، مشغل الفيديو، وبعض الألعاب.
</p>

<p>
	إذا كان جهازك متصلًا بالإنترنت فسيظهر لك خيار تثبيت التحديثات أثناء تثبيت توزيعة أوبنتو، يمكنك عدم اختيار ذلك لأنّه سيزيد من الزمن اللازم لإنهاء الإجراء، لاسيما إذا كان اتصال الإنترنت لديك بطيئًا، ويمكنك تحديث توزيعة أوبنتو في وقتٍ لاحق دون أن يسبب ذلك أية مشاكل.
</p>

<p style="text-align: center;">
	<img alt="updates and other software (7).jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="90022" data-unique="2grezcbp4" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed21ce0ed0b_updatesandothersoftware(7).jpg.9d7fabc1bca16d89004b51657ef3be6a.jpg" style="width: 500px; height: auto;"></p>

<p>
	والآن نأتي إلى الخطوة الأهم الموضّحة في الصورة التالية، في حال وجود <a href="https://academy.hsoub.com/programming/c/%D8%A7%D9%84%D9%81%D8%B5%D9%84-%D8%A7%D9%84%D8%AB%D8%A7%D9%86%D9%8A-%D8%A7%D9%84%D8%B9%D9%85%D9%84%D9%8A%D8%A7%D8%AA-processes-%D9%81%D9%8A-%D8%A3%D9%86%D8%B8%D9%85%D8%A9-%D8%A7%D9%84%D8%AA%D8%B4%D8%BA%D9%8A%D9%84-r977/" rel="">أنظمة تشغيل</a> أخرى على جهازك، يمكنك اختيار تثبيت توزيعة أوبنتو جنبًا إلى جنب مع هذه الأنظمة في وضع الإقلاع الثنائي، أمّا إذا كان هدفك وجود نظام توزيعة أوبنتو وحده على جهازك، فاختر مسح محتويات القرص وتثبيت توزيعة أوبنتو.
</p>

<p style="text-align: center;">
	<img alt="Erase disk and install Ubuntu (8).jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="90015" data-unique="t15t5icyl" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed21ca195e2_ErasediskandinstallUbuntu(8).jpg.e37563b9af71897db2c9173082628ae2.jpg" style="width: 500px; height: auto;"></p>

<p>
	وبمجرّد أن تنقر على زر التثبيت الآن، ستظهر رسالة تحذيرية تنبهّك إلى أنّ كافّة البيانات على القرص ستحذف كما نوهنا سابقًا.
</p>

<p style="text-align: center;">
	<img alt="Usual warning about formatting the disk (9).jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="90023" data-unique="vudmjijs4" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed21cf1c785_Usualwarningaboutformattingthedisk(9).jpg.a8828b16ce9b8a022396ba7260e96c62.jpg" style="width: 500px; height: auto;"></p>

<p>
	ومن هذه اللحظة تصبح الخطوات أسهل، فهنا سيُطلب منك اختيار المنطقة الزمنية.
</p>

<p style="text-align: center;">
	<img alt="Select timezone (10).jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="90020" data-unique="qnm67m5dr" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed21cc36f1a_Selecttimezone(10).jpg.b581ff05d7eeb91937dbf73dca664b06.jpg" style="width: 500px; height: auto;"></p>

<p>
	ومن ثمّ سيُطلب منك اختيار اسمًا للمستخدم، واسمًا للحاسوب (أو ما يعرف باسم المضيف) و تعيين كلمة مرور.
</p>

<p style="text-align: center;">
	<img alt="Set username and password (11).jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="90021" data-unique="96bguymyr" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed21cc9cb0a_Setusernameandpassword(11).jpg.762383011aefb041abb0dad6a764fb9b.jpg" style="width: 500px; height: auto;"></p>

<p>
	وما إن تنتهي من ذلك، ما عليك سوى الانتظار والمراقبة لمدة من 5 إلى 10 دقائق، وخلال هذه المدّة سترى عرضًا تقديميًا حول ميزات توزيعة أوبنتو.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="90024" href="https://academy.hsoub.com/uploads/monthly_2022_01/61ed21cf7e4ba_welcometoubuntu(12).jpg.c66076423d7cbf3f3e30863f348511c9.jpg" rel=""><img alt="welcome to ubuntu (12).jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="90024" data-unique="1ax0kllts" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed21cf92913_welcometoubuntu(12).thumb.jpg.ccaf7d1d548818015628558d3b4705b5.jpg" style="width: 500px; height: auto;"></a>
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="90016" href="https://academy.hsoub.com/uploads/monthly_2022_01/61ed21ca7bee9_helpandsupport(13).jpg.fbadbde2133835a75be7dfd4e04681ef.jpg" rel=""><img alt="help and support (13).jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="90016" data-unique="hkb1whar2" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed21ca913bc_helpandsupport(13).thumb.jpg.7290758be003919dd19810cbfeeab785.jpg" style="width: 500px; height: auto;"></a>
</p>

<p>
	سيقدم عرض الشرائح المعلومات الأساسية المتعلّقة باستخدام توزيعة أوبنتو ريثما تنتهي عملية التثبيت، وعند انتهائها سيُطلب منك إعادة تشغيل الجهاز.
</p>

<p style="text-align: center;">
	<img alt="Restart your system (14).jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="90019" data-unique="u1tz2jde7" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed21cbc4a52_Restartyoursystem(14).jpg.b57380e390a018131e7b8a04f61877e5.jpg" style="width: 500px; height: auto;"></p>

<p>
	وعند إعطاء أمر إعادة التشغيل، يمكن أن تظهر نافذة "إيقاف التشغيل" والتي تطلب منك إخراج قرص التخزين الذي استخدمته في عملية التثبيت ومن ثمّ الضغط على زر Enter.
</p>

<p style="text-align: center;">
	<img alt="Remove USB and press enter (15).jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="90018" data-unique="fay5own9b" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed21cb708b7_RemoveUSBandpressenter(15).jpg.0ddcf7a3e0d55a9fea8c18d76da36a6b.jpg" style="width: 500px; height: auto;"></p>

<p>
	أخرج قرص التخزين القابل للإزالة، ثمّ اضغط على زر Enter، فسيقوم النظام بإعادة التشغيل ثمّ الإقلاع إلى توزيعة أوبنتو. وهذا كل ما في الأمر، أليس من السهل تثبيت توزيعة أوبنتو؟
</p>

<p>
	يمكنك استخدام هذه الطريقة لاستبدال نظام ويندوز بتوزيعة أوبنتو، نرجو لك تجربة ممتعة!
</p>

<p>
	ترجمة -وبتصرف- للمقال <a href="https://itsfoss.com/install-ubuntu" rel="external nofollow">How to Install Ubuntu Linux in the Simplest Possible Way</a> لصاحبه Abhishek Prakash.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
<li>
		<a href="https://academy.hsoub.com/devops/linux/%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA-%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D8%A7%D9%84%D8%AD%D8%B2%D9%85-%D9%81%D9%8A-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-%D9%88%D8%AF%D8%A8%D9%8A%D8%A7%D9%86-%D8%A7%D9%84%D8%AC%D8%B2%D8%A1-%D8%A7%D9%84%D8%A3%D9%88%D9%84-r248/" rel="">أساسيات إدارة الحزم في أوبنتو ودبيان - الجزء الأول</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/linux/%D9%83%D9%8A%D9%81-%D8%AA%D8%B6%D8%A8%D8%B7-%D9%85%D8%B2%D8%A7%D9%85%D9%86%D8%A9-%D8%A7%D9%84%D9%88%D9%82%D8%AA-%D9%81%D9%8A-%D8%AE%D8%A7%D8%AF%D9%88%D9%85-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-1604-r347/" rel="">كيف تضبط مزامنة الوقت في خادوم أوبنتو 16.04</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/servers/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%B6%D8%A8%D8%B7-%D8%A5%D8%B9%D8%AF%D8%A7%D8%AF%D8%A7%D8%AA-%D8%A7%D9%84%D8%B4%D8%A8%D9%83%D8%A7%D8%AA-%D8%B9%D9%84%D9%89-%D8%AE%D8%A7%D8%AF%D9%88%D9%85-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-r160/" rel="">كيفية ضبط إعدادات الشبكات على خادوم أوبنتو</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/servers/%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA-%D8%A7%D9%84%D8%A3%D9%85%D9%86-%D9%88%D8%A7%D9%84%D8%AD%D9%85%D8%A7%D9%8A%D8%A9-%D8%B9%D9%84%D9%89-%D8%AE%D9%88%D8%A7%D8%AF%D9%8A%D9%85-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-ecryptfs-r188/" rel="">أساسيات الأمن والحماية على خواديم أوبنتو: eCryptfs</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">575</guid><pubDate>Mon, 17 Jan 2022 17:00:00 +0000</pubDate></item><item><title>&#x62A;&#x62B;&#x628;&#x64A;&#x62A; &#x644;&#x64A;&#x646;&#x643;&#x633; &#x645;&#x639; &#x646;&#x638;&#x627;&#x645; &#x648;&#x64A;&#x646;&#x62F;&#x648;&#x632;</title><link>https://academy.hsoub.com/devops/linux/%D8%AA%D8%AB%D8%A8%D9%8A%D8%AA-%D9%84%D9%8A%D9%86%D9%83%D8%B3-%D9%85%D8%B9-%D9%86%D8%B8%D8%A7%D9%85-%D9%88%D9%8A%D9%86%D8%AF%D9%88%D8%B2-r576/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed3d144273b_-------(1).png.468f21a1f8dea86b77fd347b60354148.png" /></p>

<p>
	يستعرض هذا المقال كيفية إجراء إقلاع مزدوج لنظامي لينكس توزيعة أوبنتو Ubuntu وويندوز Windows 10 خطوة بخطوة، مع كافّة الصور التوضيحية اللازمة.
</p>

<p>
	يمثّل الإقلاع المزدوج أحد أفضل الطرق لاستخدام كلًا من نظامي التشغيل <a href="https://academy.hsoub.com/devops/linux/%D9%85%D8%A7-%D9%87%D9%88-%D9%86%D8%B8%D8%A7%D9%85-%D8%A7%D9%84%D8%AA%D8%B4%D8%BA%D9%8A%D9%84-%D9%84%D9%8A%D9%86%D9%83%D8%B3%D8%9F-r451/" rel="">لينكس Linux</a> وويندوز على حاسوب واحد، وباستخدام هذه الطريقة سينصبُ كلا النظامين مباشرة على القرص الفيزيائي وليس بصورة وهمية، وعند كل تشغيل لحاسوبك يمكنك اختيار النظام الذي تريده.
</p>

<p style="text-align: center;">
	<img alt="61ed3d2f01563_youcanchoosewhichoperatingsystemIndualboottobootinto1.jpg.2a512732de49262e8c60c1160a089bb9.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="90646" data-unique="w43vu179i" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed3d2f01563_youcanchoosewhichoperatingsystemIndualboottobootinto1.jpg.2a512732de49262e8c60c1160a089bb9.jpg.a58c68da70ab6a33f7b7faa4680229ed.jpg" style="width: 600px; height: auto;"></p>

<p>
	عرضنا في مقال سابق خطوات إجراء إقلاع مزدوج لتوزيعة أوبنتو ونظام ويندوز 7، وهي الطريقة الأنسب في حال كان نمط تخزين معلومات التقسيم على القرص هو MBR، وتبقى الخطوات نفسها تقريبًا للأنظمة الأحدث المُنصّبة مع نظام <a href="https://academy.hsoub.com/apps/operating-systems/windows/%D8%AA%D8%B9%D8%B1%D9%91%D9%81-%D8%B9%D9%84%D9%89-%D8%A5%D8%B5%D8%AF%D8%A7%D8%B1%D8%A7%D8%AA-windows-10-%D9%88%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A7%D9%84%D8%A7%D8%AE%D8%AA%D9%8A%D8%A7%D8%B1-%D9%85%D9%86-%D8%A8%D9%8A%D9%86%D9%87%D8%A7-r288/" rel="">ويندوز 10</a>.
</p>

<p>
	سنستعرض في هذا المقال كيفية تثبيت توزيعة أوبنتو على حاسوب منصّب عليه نظام ويندوز 10 أصلًا.
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		اقتباس
	</div>

	<div class="ipsQuote_contents ipsClearfix">
		<p>
			<strong>ملاحظة</strong>: ننصحك بقراءة هذا المقال كاملًا قبل البدء باتّباع الخطوات الواردة فيه، لتتعرّف على التجهيزات اللازمة وما ستقوم به، ومن ثمّ يمكنك البدء بتنفيذ الإجراءات بعد اطلاعك على الخطوات المتبّعة وتجهيزك لكل ما يلزم.
		</p>
	</div>
</blockquote>

<p>
	الإقلاع المزدوج ليس بالإجراء المعقّد إلّا أنّ تنفيذه يحتاج إلى بعض الوقت والصبر.
</p>

<h2>
	إجراء الإقلاع المزدوج لتوزيعة أوبنتو ونظام ويندوز 10
</h2>

<p>
	إنّ استخدام الإجرائية المقترحة في هذا المقال مناسبة للحواسيب العاملة على نظام ويندوز 10، التي تستخدم UEFI secure boot كبرمجية إقلاع، وجدول تقسيم GPT كنمط تخزين معلومات التقسيم على القرص.
</p>

<h2>
	التحقق من التوافق
</h2>

<h3>
	التأكد من كون نظامك يستخدم UEFI
</h3>

<p>
	إنّ هذا المقال مناسب للتطبيق فقط على الحواسيب التي تستخدم UFEI كبرمجية إقلاع، وغالبًا ما سيستخدم حاسوبك UEFI مع نمط تخزين معلومات تجزئة القرص GPT إذا ما اشتريته خلال الخمس أو الست سنوات الماضية، وبجميع الأحوال من المستحسّن التأكّد من ذلك قبل البدء، فإذا كان حاسوبك يستخدم برمجية الإقلاع القديمة BIOS مع نمط تقسيم MBR فلن يكون هذا المقال مناسبًا لك.
</p>

<h3>
	عملية مختلفة لحالة استخدام نمط تشفير Bitlocker
</h3>

<p>
	إذا كان حاسوبك حديثًا ويعمل على نظام تشغيل ويندوز 10 برو، فسيكون قرصك مشفرًا بنمط Bitlocker الذي يحتاج لطريقة مختلفة لإجراء الإقلاع المزدوج.
</p>

<h3>
	الحواسيب التي تملك كلا نوعي الأقراص HDD وSSD
</h3>

<p>
	إذا كان لديك حاسوب مزدوج الأقراص أي يحوي كلا نوعي الأقراص HDD و SSD، ستكون العملية تقريبًا كما هي في حالتنا، ورغم ذلك من الأفضل لك اتباع مقال متخصّص لمثل هذه الحالة.
</p>

<h2>
	المتطلبات: ما الذي ستحتاجه؟
</h2>

<p>
	فيما يلي قائمة تضم كل ما تحتاجه لتثبيت نظام لينكس مع نظام ويندوز بمنتهى السهولة والأمان:
</p>

<ul>
<li>
		حاسوب مُنصّب عليه نظام التشغيل ويندوز 10 أصلًا.
	</li>
	<li>
		قرص تخزين قابل للإزالة USB خالٍ من البيانات، بحجم 4 GB على الأقل.
	</li>
	<li>
		اتصال إنترنت بهدف تحميل كل من صورة ISO من Ubuntu وأداة إنشاء الأقراص الإقلاعية، وليس من الضروري أن تجري هذه الخطوة على الحاسوب الذي ترغب بجعل إقلاعه ثنائيًا، وإنما على أي حاسوب تريده.
	</li>
	<li>
		اختياريًا يمكنك تجهيز <a href="https://academy.hsoub.com/certificates/comptia/%D8%A7%D9%84%D9%82%D8%B1%D8%B5-%D8%A7%D9%84%D8%B5%D9%84%D8%A8-%D8%A2%D9%84%D9%8A%D8%A9-%D8%AA%D8%AE%D8%B2%D9%8A%D9%86-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-%D8%B9%D9%84%D9%89-%D8%A7%D9%84%D8%A3%D9%82%D8%B1%D8%A7%D8%B5-r61/" rel="">قرص تخزين</a> خارجي بهدف إجراء نسخ احتياطي لكافّة بياناتك الحالية قبل البدء.
	</li>
	<li>
		قرص إقلاع أو إصلاح لنظام ويندوز يمكن استخدامه لإصلاح أي مشاكل إقلاع تواجهها أثناء العملية.
	</li>
</ul>
<p>
	والآن لننتقل إلى خطوات تثبيت توزيعة أوبنتو مع نظام ويندوز 10.
</p>

<h2>
	الخطوة الأولى (اختيارية): إنشاء نسخة احتياطية لنظام ويندوز الحالي لديك
</h2>

<p>
	من المفضّل أن تحتفظ بنسخة احتياطية من ملفاتك حتى لا تخسرها في حال حدوث أي مشكلة أثناء إجراء تقسيم القرص، لذا ننصح بأن <a href="https://academy.hsoub.com/apps/general/%D8%A7%D9%84%D9%86%D8%B3%D8%AE-%D8%A7%D9%84%D8%A7%D8%AD%D8%AA%D9%8A%D8%A7%D8%B7%D9%8A-%D9%88%D8%AD%D9%81%D8%B8-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-%D9%81%D9%8A-%D8%A7%D9%84%D8%B9%D8%A7%D9%84%D9%85-%D8%A7%D9%84%D8%B1%D9%82%D9%85%D9%8A-r375/" rel="">تنسخ ملفاتك الهامّة</a> التي تخشى عليها من الفقدان على قرص تخزين خارجي سواء أكان من النوع HDD (أبطأ إلّا أنّه أرخص) أو SSD (أسرع لكنه أغلى سعرًا).
</p>

<h2>
	الخطوة الثانية: تنزيل توزيعة أوبنتو (أو أي توزيعة من لينكس) من الإنترنت
</h2>

<p style="text-align: center;">
	<img alt="61ed3d27b2eca_download-ubuntu-desktop(3).png.8b8cfc198a87d5562f589fe5e059dc2a.png" class="ipsImage ipsImage_thumbnailed" data-fileid="90645" data-unique="7kf8dwvuj" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed3d27b2eca_download-ubuntu-desktop(3).png.8b8cfc198a87d5562f589fe5e059dc2a.png.023aebbd90986b9921f4dab540ef25e7.png" style="width: 700px; height: auto;"></p>

<p>
	اذهب إلى الموقع الرسمي لأوبنتو، و<a href="https://ubuntu.com/download/desktop" rel="external nofollow">نزّل</a> الملف من النوع ISO، حجم هذا الملف حوالي 2.5 GB، كما يمكنك اختيار روابط التحميل البديلة alternative downloads إذا رغبت بتنزيل توزيعة أوبنتو مستخدمًا برنامج torrents.
</p>

<h2>
	الخطوة الثالثة: إنشاء قرص إقلاعي يحتوي على توزيعة أوبنتو
</h2>

<p>
	يوجد العديد من الأدوات التي تساعدك في إنشاء قرص إقلاعي يحوي توزيعة أوبنتو، وذلك بافتراض أنّك تنشئ القرص مستخدمًا نظام ويندوز، يمكنك اختيار أي من هذه الأدوات، بالنسبة لنا اخترنا الأداة Refus التي يمكنك <a href="https://rufus.ie/" rel="external nofollow">تحميلها</a> مجانًا من الموقع الإلكتروني الرسمي، فيتحملُ ملف بصيغة exe.
</p>

<p>
	الآن أوصِل قرص التخزين القابل للإزالة، وتذكّر أننا سنُهيئ هذا القرص لذا تأكّد من عدم وجود أي بيانات هامّة عليه.
</p>

<p>
	الآن شغّل الأداة Refus والتي ستتعرّف تلقائيًا على القرص الذي وصلته، لكن لا مانع من التأكّد منه، ثمّ حدّد مكان وجود صورة ISO التي حملتها، وتأكّد من استخدام نمط التقسيم GPT وبرمجية الإقلاع UEFI.
</p>

<p style="text-align: center;">
	<img alt="Hit the start button and wait for the process to complete. Your live Linux USB is ready (4).jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="90040" data-unique="zraq5l992" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed3d289a474_Hitthestartbuttonandwaitfortheprocesstocomplete.YourliveLinuxUSBisready(4).jpg.0f3c3911d94aa92149c21bc099ae8723.jpg" style="width: 650px; height: auto;"></p>

<h2>
	الخطوة الرابعة: تحقق من المساحة التخزينية المتاحة على قرصك لتثبيت توزيعة أوبنتو
</h2>

<p>
	تعرض الكثير من توزيعات لينكس خيار تخصيص مساحة من القرص أثناء تثبيت توزيعة أوبنتو، إلّا أنّ هذا لا يحدث دائمًا، لذا من المفضّل تجهيز المساحة التخزينية اللازمة قبل البدء بعملية التثبيت، ويمكنك ذلك من قائمة Windows، ابحث عن "تجزئة الأقراص disk partitions" ثم اختر "إنشاء وتهيئة أجزاء <a href="https://academy.hsoub.com/certificates/comptia/%D8%A7%D9%84%D9%82%D8%B1%D8%B5-%D8%A7%D9%84%D8%B5%D9%84%D8%A8-%D8%A7%D9%84%D9%87%D9%8A%D9%83%D9%84%D8%A9%D8%8C-%D8%A7%D9%84%D9%85%D9%88%D8%A7%D8%B5%D9%81%D8%A7%D8%AA-%D9%88%D8%A7%D9%84%D8%AA%D9%87%D9%8A%D8%A6%D8%A9-r60/" rel="">القرص الصلب</a> Create and format hard disk partitions":
</p>

<p style="text-align: center;">
	<img alt="creat and format disk partitions (5).png" class="ipsImage ipsImage_thumbnailed" data-fileid="90033" data-unique="8dqtcfira" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed3d253ef14_creatandformatdiskpartitions(5).png.b85a34d10d9ce5c537253d25e7dee991.png" style="width: 650px; height: auto;"></p>

<p>
	ضمن أداة إدارة الأقراص، انقر نقرة بزر الفأرة الأيمن على القرص الذي تريد إنشاء القطاع فيه واختر "تقليص الحجم shrink volume". وإذا لم تملك سوى قرص واحد، فعليك تفريغ بعض المساحة ضمنه لنظام لينكس، وإذا كان لديك عدّة أقراص بأحجام جيدة، فاختر أي منها عدا القرص C لأن اختياره سيؤدي لحذف البيانات.
</p>

<p>
	والأمر يختلف من حاسوب لآخر، فمثلًا حجم القرص الصلب في الحاسوب الذي نعرض المثال من خلاله هو 256 غيغابايت وهو مقسّم أصلًا من الشركة الصانعة إلى عدّة أجزاء إلّا أنّ هذه الأجزاء مخصّصة لعمليات النسخ الاحتياطي وغيرها، والقطاع الرئيسي لدينا هو القرص C بحجم حوالي 220 غيغابايت ومنُصب عليه ويندوز 10. ففي حالتنا اخترنا إجراء عملية التقليص على القرص C لإتاحة المساحة التخزينية اللازمة لتثبيت لينكس.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="90037" href="https://academy.hsoub.com/uploads/monthly_2022_01/61ed3d2720738_diskmanagement(6).jpg.1c475aff5038836dcba693bebf99ddb8.jpg" rel=""><img alt="disk management (6).jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="90037" data-unique="zayv25d7d" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed3d274095c_diskmanagement(6).thumb.jpg.7a6eff337ec654a859c8128b2fc19603.jpg" style="width: 800px; height: auto;"></a>
</p>

<p>
	<strong>ما هو مقدار المساحة التخزينية اللازمة لنظام لينكس في حالة الإقلاع المزدوج؟</strong>
</p>

<p>
	الإجابة على هذا السؤال تعتمد على مقدار حجم القرص الكلي في حاسوبك، فيمكن تثبيت توزيعة أوبنتو على <a href="https://academy.hsoub.com/devops/linux/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A5%D8%AC%D8%B1%D8%A7%D8%A1-%D9%85%D9%87%D8%A7%D9%85-%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D8%A3%D8%AC%D9%87%D8%B2%D8%A9-%D8%A7%D9%84%D8%AA%D8%AE%D8%B2%D9%8A%D9%86-%D8%A7%D9%84%D8%A8%D8%B3%D9%8A%D8%B7%D8%A9-%D9%81%D9%8A-%D9%84%D9%8A%D9%86%D9%83%D8%B3-r302/" rel="">مساحة تخزينية</a> قدرها 15 أو 20 غيغابايت إلّا أنّك سرعان ما ستعاني من نفاذ المساحة. وفي هذه الأيام تأتي معظم الحواسيب مع أقراص بحجم 120 غيغابايت على الأقل، ففي هذه الحالة من الأفضل أن تخصّص 30 إلى 40 غيغابايت من القرص لنظام لينكس. أمّا إذا كان لديك قرص بحجم 250 غيغابايت خصّص مساحة تخزينية قدرها من 60 حتّى 80 غيغابايت أو أكثر. وإذا كان لديك المزيد من المساحة التخزينية على القرص، فخصص المزيد منها لنظام لينكس إن أردت.
</p>

<p>
	<strong>ماذا تفعل إذا كان لديك أقراص محلية مثل D أو E أو F؟</strong>
</p>

<p>
	يعتقد الكثير من الناس أنّه لا يمكن تثبيت توزيعة أوبنتو إلّا على القرص C، وهذا غير صحيح. وبالنسبة لحالتنا قلصنا حجم القرص C لعدم توفّر سوى هذا القرص، أمّا إذا كان لديك أقراص D أو E أو F فبإمكانك تقليص أي منها، كما بإمكانك إن رغبت حذف الأقراص D أو E أو F ولكن إياك وحذف القرص C.
</p>

<h2>
	الخطوة الخامسة: الإقلاع توزيعة أوبنتو من خلال القرص الإقلاعي
</h2>

<p>
	أنشأت في الخطوة الثالثة قرصًا إقلاعيًا لتوزيعة أوبنتو، أوصل هذا القرص، ولكن وقبل أن تقلع جهاز الحاسوب من القرص، لنلقي نظرة على برمجية الإقلاع الآمن الأقل شهرة.
</p>

<p>
	<strong>هل من المفروض أن أقوم بتعطيل الإقلاع الآمن حتّى أتمكن من تثبيت توزيعة أوبنتو؟</strong>
</p>

<p>
	قبل حوالي 6 إلى 8 سنوات، لم تكن برمجية الإقلاع الآمن UEFI مدعومة من قبل لينكس، وفي ذلك الحين كان لا بدّ من تعطيل الإقلاع الآمن حتّى تتمكن من تثبيت لينكس، ولحسن الحظ أنّه في هذه الأيام أصبح توزيعة أوبنتو وغيره من حزم لينكس تدعم الإقلاع الآمن دعمًا ممتازًا، وعمومًا ليس عليك القيام بأي إجراء بخصوص الإقلاع الآمن، إلّا إذا رفض جهازك الإقلاع من القرص الإقلاعي الذي أعدته أو في حال حدوث أي مشاكل متعلّقة بهذا الأمر، عندها يمكنك تعطيل الإقلاع الآمن في ويندوز.
</p>

<p>
	والآن لنرى كيف بإمكاننا الإقلاع من القرص القابل للإزالة، إذ يمكنك الوصول إلى إعدادات الإقلاع عبر الضغط على أحد الأزرار F2 أو F10 أو F12 لحظة تشغيل الحاسوب، ومنها تختار الإقلاع من القرص القابل للإزالة USB، إلّا أنّ البعض يجدون هذا الإجراء صعبًا.
</p>

<p>
	والطريقة الأسهل لإجراء ذلك هو الوصول إلى إعدادات الإقلاع UEFI من داخل نظام ويندوز، إلّا أنّ هذه الطريقة هي الأطول، وللوصول إليها ابحث عن UEFI ومن ثمّ اختر "تغيير خيارات البدء المتقدمة Change advanced startup options".
</p>

<p style="text-align: center;">
	<img alt="change advanced setup options (7).png" class="ipsImage ipsImage_thumbnailed" data-fileid="90029" data-unique="gqd0qb26l" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed3d235ce22_changeadvancedsetupoptions(7).png.d52141e4ae2a5200631ebd2458cbf6cd.png" style="width: 650px; height: auto;"></p>

<p>
	اذهب إلى الخيار "advanced startup" ثم انقر زر إعادة التشغيل الآن.
</p>

<p style="text-align: center;">
	<img alt="restart now (8).png" class="ipsImage ipsImage_thumbnailed" data-fileid="90048" data-unique="wny0xxhw4" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed3d2c045c2_restartnow(8).png.13b11809bbea792dee827aea21963364.png" style="width: 500px; height: auto;"></p>

<p>
	في الصفحة التالية، انقر على "Use a device":
</p>

<p style="text-align: center;">
	<img alt="use a device (9).png" class="ipsImage ipsImage_thumbnailed" data-fileid="90051" data-unique="r0fep6mq2" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed3d2d83f44_useadevice(9).png.78ba8abc83e6de16e881b788ed80bf33.png" style="width: 500px; height: auto;"></p>

<p>
	تعرّف على القرص القابل للإزالة المطلوب من خلال اسمه وحجمه، ويمكن أن يعرض اسمه بالشّكل EFI USB Device.
</p>

<p style="text-align: center;">
	<img alt="access-uefi-settings-windows (10).png" class="ipsImage ipsImage_thumbnailed" data-fileid="90028" data-unique="ziu09ui63" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed3d23086ba_access-uefi-settings-windows(10).png.372b24b7676202f41aa68f133eefca56.png" style="width: 500px; height: auto;"></p>

<p>
	الآن سيعاد تشغيل حاسوبك ليقلع في القرص الذي اخترته من الشاشة السابقة، وبعد بضع ثواني يجب أن تظهر نافذة كهذه:
</p>

<p style="text-align: center;">
	<img alt="Try Ubuntu wiithout installing or install ubuntu (11).jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="90050" data-unique="l73n6gvf1" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed3d2cea657_TryUbuntuwiithoutinstallingorinstallubuntu(11).jpg.809da2ee918e4166e4fe1a0eb3cb3850.jpg"></p>

<p>
	يسمح لك الخيار "تجربة توزيعة أوبنتو دون تثبيته Try Ubuntu without installing" بتجربة توزيعة أوبنتو من القرص الإقلاعي، وستجد خيار تثبيت توزيعة أوبنتو على سطح المكتب في هذه الحالة، أمّا الخيار "تثبيت Ubuntu" فيقوم بتثبيت توزيعة أوبنتو على الفور.
</p>

<p>
	يمكنك اختيار أي من الخيارين السابقين تبعًا لما تفضّل.
</p>

<h2>
	الخطوة السادسة: تثبيت توزيعة أوبنتو إلى جانب نظام ويندوز
</h2>

<p>
	الآن ابدأ بعملية التثبيت، الخطوات الأولى بسيطة جدًا تتضمّن اختيار اللغة وتنسيق لوحة المفاتيح.
</p>

<p style="text-align: center;">
	<img alt="choose your language (12).jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="90032" data-unique="l47dt65d4" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed3d24c3fa9_chooseyourlanguage(12).jpg.81fc2cf962db8fe534cf10c77cbfb562.jpg" style="width: 650px; height: auto;"></p>

<p style="text-align: center;">
	<img alt="choose keyboard layout (13).jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="90031" data-unique="lxubuvbn9" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed3d244dc08_choosekeyboardlayout(13).jpg.44f537dadb24f8b5377ebd1ab9f3ae85.jpg" style="width: 650px; height: auto;"></p>

<p>
	في الشاشة التالية، اختر "التثبيت العادي normal installation"، وما من ضرورة لتحميل التحديثات أو تثبيت برمجيات third-party حاليًا، بإمكانك إجراء ذلك بعد اكتمال التثبيت.
</p>

<p>
	الآن انقر على زر "متابعة continue"، يمكن أن يستغرق الانتقال إلى الصفحة التالية بعض الوقت.
</p>

<p style="text-align: center;">
	<img alt="normal installation (14).png" class="ipsImage ipsImage_thumbnailed" data-fileid="90046" data-unique="ucuq10msc" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed3d2b3fa68_normalinstallation(14).png.d9cc5f08dbe0b0bce517d5c30f992868.png" style="width: 650px; height: auto;"></p>

<p>
	<strong>ملاحظة</strong>: يحاول بعض الأشخاص تحميل التحديثات وتثبيت ترميزات الوسائط أثناء التثبيت، ولكن تفيد الخبرات بأن ذلك يمكن أن يؤدي لحدوث بعض المشاكل والتي بدورها ستسببُ بفشل التثبيت، ولهذا لا ننصح بإجراء ذلك في هذه المرحلة.
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		اقتباس
	</div>

	<div class="ipsQuote_contents ipsClearfix">
		<p>
			<strong>تنويه هام</strong>: يمكن إكمال التثبيت بإحدى منهجيتين وذلك تبعًا لما يظهر لك في الشاشة التالية (نمط التثبيت installation type)، وسنستعرض فيما يلي الحالتين.
		</p>
	</div>
</blockquote>

<h3>
	المنهجية 1: عند ظهور الخيار Install Ubuntu alongside Windows Boot Manager
</h3>

<p>
	إذا ظهر "مدير إقلاع تثبيت توزيعة أوبنتو إلى جانب نظام ويندوز" في صفحة نمط التثبيت فأنت من المحظوظين، وعندها اختر هذه الطريقة ثم انقر على "إكمال".
</p>

<p style="text-align: center;">
	<img alt="installation type (15).png" class="ipsImage ipsImage_thumbnailed" data-fileid="90044" data-unique="qzc27vdqy" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed3d2a63844_installationtype(15).png.72abe9362d89960d79fd14e279df20bc.png" style="width: 650px; height: auto;"></p>

<p>
	الشاشة التالية تعرض لك خيار إنشاء قطاع لتوزيعة أوبنتو عبر تحريك أداة تحديد الحجم، ففي هذه الخطوة يمكنك تخصيص المساحة المناسبة من القرص لتوزيعة أوبنتو. وستُنشئ توزيعة أوبنتو قطاع واحد فقط على كامل المساحة المخصّصة لها من القرص، وسينشئ ملف root يتضمن home وswapfile بحجم 2 غيغابايت.
</p>

<p style="text-align: center;">
	<img alt="install windows alongside ubuntu (16).png" class="ipsImage ipsImage_thumbnailed" data-fileid="90042" data-unique="9rbh61wcx" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed3d2980be4_installwindowsalongsideubuntu(16).png.25a5a9076f3a2181b28dbc8e25a5175a.png" style="width: 650px; height: auto;"></p>

<h3>
	المنهجية الثانية: إذا لم يظهر الخيار Install Ubuntu alongside Windows Boot Manager أو كان باللون الرمادي
</h3>

<p>
	في حال عدم ظهور خيار "مدير إقلاع تثبيت توزيعة أوبنتو إلى جانب نظام ويندوز" أو إذا ظهر باللون الرمادي، لا تقلق فما زال بالإمكان تثبيت توزيعة أوبنتو مع نظام ويندوز، ومن شاشة نمط التثبيت الحالية اختر "غير ذلك something else".
</p>

<p style="text-align: center;">
	<img alt="installation type something else (17).jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="90045" data-unique="ar25pwato" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed3d2acaff6_installationtypesomethingelse(17).jpg.699c98c446edfa0e5142d4601c0caba8.jpg" style="width: 650px; height: auto;"></p>

<p>
	وهذا ما سينقلك إلى الشاشة الخاصة بخيارات التجزئة، تذكّر أنّك أنشأت بعض المساحة التخزينية الحرة مسبقًا، والآن يمكنك اختيار تخصيص كامل المساحة الحرة لإنشاء ملف root (سيُنشأ ملفان هما home وswapfile تلقائيًا ضمن الـ root)، كما بإمكانك فصل أجزاء المستخدم الجذر root ومجلد المنزل home وذاكرة swapfile. وعمومًا يمكن اعتماد أي من الطريقتين.
</p>

<p>
	الصورة التالية تعرض خطوات إنشاء أجزاء مجلد النظام root، ومجلد المستخدم أو المنزل home، وقسم ذاكرة التبديل swapfile بطريقة منفصلة، ولكن بإمكانك تخصيص جزء واحد لها جميعها عبر تحديد المساحة الخالية والضغط على إشارة +.
</p>

<p style="text-align: center;">
	<img alt="free space (18).jpeg" class="ipsImage ipsImage_thumbnailed" data-fileid="90039" data-unique="drdn6w3fd" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed3d28214a5_freespace(18).jpeg.86792c3ab580d491b0ad38e319d3eb3a.jpeg" style="width: 650px; height: auto;"></p>

<p>
	سيعرض خيار إنشاء قطاع خاص بنظام لينكس، بدايةً ستنشئ القطاع الخاص بالنظام الجذر root، وأي مساحة تخزينية تزيد عن 25 غيغابايت تكفي تمامًا لهذا القطاع، اختر الحجم المطلوب، واختر Ext 4 كنوع للملفات، واختر means root لقيمة الخيار mount point (نقطة الوصل).
</p>

<p style="text-align: center;">
	<img alt="creat partition (19).png" class="ipsImage ipsImage_thumbnailed" data-fileid="90034" data-unique="wnuj4i7od" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed3d25a66fd_creatpartition(19).png.c3f54da3a6bc8b9939658c8011513c20.png" style="width: 450px; height: auto;"></p>

<p>
	وبمجرد نقرك على زر موافق في الشاشة السابقة ستنتقل إلى شاشة التجزئة، في هذه المرحلة يجب إنشاء القطاع الخاص بذاكرة التبديل Swap، لذا كما في الخطوة السابقة اضغط على إشارة +، ولكن في هذه المرة اختر نوع الملفات ليكون swap area.
</p>

<p>
	ولا يزال اختيار الحجم المثالي لقطاع swap محط نقاش حتى الآن، ولكن إجمالًا إذا كان حجم ذاكرة الوصول العشوائي لديك 2 غيغابايت أو أقل فخصص لقطاع swap ضعف هذا الحجم، أمّا إذا كان حجم RAM من 3 إلى 6 غيغابايت عندها خصص حجمًا يساويها، أمّا إذا كان حجم لذاكرة لديك 8 غيغابايت أو أكثر، فيمكنك تخصيص مساحة تساوي نصف مساحة الذاكرة (لكن إذا كان لديك مساحة خالية (كافية على القرص الصلب، وكنت تنوي استخدام وضع الاسبات في لينكس فهنا يجب تخصيص حجم للقطاع Swap يساوي على الأقل حجم الذاكرة RAM).
</p>

<p>
	وتذكّر أنّه بإمكانك زيادة الحجم المخصّص للقطاع Swap في أي وقت.
</p>

<p style="text-align: center;">
	<img alt="creat partition (20).png" class="ipsImage ipsImage_thumbnailed" data-fileid="90035" data-unique="srtdja41x" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed3d2611f2f_creatpartition(20).png.d851d38dd0f87be6daa4643791a0c039.png" style="width: 450px; height: auto;"></p>

<p>
	الآن وبطريقة مشابهة أنشئ الجزء home وخصص له أكبر مساحة تخزينية ممكنة (وهي في الواقع المساحة المتبقية بعد تخصيص كل من جزئي root و swap)، فهذا الجزء هو المتخصّص بحفظ ملفاتك من ملفات صوت وصور وملفات محمّلة.
</p>

<p style="text-align: center;">
	<img alt="creat partition (21).png" class="ipsImage ipsImage_thumbnailed" data-fileid="90036" data-unique="didkszcvf" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed3d267681c_creatpartition(21).png.25661e54eb351fba88518c8590cbe55c.png" style="width: 450px; height: auto;"></p>

<p>
	الآن وبعد انتهائك من تخصيص وتجهيز كل من الأجزاء root و home و swap انقر على زر التثبيت الآن Install now.
</p>

<p style="text-align: center;">
	<img alt="install now (22).jpeg" class="ipsImage ipsImage_thumbnailed" data-fileid="90041" data-unique="588c1tynt" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed3d29083e9_installnow(22).jpeg.b746b683f7b1a912128109dca25c05c2.jpeg"></p>

<p>
	أوشكت على الانتهاء، اختر المنطقة الزمنية.
</p>

<p style="text-align: center;">
	<img alt="timezone (23).png" class="ipsImage ipsImage_thumbnailed" data-fileid="90049" data-unique="q5bcceg74" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed3d2c81970_timezone(23).png.053d4165afcd46e63eb3a9d81fce6aa8.png" style="width: 650px; height: auto;"></p>

<p>
	ثم سيُطلب منك إدخال اسم للمستخدم، واسمًا للمضيف (اسم الحاسوب)، وكلمة مرور.
</p>

<p style="text-align: center;">
	<img alt="usernamw and password (24).png" class="ipsImage ipsImage_thumbnailed" data-fileid="90052" data-unique="clv2s1out" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed3d2ddee5b_usernamwandpassword(24).png.7b12f409d0482f84681b213ba4291c7f.png" style="width: 650px; height: auto;"></p>

<p>
	وما عليك الآن سوى الانتظار، يمكن أن يحتاج الأمر بحدود 8 إلى 10 دقائق لإكمال التثبيت
</p>

<p style="text-align: center;">
	<img alt="welcome to ubuntu (25).png" class="ipsImage ipsImage_thumbnailed" data-fileid="90053" data-unique="h4u968cnv" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed3d2e865db_welcometoubuntu(25).png.8b9a5cc49a54e19f2d63c20d9a4e2229.png" style="width: 600px; height: auto;"></p>

<p>
	وبمجرّد انتهاء التثبيت، أعد تشغيل الحاسوب.
</p>

<p style="text-align: center;">
	<img alt="installation complete restart now (26).png" class="ipsImage ipsImage_thumbnailed" data-fileid="90043" data-unique="eqlf1j22m" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed3d2a07df6_installationcompleterestartnow(26).png.53b7b9a983cc5ebef0a4cffe878b0cc4.png" style="width: 550px; height: auto;"></p>

<p>
	وعندها سيطلب منك إخراج القرص القابل للإزالة، ويمكنك إخراج القرص بأمان تمامًا في هذه المرحلة، وبعد ذلك إعادة التشغيل.
</p>

<p style="text-align: center;">
	<img alt="remove the installation medium (27).jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="90047" data-unique="eg48yqcpk" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed3d2b95158_removetheinstallationmedium(27).jpg.d07bc4236fc9e1fa461efbcc7ff0c8e4.jpg" style="width: 550px; height: auto;"></p>

<p>
	بعد الانتهاء من العملية، لن تحتاج بعد الآن إلى القرص القابل للإزالة الذي جعلته إقلاعيًا حتّى تستخدم لينكس لأنك نصبت توزيعة أوبنتو على القرص المحلي الخاص بجهازك، وهنا يعود الخيار لك، فإن كنت ترغب بتثبيت لينكس على جهاز آخر احتفظ بالقرص القابل للإزالة كما هو، وإلّا هيئه واستخدمه لحفظ ونقل البيانات بصورة طبيعية.
</p>

<p>
	فإذا نفذّت جميع الخطوات تنفيذًا صحيحًا ستظهر عند تشغيل حاسوبك الشاشة التالية، وهي مخصّصة لاختيار نظام التشغيل الذي تريد الدخول إليه، اختر "Ubuntu" لتدخل على توزيعة أوبنتو، أو اختر "windows boot manager" لتدخل على نظام ويندوز.
</p>

<p style="text-align: center;">
	<img alt="61ed3d2f01563_youcanchoosewhichoperatingsystemIndualboottobootinto1.jpg.2a512732de49262e8c60c1160a089bb9.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="90646" data-unique="w43vu179i" src="https://academy.hsoub.com/uploads/monthly_2022_01/61ed3d2f01563_youcanchoosewhichoperatingsystemIndualboottobootinto1.jpg.2a512732de49262e8c60c1160a089bb9.jpg.a58c68da70ab6a33f7b7faa4680229ed.jpg" style="width: 600px; height: auto;"></p>

<h2>
	نصائح إضافية
</h2>

<p>
	ستلاحظ وجود فرق زمني ما بين نظام ويندوز وتوزيعة أوبنتو، ويمكن حل هذه المشكلة (الفجوة الزمنية في حالة الإقلاع المزدوج) بسهولة.
</p>

<p>
	وستلاحظ أيضًا أنّه في شاشة الاختيار ما بين نظامي التشغيل ستكون الأولوية لتوزيعة أوبنتو، ويمكنك تعديل الترتيب جاعلًا ويندوز هو الخيار الافتراضي خاصّةً إذا كنت ستستخدمه أكثر من استخدامك لتوزيعة أوبنتو.
</p>

<p>
	كما يمكنك عكس الإجراء أي إزالة توزيعة أوبنتو والاحتفاظ بنظام ويندوز فقط.
</p>

<p>
	نرجو أن المقال كان مفيدًا لك، ولا تتردد بالسؤال في التعليقات أو طلب أي مساعدة في <a href="https://academy.hsoub.com/questions/" rel="">قسم الأسئلة والأجوبة</a>.
</p>

<p>
	ترجمة -وبتصرف- للمقال <a href="https://itsfoss.com/install-ubuntu-1404-dual-boot-mode-windows-8-81-uefi/" rel="external nofollow">How to Install Ubuntu Alongside Windows 10</a> لصاحبه Abhishek Prakash.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
<li>
		<a href="https://academy.hsoub.com/devops/linux/%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA-%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D8%A7%D9%84%D8%AD%D8%B2%D9%85-%D9%81%D9%8A-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-%D9%88%D8%AF%D8%A8%D9%8A%D8%A7%D9%86-%D8%A7%D9%84%D8%AC%D8%B2%D8%A1-%D8%A7%D9%84%D8%A3%D9%88%D9%84-r248/" rel="">أساسيات إدارة الحزم في أوبنتو ودبيان - الجزء الأول</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/servers/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%B6%D8%A8%D8%B7-%D8%A5%D8%B9%D8%AF%D8%A7%D8%AF%D8%A7%D8%AA-%D8%A7%D9%84%D8%B4%D8%A8%D9%83%D8%A7%D8%AA-%D8%B9%D9%84%D9%89-%D8%AE%D8%A7%D8%AF%D9%88%D9%85-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-r160/" rel="">كيفية ضبط إعدادات الشبكات على خادوم أوبنتو</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/linux/%D9%83%D9%8A%D9%81-%D8%AA%D8%B6%D8%A8%D8%B7-%D9%85%D8%B2%D8%A7%D9%85%D9%86%D8%A9-%D8%A7%D9%84%D9%88%D9%82%D8%AA-%D9%81%D9%8A-%D8%AE%D8%A7%D8%AF%D9%88%D9%85-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-1604-r347/" rel="">كيف تضبط مزامنة الوقت في خادوم أوبنتو 16.04</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/linux/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AA%D8%AB%D8%A8%D9%8A%D8%AA-%D8%AA%D9%88%D8%B2%D9%8A%D8%B9%D8%A9-%D8%A3%D9%88%D8%A8%D9%86%D8%AA%D9%88-%D9%85%D9%86-%D9%84%D9%8A%D9%86%D9%83%D8%B3-%D8%A8%D8%A3%D8%A8%D8%B3%D8%B7-%D8%B7%D8%B1%D9%8A%D9%82%D8%A9-r575/" rel="">كيفية تثبيت توزيعة أوبنتو من لينكس بأبسط طريقة</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">576</guid><pubDate>Tue, 11 Jan 2022 17:00:00 +0000</pubDate></item><item><title>&#x62F;&#x644;&#x64A;&#x644; &#x627;&#x633;&#x62A;&#x62E;&#x62F;&#x627;&#x645; &#x645;&#x62D;&#x631;&#x631; &#x627;&#x644;&#x646;&#x635;&#x648;&#x635; Sed</title><link>https://academy.hsoub.com/devops/linux/%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D9%85%D8%AD%D8%B1%D8%B1-%D8%A7%D9%84%D9%86%D8%B5%D9%88%D8%B5-sed-r570/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_01/61d49058c310d_----Sed.png.406f4ef6d9534266f37c792e1f1c6e36.png" /></p>

<p>
	ابتكِر الأمر <code>sed</code> في البداية للإصدار السابع من <a href="https://academy.hsoub.com/files/24-%D8%A3%D9%86%D8%B8%D9%85%D8%A9-%D8%A7%D9%84%D8%AA%D8%B4%D8%BA%D9%8A%D9%84-%D9%84%D9%84%D9%85%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D9%86/" rel="">أنظمة تشغيل</a> يونيكس الأساسية لشركة AT&amp;T، وأصبح جزءًا من كل أنظمة تشغيل يونيكس أو <a href="https://academy.hsoub.com/devops/linux/%D9%85%D8%A7-%D9%87%D9%88-%D9%86%D8%B8%D8%A7%D9%85-%D8%A7%D9%84%D8%AA%D8%B4%D8%BA%D9%8A%D9%84-%D9%84%D9%8A%D9%86%D9%83%D8%B3%D8%9F-r451/" rel="">لينكس</a> منذ ذلك الحين. يعد برنامج <code>sed</code> <em>محررًا تدفقيًا</em> stream editor، لكن على عكس محررات النصوص فهو لا يفتح مخزِّنًا مؤقتًا مرئيًا تتحمل ضمنه بيانات الملف لمعالجتها، بل ينفذ على ملف سطرًا تلو الآخر إما حسب الأمر الذي تدخله إلى الطرفية أو حسب سلسلة الأوامر الواردة ضمن نص برمجي script.
</p>

<h2>
	تثبيت محرر النصوص Sed
</h2>

<p>
	إذا كان نظام التشغيل لديك لينوكس أو بي إس دي BSD أو ماك أو إس macOS سيكون <a href="https://academy.hsoub.com/devops/linux/%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85%D8%A7%D8%AA-%D9%85%D8%AA%D9%82%D8%AF%D9%85%D8%A9-%D9%84%D9%84%D9%85%D8%AD%D8%B1%D9%90%D9%91%D8%B1-sed-%D9%81%D9%8A-%D9%86%D8%B8%D8%A7%D9%85-%D9%84%D9%8A%D9%86%D9%83%D8%B3-r322/" rel="">برنامج sed</a> من إصدار GNU أو BSD مثبتًا أصلًا. هذان الإصداران إعادة تنفيذ فريدة للأمر <code>sed</code> الأصلي، وهما متشابهان بالمجمل لكن توجد بينهما بعض الفروق الطفيفة. يعد إصدار GNU للأمر <code>sed</code> بشكل عام أكثر إصدار متاح غني بالخصائص، ويستخدم على نطاق واسع على أي من المنصات التي ذكرناها.
</p>

<p>
	إذا لم تجد إصدار GNU للأمر <code>sed</code> (الذي يدعى غالبًا <code>gsed</code> على أي نظام تشغيل غير لينوكس)، <a href="http://www.gnu.org/software/sed/" rel="external nofollow">حمّل شيفرته المصدرية من موقع GNU</a>. من محاسن تثبيت إصدار GNU للأمر <code>sed</code> إمكانية الاستفادة من خصائصه الإضافية، لكن يمكنك تقييده ليتوافق مع معايير <a href="https://opensource.com/article/19/7/what-posix-richard-stallman-explains" rel="external nofollow">POSIX</a> فقط إذا احتجت تحويله.
</p>

<p>
	أما على أنظمة تشغيل ويندوز <a href="https://chocolatey.org/packages/sed" rel="external nofollow">ثبت</a> إصدار GNU للأمر <code>sed</code> من خلال مدير الحزم شوكولاتي <a href="https://opensource.com/article/20/3/chocolatey" rel="external nofollow">Chocolatey</a>.
</p>

<h2>
	آلية عمل برنامج sed
</h2>

<p>
	يعمل برنامج <code>sed</code> على كل سطر على حدى. ينشئ حيزًا نمطيًا pattern space لأنه لا يعرض البيانات عرضًا مرئيًا، يتضمن الحيز في الذاكرة السطر الحالي من مجرى الدخل input stream (مع أي محرف متتابع محذوف من السطر الجديد). تنفَّذ أوامرك التي أدخلتها لبرنامج <code>sed</code> عندما يمتلئ الحيز النمطي. تكون أحيانًا الأوامر التي تدخلها شرطيةً وأحيانًا تكون حتميةً، لذا تعتمد نتائج هذه الأوامر على طريقة استخدامك لبرنامج <code>sed</code>.
</p>

<p>
	عندما تنتهي الأوامر المُدخَلة يطبع <code>sed</code> محتويات الحيز النمطي على مجرى الخرج output stream. إن <strong>stdout</strong> هو مجرى الخرج الافتراضي أو القياسي، لكنك تستطيع إعادة توجيه الخرج إلى ملف آخر أو حتى إعادته إلى نفس الملف باستخدام الخيار <code>in-place=.bak--</code>.
</p>

<p>
	ثم تبدأ الدورة مجددًا في سطر الدخل التالي.
</p>

<p>
	تكون صيغة الأمر <code>sed</code> كالتالي:
</p>

<pre class="ipsCode prettyprint lang-ruby prettyprinted" id="ips_uid_8462_13" style="">
<span class="pln">$ sed </span><span class="pun">--</span><span class="pln">options </span><span class="pun">[</span><span class="pln">optional SCRIPT</span><span class="pun">]</span><span class="pln"> </span><span class="pun">[</span><span class="pln">INPUT FILE </span><span class="kwd">or</span><span class="pln"> STREAM</span><span class="pun">]</span></pre>

<h3>
	البحث عما تريد تعديله
</h3>

<p>
	لا تضطر إلى بذل جهد في تحديد مكان ما تريد تعديله في ملف نصي عند استخدامك المحرر المرئي، إذ تجري مسحًا لكامل النص بعينيك، ثم تجد الكلمة التي تريد تغييرها أو الموضع الذي تريد إدخال نص فيه أو حذف نص منه، ثم تبدأ بالكتابة. لكن <code><a href="https://academy.hsoub.com/devops/linux/%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA-%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A7%D9%84%D9%85%D8%AD%D8%B1%D8%B1-%D8%A7%D9%84%D8%AA%D8%AF%D9%81%D9%82%D9%8A-sed-%D9%84%D8%AA%D8%B9%D8%AF%D9%8A%D9%84-%D8%A7%D9%84%D9%86%D8%B5%D9%88%D8%B5-%D9%81%D9%8A-%D9%86%D8%B8%D8%A7%D9%85-%D9%84%D9%8A%D9%86%D9%83%D8%B3-r318/" rel="">sed</a></code> لا يوجد فيها نمط تفاعلي، لذا عليك أن تملي عليه الشروط التي يجب أن تتحقق حتى ينفذ أوامر معينة.
</p>

<p>
	لنفترض في الأمثلة التالية أنه لدينا ملفًا باسم <code>example.txt</code> يحتوي النص التالي:
</p>

<pre class="ipsCode prettyprint lang-ruby prettyprinted" id="ips_uid_8462_15" style="">
<span class="pln">hello
world
</span><span class="typ">This</span><span class="pln"> is line three</span><span class="pun">.</span><span class="pln">
</span><span class="typ">Here</span><span class="pln"> is the final line</span><span class="pun">.</span></pre>

<h3>
	رقم السطر
</h3>

<p>
	إن تحديد رقم للسطر يعلِم الأمر <code>sed</code> أن لا ينفذ الأمر إلا على ذلك السطر ضمن الملف.
</p>

<p>
	فمثلًا يختار الأمر في المثال التالي السطر الأول في الملف ويطبعه. نلاحظ أن السطر الأول طبِع مرتين، لأن الإجراء الافتراضي في الأمر <code>sed</code> بعد المعالجة هو أن يطبع السطر على المجرى <strong>stdout</strong> أيضًا:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_8462_17" style="">
<span class="pln">$ sed </span><span class="str">'1p'</span><span class="pln"> example</span><span class="pun">.</span><span class="pln">txt
hello
hello
world
</span><span class="typ">This</span><span class="pln"> is line three</span><span class="pun">.</span><span class="pln">
</span><span class="typ">Here</span><span class="pln"> is the final line</span><span class="pun">.</span></pre>

<p>
	يمكنك تحديد أرقام الأسطر على عدة خطوات. مثلًا تشير <code>1~2</code> أنه سيحدد كل سطرين ("حدد كل سطر ثانٍ بدءًا من السطر الأول"). ويعني الأمر <code>1~3</code> أنه سيحدد كل سطر ثالث بعد السطر الأول.
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_8462_19" style="">
<span class="pln">$ sed </span><span class="str">'1p'</span><span class="pln"> example</span><span class="pun">.</span><span class="pln">txt
hello
hello
world
</span><span class="typ">This</span><span class="pln"> is line three</span><span class="pun">.</span><span class="pln">
</span><span class="typ">Here</span><span class="pln"> is the final line</span><span class="pun">.</span><span class="pln">
</span><span class="typ">Here</span><span class="pln"> is the final line</span><span class="pun">.</span></pre>

<h3>
	موضع السطر
</h3>

<p>
	لن تستطيع أن تنفذ أي أمر إلا على آخر سطر في الملف عندما تستخدم المحدد selector التالي <code>$</code>:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_8462_21" style="">
<span class="pln">$ sed </span><span class="str">'$p'</span><span class="pln"> example</span><span class="pun">.</span><span class="pln">txt
hello
world
</span><span class="typ">This</span><span class="pln"> is line three</span><span class="pun">.</span><span class="pln">
</span><span class="typ">Here</span><span class="pln"> is the final line</span><span class="pun">.</span><span class="pln">
</span><span class="typ">Here</span><span class="pln"> is the final line</span><span class="pun">.</span></pre>

<p>
	يمكنك في إصدار GNU للأمر <code>sed</code> تحديد أكثر من سطر (مثلًا يطبع الأمر <code>'sed '1,$p</code> أول وآخر سطر في الملف).
</p>

<h3>
	النفي
</h3>

<p>
	يمكنك عكس أي تحديد حددته بواسطة الرقم أو الموضع بإضافة محرف إشارة التعجب (!). يحدد الأمر التالي جميع الأسطر <strong>باستثناء</strong> الأول:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_8462_25" style="">
<span class="pln">$ sed </span><span class="str">'1!p'</span><span class="pln"> example</span><span class="pun">.</span><span class="pln">txt
hello
world
world
</span><span class="typ">This</span><span class="pln"> is line three</span><span class="pun">.</span><span class="pln">
</span><span class="typ">This</span><span class="pln"> is line three</span><span class="pun">.</span><span class="pln">
</span><span class="typ">Here</span><span class="pln"> is the final line</span><span class="pun">.</span><span class="pln">
</span><span class="typ">Here</span><span class="pln"> is the final line</span><span class="pun">.</span></pre>

<h3>
	تطابق النمط
</h3>

<p>
	يمكنك تشبيه تطابق النمط pattern match بخيار <strong>find</strong> الموجود في المتصفح أو معالج النصوص، فأنت تزوده بالكلمة (النمط) وهو يحدد النتائج. صيغة تطابق النمط هي <code>/pattern/</code>.
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_8462_28" style="">
<span class="pln">$ sed </span><span class="str">'/hello/p'</span><span class="pln"> example</span><span class="pun">.</span><span class="pln">txt
hello
hello
world
</span><span class="typ">This</span><span class="pln"> is line three</span><span class="pun">.</span><span class="pln">
</span><span class="typ">Here</span><span class="pln"> is the final line</span><span class="pun">.</span><span class="pln">
$ sed </span><span class="str">'/line/p'</span><span class="pln"> example</span><span class="pun">.</span><span class="pln">txt
hello
world
</span><span class="typ">This</span><span class="pln"> is line three</span><span class="pun">.</span><span class="pln">
</span><span class="typ">This</span><span class="pln"> is line three</span><span class="pun">.</span><span class="pln">
</span><span class="typ">Here</span><span class="pln"> is the final line</span><span class="pun">.</span><span class="pln">
</span><span class="typ">Here</span><span class="pln"> is the final line</span><span class="pun">.</span></pre>

<h2>
	التعديل باستخدام الأمر Sed
</h2>

<p>
	بعدما وجدت ما تريد تعديله، تستطيع تطبيق أي إجراء تريده عليه. تجري التعديلات في الأمر <code>sed</code> عن طريق الأوامر. تختلف الأوامر في <code>sed</code> عن الأمر <code>sed</code> نفسه. لتبسيط الفكرة تخيل أنهم "إجراءات" أو "أفعال" أو "توجيهات".
</p>

<p>
	تكون الأوامر في <code>sed</code> عبارة عن حرف واحد، مثل الحرف <code>p</code> في أمر <strong>الطباعة print</strong> الذي استخدمناه في الأمثلة السابقة. قد يصعب تذكرها في البداية، لكن حالها كحال أي شيء تحترفه بممارسته.
</p>

<h3>
	الأمر p للطباعة
</h3>

<p>
	يطبع الأمر <code>p</code> أي شيء يشغل الحيز النمطي ومررنا على كيفية استخدامه في الأمثلة السابقة.
</p>

<h3>
	الأمر d للحذف
</h3>

<p>
	يحذف الأمر <code>d</code> محتوى الحيز النمطي.
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_8462_30" style="">
<span class="pln">$ sed </span><span class="str">'$d'</span><span class="pln"> example</span><span class="pun">.</span><span class="pln">txt
hello
world
</span><span class="typ">This</span><span class="pln"> is line three</span><span class="pun">.</span><span class="pln">
$ sed </span><span class="str">'1d'</span><span class="pln"> example</span><span class="pun">.</span><span class="pln">txt
world
</span><span class="typ">This</span><span class="pln"> is line three</span><span class="pun">.</span><span class="pln">
</span><span class="typ">Here</span><span class="pln"> is the final line</span><span class="pun">.</span></pre>

<h3>
	الأمر s للبحث والاستبدال
</h3>

<p>
	يبحث الأمر <code>s</code> عن نمط ويستبدله بآخر. وربما هذا أشيع استخدام للأمر <code>sed</code>، ويكون عادةً أول أمر يتعلمه المستخدم في الأمر <code>sed</code> (وأحيانًا الأمر الوحيد). من شبه المؤكد أنه أنفع أمر في تحرير النصوص.
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_8462_32" style="">
<span class="pln">$ sed </span><span class="str">'s/world/Hsoub.com/'</span><span class="pln">
hello
</span><span class="typ">Hsoub</span><span class="pun">.</span><span class="pln">com
</span><span class="typ">This</span><span class="pln"> is line three</span><span class="pun">.</span><span class="pln">
</span><span class="typ">Here</span><span class="pln"> is the final line</span><span class="pun">.</span></pre>

<p>
	كما توجد خصائص خاصة تستطيع استخدامها في نصك البديل أيضًا. فمثلًا يحول <code>L\</code> جميع أحرف النص البديل إلى أحرف صغيرة، أما <code>l\</code> يؤدي نفس المهمة لكن للمحرف التالي فقط. وتوجد خصائص أخرى تجدها في توثيق <code>sed</code> (يمكنك الاطلاع عليه باستخدام الأمر <code>info sed</code>).
</p>

<p>
	يشير المحرف الخاص <code>&amp;</code> في العبارة البديلة إلى النمط المطابِق، كما يشير <code>U\</code> إلى عرض الخرج فورًا بدل من تخزينه في الذاكرة المؤقتة Buffer:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_8462_34" style="">
<span class="pln">$ sed </span><span class="str">'s/is/\U&amp;/'</span><span class="pln"> example</span><span class="pun">.</span><span class="pln">txt
hello
world
</span><span class="typ">ThIS</span><span class="pln"> is line three</span><span class="pun">.</span><span class="pln">
</span><span class="typ">Here</span><span class="pln"> IS the final line</span><span class="pun">.</span></pre>

<p>
	كما تستطيع تمرير رايات flags خاصة لتحدد كيف ستعالج <code>s</code> النص الذي تجده. تجعل راية <code>g</code> (ربما اختصارًا لكلمة <em>global</em> أو عام) الأمر <code>s</code> يستبدل جميع حالات التطابق التي يجدها في السطر، وليس أول حالة تطابق فقط:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_8462_36" style="">
<span class="pln">$ sed </span><span class="str">'s/is/\U&amp;/g'</span><span class="pln"> example</span><span class="pun">.</span><span class="pln">txt
hello
world
</span><span class="typ">ThIS</span><span class="pln"> IS line three</span><span class="pun">.</span><span class="pln">
</span><span class="typ">Here</span><span class="pln"> IS the final line</span><span class="pun">.</span></pre>

<p>
	إحدى الرايات المهمة الأخرى تتضمن رقمًا يشير إلى أية حالة تَطابق نمط سينفذ الأمر عليها:
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_8462_38" style="">
<span class="pln">$ sed </span><span class="str">'s/is/\U&amp;/2'</span><span class="pln"> example</span><span class="pun">.</span><span class="pln">txt
hello
world
</span><span class="typ">This</span><span class="pln"> IS line three</span><span class="pun">.</span><span class="pln">
</span><span class="typ">Here</span><span class="pln"> is the final line</span><span class="pun">.</span></pre>

<p>
	عندما تضيف الراية <code>w</code> متبوعةً باسم ملف، يكتب الأمر السطر المطابِق في ذلك الملف <em>في حالة</em> حدوث تغيير فقط:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_8462_42" style="">
<span class="pln">$ sed </span><span class="str">'s/is/\U&amp;/w sed.log'</span><span class="pln"> example</span><span class="pun">.</span><span class="pln">txt
hello
world
</span><span class="typ">ThIS</span><span class="pln"> is line three</span><span class="pun">.</span><span class="pln">
</span><span class="typ">Here</span><span class="pln"> IS the final line</span><span class="pun">.</span></pre>

<pre class="ipsCode">
$ cat sed.log
ThIS is line three.
Here IS the final line.
</pre>

<p>
	تستطيع دمج الرايات مع بعضها:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_8462_44" style="">
<span class="pln">$ sed </span><span class="str">'s/is/\U&amp;/2w sed.log'</span><span class="pln"> example</span><span class="pun">.</span><span class="pln">txt
hello
world
</span><span class="typ">This</span><span class="pln"> IS line three</span><span class="pun">.</span><span class="pln">
</span><span class="typ">Here</span><span class="pln"> is the final line</span><span class="pun">.</span></pre>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_8462_46" style="">
<span class="pln">$ cat sed</span><span class="pun">.</span><span class="pln">log
</span><span class="typ">This</span><span class="pln"> IS line three</span><span class="pun">.</span></pre>

<h2>
	النصوص البرمجية
</h2>

<p>
	توجد العديد من المواقع على الإنترنت التي تزودك بمدخلات جاهزة للأمر <code>sed</code> عبارة عن سطر واحد. فهي توفر لك مهام محددة في أوامر <code>sed</code> لحل المشاكل الشائعة. لكن اعتمادك على نفسك في تعلم الأمر <code>sed</code> يتيح لك كتابة مدخلاتك بنفسك، التي تفصّلها حسب احتياجاتك.
</p>

<p>
	يمكن كتابة <a href="https://academy.hsoub.com/programming/general/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A7%D9%84%D8%AA%D8%B9%D8%A7%D9%85%D9%84-%D9%85%D8%B9-%D8%A7%D9%84%D9%86%D8%B5%D9%88%D8%B5-%D9%81%D9%8A-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-r1341/" rel="">النصوص البرمجية</a> أو السكربتات scripts للأمر <code>sed</code> كسطور في الطرفية، أو يمكن حفظها في ملف وتنفيذها ضمن الأمر <code>sed</code> نفسه. أنا أفضل كتابة جميع النصوص البرمجية الصغيرة كأمر واحد لأنني نادرًا ما أجد نفسي أعيد استخدام أوامر <code>sed</code> في الحياة اليومية. فعندما أكتب نصًا برمجيًا للأمر <code>sed</code>، يكون مخصصًا لملف واحد. مثلًا بعدما كتبت المسودة الأولية من هذا المقال بالذات، استعنت بالأمر <code>sed</code> لأوحِّد حالة أحرف كلمة "sed"، وربما لن أضطر لتنفيذ هذه المهمة مجددًا أبدًا. يمكنك الاطلاع على توثيق <a href="https://wiki.hsoub.com/Bash" rel="external">باش Bash</a> في موسوعة حسوب للتعرف أكثر حول عملية كتابة السكربتات.
</p>

<p>
	يمكنك إرسال سلسلة أوامر منفصلة إلى الأمر <code>sed</code> والفصل بينها بفاصلة منقوطة (;).
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_8462_48" style="">
<span class="pln">$ sed </span><span class="str">'3t ; s/line/\U&amp;/'</span><span class="pln"> example</span><span class="pun">.</span><span class="pln">txt
hello
world
</span><span class="typ">This</span><span class="pln"> is LINE three</span><span class="pun">.</span><span class="pln">
</span><span class="typ">This</span><span class="pln"> is the final line</span><span class="pun">.</span></pre>

<h2>
	تحديد مجال التعديل باستخدام الأقواس
</h2>

<p>
	كما يمكنك تحديد النتائج التي سيطبق عليها الأمر بإضافة الأقواس ({}). فعندما تضيف الأقواس إلى الأمر <code>sed</code>، لا تطبق الأوامر إلا على ما تحدده فقط. مثلًا ترد الكلمة "line" في سطرين ضمن النص في مثالنا السابق، يمكنك إلزام الأمر <code>sed</code> بأن ينفَّذ على السطر الأخير فقط من خلال الإعلان عن شرط التطابق المطلوب (وهو <code>$</code> للإشارة إلى السطر الأخير) ثم وضع الأمر <code>s</code> الذي تريد تنفيذه ضمن قوسين مباشرةً بعده:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_8462_50" style="">
<span class="pln">$ sed </span><span class="str">'$ {s/line/\U&amp;/}'</span><span class="pln"> example</span><span class="pun">.</span><span class="pln">txt
hello
world
</span><span class="typ">This</span><span class="pln"> is line three</span><span class="pun">.</span><span class="pln">
</span><span class="typ">This</span><span class="pln"> is the final LINE</span><span class="pun">.</span></pre>

<h2>
	تعلم الأمر sed
</h2>

<p>
	يحمل الأمر <code>sed</code> في طياته العديد من الفوائد الأخرى غير التي ذكرتها في المقال. فأنا لم أتطرق حتى إلى التفرُّع (<code>b</code>) والاختبارات (<code>t</code>) و<em>حجز</em> الحيز (<code>H</code>) وخصائص عديدة غيرها. على غرار الأمر<code>ed</code>، ربما لن يكون <code>sed</code> هو محرر النصوص الذي ستستخدمه لإنشاء المستندات، أو حتى في جميع المهام المكتوبة على شكل نصوص برمجية التي ستحتاج إلى إنشائها، لكنه خيار قوي في يديك كمستخدم يعمل وفق معايير POSIX. فإن تعلمك هيكلية الأوامر في <code>sed</code> وطريقة كتابة نصوص برمجية قصيرة سيحقق لك إمكانية إجراء تعديلات سريعة في نصوص ضخمة. اطلع على صفحات <code>info</code> للأمر <code>sed</code> من إصدار GNU، أو صفحات الدليل man للأمر <code>sed</code> من إصدار <a href="https://academy.hsoub.com/devops/freebsd/%D9%85%D9%82%D8%AF%D9%85%D8%A9-%D9%85%D9%82%D8%A7%D8%B1%D9%86%D8%A9-%D8%A5%D9%84%D9%89-%D9%86%D8%B8%D8%A7%D9%85-freebsd-%D9%84%D9%85%D8%B3%D8%AA%D8%AE%D8%AF%D9%85%D9%8A-gnulinux-r97/" rel="">BSD</a>، لتتعمق فيما سيفيدك الأمر <code>sed</code> خلال عملك.
</p>

<p>
	ترجمة -وبتصرف- للمقال <a href="https://opensource.com/article/20/12/sed" rel="external nofollow">Learn to use the Sed text editor</a> لصاحبه Seth Kenlon.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
<li>
		<a href="https://academy.hsoub.com/devops/linux/%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A7%D9%84%D8%A3%D9%85%D8%B1-grep-%D9%81%D9%8A-%D9%84%D9%8A%D9%86%D9%83%D8%B3-r566/" rel="">دليل استخدام الأمر grep في لينكس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/linux/%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D9%84%D8%B1%D8%A8%D8%B7-%D8%A7%D9%84%D8%B4%D8%A8%D9%83%D9%8A-%D9%81%D9%8A-%D8%AA%D8%B1%D9%85%D9%8A%D8%B2-cidr-%D9%88%D8%B6%D8%A8%D8%B7%D9%87-%D9%81%D9%8A-%D9%84%D9%8A%D9%86%D9%83%D8%B3-r565/" rel="">دليل الربط الشبكي في ترميز CIDR وضبطه في لينكس</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/linux/%D9%85%D9%82%D8%AF%D9%85%D8%A9-%D9%81%D9%8A-%D8%A7%D9%84%D8%AA%D9%88%D8%AC%D9%8A%D9%87-%D8%A7%D9%84%D8%B4%D8%A8%D9%83%D9%8A-%D9%81%D9%8A-%D9%86%D8%B8%D8%A7%D9%85-%D8%A7%D9%84%D8%AA%D8%B4%D8%BA%D9%8A%D9%84-%D9%84%D9%8A%D9%86%D9%83%D8%B3-r564/" rel="">مقدمة في التوجيه الشبكي في نظام التشغيل لينكس</a>
	</li>
</ul>
<p>
	 
</p>
]]></description><guid isPermaLink="false">570</guid><pubDate>Tue, 04 Jan 2022 18:29:07 +0000</pubDate></item><item><title>&#x62F;&#x644;&#x64A;&#x644; &#x627;&#x633;&#x62A;&#x62E;&#x62F;&#x627;&#x645; &#x627;&#x644;&#x623;&#x645;&#x631; grep &#x641;&#x64A; &#x644;&#x64A;&#x646;&#x643;&#x633;</title><link>https://academy.hsoub.com/devops/linux/%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A7%D9%84%D8%A3%D9%85%D8%B1-grep-%D9%81%D9%8A-%D9%84%D9%8A%D9%86%D9%83%D8%B3-r566/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2021_12/61b3b4405bde5_---grep.png.1d75b63569766b9a595b6da8c2cf7754.png" /></p>

<p>
	تعلم مبادئ البحث عن المعلومات في ملفاتك، ثم حمّل الورقة المرجعية التي نقدمها لك لتحصل على دليل مرجعي سريع للأمر grep <a href="https://academy.hsoub.com/programming/general/%D8%A7%D9%84%D8%AA%D8%B9%D8%A7%D8%A8%D9%8A%D8%B1-%D8%A7%D9%84%D9%86%D9%85%D8%B7%D9%8A%D8%A9-%D9%81%D9%8A-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-r1374/" rel="">والتعبيرات النمطية</a> regular expression المرتبطة به.
</p>

<p>
	إن الأمر grep هو اختصار لعبارة طباعة التعبير النمطي العالمي Global Regular Expression Print، هو أحد أوامر نظام يونكس Unix التقليدية، طوَّره كِن طومسون Ken Thompson في عام 1974. إنه واسع الانتشار في مجال الحوسبة لدرجة أنه يستخدَم كثيرًا كفعل بمعنى "يبحث" باللغة الإنجليزية (بشكل مشابهة للفعل google الذي يأتي بمعنى البحث في الإنترنت). بالمختصر إن grep هو وسيلة بحث في أي ملف عن نمط محدد من المحارف. إذا ذكرك هذا الأمر بخيار البحث Find الحديث والمتاح في أي معالج نصوص أو محرر نصوص، هذا يعني أنك لحظت فعلًا نتائج هذا الأمر في مجال الحوسبة.
</p>

<p>
	إن الأمر grep بعيد كل البعد عن أن يكون أمرًا قديمًا عتيق الطراز استبدلته التكنولوجيا الحديثة، إذ تكمن قوته الحقيقية في عاملَين:
</p>

<ul>
<li>
		يعمل الأمر grep على الطرفية وينفَّذ على تدفقات البيانات، لذا يمكنك إدراجه في العمليات المعقدة. فهو لا يتيح لك إيجاد كلمة في ملف نصي فحسب، بل تستطيع استخراج الكلمة وتضمينها في أمر آخر أيضًا، وهكذا.
	</li>
	<li>
		يستخدم grep التعبيرات النمطية regular expression ليضفي مرونةً على عملية البحث.
	</li>
</ul>
<p>
	من السهل تعلم استخدام الأمر grep، رغم أنه يحتاج إلى بعض الممارسة. سنتناول في هذه المقالة بعض أنفع خصائصه.
</p>

<h2>
	تثبيت grep
</h2>

<p>
	ستجد grep مثبَّتًا مسبقًا إذا كان نظام التشغيل لديك لينكس.
</p>

<p>
	أما إذا كان <a href="https://academy.hsoub.com/files/24-%D8%A3%D9%86%D8%B8%D9%85%D8%A9-%D8%A7%D9%84%D8%AA%D8%B4%D8%BA%D9%8A%D9%84-%D9%84%D9%84%D9%85%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D9%86/" rel="">نظام التشغيل</a> لديك ماك او إس macOS سيكون لديك إصدار grep الخاص بنظام تشغيل BSD، الذي يختلف اختلافًا بسيطًا عن الإصدار الخاص بنظام GNU، لذا إذا أردت المتابعة معنا في هذه المقالة بدقة ثبِّت grep الخاص بالإصدار GNU من مشاريع مثل <a href="https://opensource.com/article/20/6/homebrew-mac" rel="external nofollow">Homebrew</a> أو <a href="https://opensource.com/article/20/11/macports" rel="external nofollow">MacPorts</a>.
</p>

<h2>
	أساسيات الأمر grep
</h2>

<p>
	لا تتغير صيغة الأمر grep الأساسية إذ تكتب الأمر <code>grep</code> ثم ترفقه بنمط محدد ثم اسم الملف الذي تريده أن يبحث ضمنه، في المقابل يطبع الأمر كل سطر يحتوي ما يطابق النمط الذي أدخلته على الطرفية.
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_62_6" style="">
<span class="pln">$ grep gnu gpl</span><span class="pun">-</span><span class="lit">3.0</span><span class="pun">.</span><span class="pln">txt
    along </span><span class="kwd">with</span><span class="pln"> </span><span class="kwd">this</span><span class="pln"> program</span><span class="pun">.</span><span class="pln">  </span><span class="typ">If</span><span class="pln"> not</span><span class="pun">,</span><span class="pln"> see </span><span class="pun">&lt;</span><span class="pln">http</span><span class="pun">:</span><span class="com">//www.gnu.org/licenses/&gt;.</span><span class="pln">
</span><span class="pun">&lt;</span><span class="pln">http</span><span class="pun">:</span><span class="com">//www.gnu.org/licenses/&gt;.</span><span class="pln">
</span><span class="pun">&lt;</span><span class="pln">http</span><span class="pun">:</span><span class="com">//www.gnu.org/philosophy/why-not-lgpl.html&gt;.</span></pre>

<p>
	يكون الأمر <code>grep</code> افتراضيًا حساسًا لحالة الأحرف case-sensitive، لذا تختلف كتابة "gnu" عن "GNU" أو "Gnu". يمكنك جعله يتجاهل حالة الأحرف بإضافة خيار <code>ignore-case--</code>.
</p>

<pre class="ipsCode prettyprint lang-php prettyprinted" id="ips_uid_62_9" style="">
<span class="pln">$ grep </span><span class="pun">--</span><span class="pln">ignore</span><span class="pun">-</span><span class="kwd">case</span><span class="pln"> gnu gpl</span><span class="pun">-</span><span class="lit">3.0</span><span class="pun">.</span><span class="pln">txt
                    GNU GENERAL PUBLIC LICENSE
  </span><span class="typ">The</span><span class="pln"> GNU </span><span class="typ">General</span><span class="pln"> </span><span class="typ">Public</span><span class="pln"> </span><span class="typ">License</span><span class="pln"> </span><span class="kwd">is</span><span class="pln"> a free</span><span class="pun">,</span><span class="pln"> copyleft license </span><span class="kwd">for</span><span class="pln">
the GNU </span><span class="typ">General</span><span class="pln"> </span><span class="typ">Public</span><span class="pln"> </span><span class="typ">License</span><span class="pln"> </span><span class="kwd">is</span><span class="pln"> intended to guarantee your freedom to
GNU </span><span class="typ">General</span><span class="pln"> </span><span class="typ">Public</span><span class="pln"> </span><span class="typ">License</span><span class="pln"> </span><span class="kwd">for</span><span class="pln"> most of </span><span class="kwd">our</span><span class="pln"> software</span><span class="pun">;</span><span class="pln"> it applies also to
</span><span class="pun">[...</span><span class="lit">16</span><span class="pln"> more results</span><span class="pun">...]</span><span class="pln">
</span><span class="pun">&lt;</span><span class="pln">http</span><span class="pun">:</span><span class="com">//www.gnu.org/licenses/&gt;.</span><span class="pln">
</span><span class="pun">&lt;</span><span class="pln">http</span><span class="pun">:</span><span class="com">//www.gnu.org/philosophy/why-not-lgpl.html&gt;.</span></pre>

<p>
	إذا أردت أن يعيد الأمر <code>grep</code> جميع الأسطر التي لا تحتوي تطابقًا مع النمط الذي أدخلته، استخدم الخيار <code>invert-match--</code>:
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_62_11" style="">
<span class="pln">$ grep </span><span class="pun">--</span><span class="pln">invert</span><span class="pun">-</span><span class="pln">match \
</span><span class="pun">--</span><span class="pln">ignore</span><span class="pun">-</span><span class="kwd">case</span><span class="pln"> gnu gpl</span><span class="pun">-</span><span class="lit">3.0</span><span class="pun">.</span><span class="pln">txt
                      </span><span class="typ">Version</span><span class="pln"> </span><span class="lit">3</span><span class="pun">,</span><span class="pln"> </span><span class="lit">29</span><span class="pln"> </span><span class="typ">June</span><span class="pln"> </span><span class="lit">2007</span><span class="pln">

 </span><span class="typ">Copyright</span><span class="pln"> </span><span class="pun">(</span><span class="pln">C</span><span class="pun">)</span><span class="pln"> </span><span class="lit">2007</span><span class="pln"> </span><span class="typ">Free</span><span class="pln"> </span><span class="typ">Software</span><span class="pln"> </span><span class="typ">Foundation</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Inc</span><span class="pun">.</span><span class="pln"> </span><span class="pun">&lt;</span><span class="pln">http</span><span class="pun">:</span><span class="com">//fsf.org/&gt;</span><span class="pln">
</span><span class="pun">[...</span><span class="lit">648</span><span class="pln"> lines</span><span class="pun">...]</span><span class="pln">
</span><span class="typ">Public</span><span class="pln"> </span><span class="typ">License</span><span class="pln"> instead of </span><span class="kwd">this</span><span class="pln"> </span><span class="typ">License</span><span class="pun">.</span><span class="pln">  </span><span class="typ">But</span><span class="pln"> first</span><span class="pun">,</span><span class="pln"> please read</span></pre>

<h2>
	الأنابيب Pipes
</h2>

<p>
	من المفيد أن تستطيع إيجاد نص تبحث عنه ضمن ملف، لكن تكمن القوة الحقيقة للبرامج المتوافقة مع معايير POSIX في قدرتها على ربط الأوامر معًا من خلال "الأنابيب pipes". فقد وجدت أن أفضل وسيلة لاستخدام الأمر grep تكون عند جمعه مع أدوات أخرى مثل cut أو tr أو <a href="https://opensource.com/downloads/curl-command-cheat-sheet" rel="external nofollow">curl</a>.
</p>

<p>
	فمثلًا، لنفترض أنه لدي ملف يعرض بعض الأوراق الفنية التي أريد تنزيلها. يمكنني فتح الملف والضغط يدويًا على كل رابط، ثم تحديد موقع حفظ كل ملف ليكون على قرص الصلب الخاص بي من خيارات متصفح فايرفوكس Firefox، لكن هذا سيستغرق وقتًا طويلًا وجهدًا كبيرًا. أو يمكنني استخدام الأمر grep للبحث عن الروابط ضمن الملف، وطباعة سلسلة المحارف المطابقة <em>فقط</em> من خلال استخدام خيار <code>only-matching--</code>:
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_62_13" style="">
<span class="pln">$ grep </span><span class="pun">--</span><span class="pln">only</span><span class="pun">-</span><span class="pln">matching http\:\/\/</span><span class="pun">.*</span><span class="pln">pdf example</span><span class="pun">.</span><span class="pln">html
http</span><span class="pun">:</span><span class="com">//example.com/linux_whitepaper.pdf</span><span class="pln">
http</span><span class="pun">:</span><span class="com">//example.com/bsd_whitepaper.pdf</span><span class="pln">
http</span><span class="pun">:</span><span class="com">//example.com/important_security_topic.pdf</span></pre>

<p>
	سيكون الخرج عبارةً عن قائمة روابط، يعرَض كل رابط منها على سطر. هذا يوافق طريقة معالجة <a href="https://wiki.hsoub.com/Bash" rel="external">باش Bash</a> للبيانات. وبدلًا من أن تطبَع الروابط على <a href="https://academy.hsoub.com/devops/linux/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%B7%D8%B1%D9%81%D9%8A%D9%91%D8%A9-%D9%84%D9%8A%D9%86%D9%83%D8%B3-linux-terminal-r18/" rel="">الطرفية</a> يمكنني إضافة أنبوب لهم ليكونوا مباشرةً دخلًا للأمر <code>curl</code>:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_62_15" style="">
<span class="pln">$ grep </span><span class="pun">--</span><span class="pln">only</span><span class="pun">-</span><span class="pln">matching http\:\/\/</span><span class="pun">.*</span><span class="pln">pdf \
example</span><span class="pun">.</span><span class="pln">html </span><span class="pun">|</span><span class="pln"> curl </span><span class="pun">--</span><span class="pln">remote</span><span class="pun">-</span><span class="pln">name</span></pre>

<p>
	ستكون النتجة أنه سيحمَّل كل ملف ويحفَظه بنفس اسم الملف المنزَّل على القرص الصلب.
</p>

<p>
	قد يبدو النمط الذي أدخلته للبحث مشفرًا، هذا لأنني استخدمت التعبيرات النمطية regular expression، وهي نوع من لغة "محارف البدل" wildcard التي تبرز فائدتها عند البحث الواسع بين كم كبير من النصوص.
</p>

<h2>
	التعبيرات النمطية
</h2>

<p>
	يعلم الجميع مدى صعوبة التعبيرات النمطية regular expression (التي تسمى اختصارًا regex)، لكنها ليست بالصعوبة التي يشاع عنها أيضًا. صحيح أن بعض الأشخاص قد يبالغون في تعقيد كتابة التعبيرات النمطية لدرجة تصبح فيها غير مقروءة، ويوسعونها لدرجة تضعِف فاعليتها، لكن ليس عليك أن تبالغ في كتابة تعبيرك النمطي. سأستعرض لك تعريفًا موجزًا عن التعبيرات النمطية حسب أسلوبي في استخدامها.
</p>

<p>
	ابدأ بإنشاء ملف وسمّه <code>example.txt</code> وأدخل المحتوى النصي التالي فيه:
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_62_17" style="">
<span class="typ">Albania</span><span class="pln">
</span><span class="typ">Algeria</span><span class="pln">
</span><span class="typ">Canada</span><span class="pln">
</span><span class="lit">0</span><span class="pln">
</span><span class="lit">1</span><span class="pln">
</span><span class="lit">3</span><span class="pln">
</span><span class="lit">11</span></pre>

<p>
	أبسط عنصر في التعبيرات النمطية هو محرف <code>.</code>، الذي يمثل محرفًا واحدًا.
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_62_19" style="">
<span class="pln">$ grep </span><span class="typ">Can</span><span class="pun">.</span><span class="pln">da example</span><span class="pun">.</span><span class="pln">txt
</span><span class="typ">Canada</span></pre>

<p>
	استطعنا باستخدام النمط <code>Can.da</code> الحصول على كلمة <code>Canada</code> لأن المحرف <code>.</code> يمثل أي محرف <em>واحد</em> فقط.
</p>

<p>
	تمكنك الرموز التالية من تعديل محرف البدل <code>.</code> ليمثل أكثر من محرف واحد فقط.
</p>

<ul>
<li>
		<code>?</code> : لا تطابق العنصر الذي يسبقها ولا مرة، أو تطابقه مرةً واحدةً فقط.
	</li>
	<li>
		<code>*</code> : لا تطابق العنصر الذي يسبقها ولا مرة، أو تطابقه عدة مرات.
	</li>
	<li>
		<code>+</code> : تطابق العنصر الذي يسبقها مرةً واحدةً أو أكثر
	</li>
	<li>
		<code>{4}</code> : تطابق العنصر الذي يسبقها 4 مرات (يكون عدد المرات حسب الرقم الذي تدخله ضمن القوسين).
	</li>
</ul>
<p>
	تسلح بهذه المعرفة وابدأ التدرب على ملف <code>example.txt</code> ولنرى التركيبات التي ستبتكرها. ستصيب في بعضها وستخطئ في الآخر، لكن ما يهم فعلًا هو أن تحلل النتائج التي تحصل عليها لتفهم سبب الإصابة أو الخطأ.
</p>

<p>
	لتستخدم التعبيرات النمطية المتقدمة عليك إضافة الخيار <code>extended-regexp--</code> أو <code>E-</code>.
</p>

<p>
	مثلًا، لن يعيد إليك الأمر التالي اسم أية مدينة:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_62_21" style="">
<span class="pln">$ grep </span><span class="pun">-</span><span class="pln">E A</span><span class="pun">.</span><span class="pln">a example</span><span class="pun">.</span><span class="pln">txt</span></pre>

<p>
	أخفقت لأن المحرف <code>.</code> لا يطابق إلا حرفًا واحدًا فقط إذا لم ترقّيه. تستطيع فعل ذلك باستخدام المحرف <code>*</code> مثلًا، إذ أنك تملي عند ذلك على الأمر <code>grep</code> أن لا يطابق حرفًا واحدًا أبدًا أو يطابقه عدة مرات حتى يصل إلى نهاية الكلمة. ولمعرفتك بمحتوى القائمة التي تجرب الأمر عليها تعلم أنه في مثالك هذا لا توجد حالة لن يطابق فيها الحرف الوحيد الذي يسبقه ولا مرة حتى، لأنه لا يوجد اسم أية دولة يتألف من 3 أحرف فقط في هذه القائمة. لذا يستحسن أن تستخدم <code>+</code> ليطابق حرفًا واحدًا على الأقل أو يطابقه عدة مرات حتى يصل إلى نهاية الكلمة:
</p>

<pre class="ipsCode prettyprint lang-ruby prettyprinted" id="ips_uid_62_23" style="">
<span class="pln">$ grep </span><span class="pun">-</span><span class="pln">E A</span><span class="pun">.+</span><span class="pln">a example</span><span class="pun">.</span><span class="pln">txt
</span><span class="typ">Albania</span><span class="pln">
</span><span class="typ">Algeria</span></pre>

<p>
	إذا أردت أن تدخل سلسلة أحرف استخدم الأقواس المعقوفة:
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_62_25" style="">
<span class="pln">$ grep </span><span class="pun">-</span><span class="pln">E </span><span class="pun">[</span><span class="pln">AC</span><span class="pun">].+</span><span class="pln">a example</span><span class="pun">.</span><span class="pln">txt
</span><span class="typ">Albania</span><span class="pln">
</span><span class="typ">Algeria</span><span class="pln">
</span><span class="typ">Canada</span></pre>

<p>
	يفيد هذا في حال كنت تبحث عن أرقام أيضًا، ستفاجئك النتائج التي سترد كالمثال التالي:
</p>

<pre class="ipsCode">
$ grep [1-9] example.txt
1
3
11
</pre>

<p>
	هل فاجأتك رؤية الرقم 11 في بحثك عن الأرقام من 1 إلى 9؟ مالذي سيحدث عندما تضيف الرقم 13 إلى القائمة؟ هل ستظهر في النتيجة أيضًا؟
</p>

<p>
	ظهرت هذه الأرقام لأنها تحتوي على الرقم 1، وهو ضمن قائمة الأرقام التي حددتها.
</p>

<p>
	وكما ترى، إن التعبيرات النمطية كالأحجية، لكن من خلال التجربة والتمرين ستألَف استخدامها في بحثك في البيانات باستخدام الأمر grep.
</p>

<p>
	ترجمة -وبتصرف- للمقال <a href="https://opensource.com/article/21/3/grep-cheat-sheet" rel="external nofollow">How to use the Linux grep command</a> لصاحبه Seth Kenlon.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
<li>
		<a href="https://academy.hsoub.com/programming/general/%D8%B9%D9%84%D9%88%D9%85-%D8%A7%D9%84%D8%AD%D8%A7%D8%B3%D9%88%D8%A8/" rel="">المدخل الشامل لتعلم علوم الحاسوب</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/linux/%D9%85%D8%A7-%D8%A7%D9%84%D9%81%D8%B1%D9%88%D9%82-%D8%A8%D9%8A%D9%86-%D8%A7%D9%84%D8%A3%D9%88%D8%A7%D9%85%D8%B1-grep-%D9%88egrep-fgrep-r320/" rel="">ما الفروق بين الأوامر grep وegrep fgrep</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/linux/%d8%a5%d8%af%d8%a7%d8%b1%d8%a9-%d8%a7%d9%84%d8%b9%d9%85%d9%84%d9%8a%d8%a7%d8%aa-process-%d9%81%d9%8a-%d9%84%d9%8a%d9%86%d9%83%d8%b3-%d8%a8%d8%a7%d8%b3%d8%aa%d8%ae%d8%af%d8%a7%d9%85-%d8%a7%d9%84%d8%b7%d8%b1%d9%81%d9%8a%d8%a9-r70/" rel="">إدارة العمليات (Process) في لينكس باستخدام الطرفية</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/linux/%D9%85%D9%82%D8%AF%D9%85%D8%A9-%D8%A5%D9%84%D9%89-%D8%A3%D8%B0%D9%88%D9%86%D8%A7%D8%AA-%D9%84%D9%8A%D9%86%D9%83%D8%B3-linux-permissions-r25/" rel="">مقدمة إلى أذونات لينكس Linux Permissions</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/linux/%D8%A7%D8%AD%D8%AA%D8%B1%D9%81-%D8%A7%D9%84%D8%A3%D9%85%D8%B1-ls-%D9%81%D9%8A-%D9%84%D9%8A%D9%86%D9%83%D8%B3-r558/" rel="">احترف الأمر ls في لينكس</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">566</guid><pubDate>Sun, 26 Dec 2021 17:04:00 +0000</pubDate></item></channel></rss>
