

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>وثائق لينوكس العربية &#187; deb</title>
	<atom:link href="http://www.linuxdocs-ar.com/html/tag/deb/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.linuxdocs-ar.com/html</link>
	<description>أكبر موقع وثائق عربي مختص باللينوكس</description>
	<lastBuildDate>Thu, 03 Jun 2010 11:57:41 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>ar</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>طريقة انشاء حزمة ديبيان (الجزء الأول)</title>
		<link>http://www.linuxdocs-ar.com/html/2008/09/%d8%b7%d8%b1%d9%8a%d9%82%d8%a9-%d8%a7%d9%86%d8%b4%d8%a7%d8%a1-%d8%ad%d8%b2%d9%85%d8%a9-%d8%af%d9%8a%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/</link>
		<comments>http://www.linuxdocs-ar.com/html/2008/09/%d8%b7%d8%b1%d9%8a%d9%82%d8%a9-%d8%a7%d9%86%d8%b4%d8%a7%d8%a1-%d8%ad%d8%b2%d9%85%d8%a9-%d8%af%d9%8a%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/#comments</comments>
		<pubDate>Fri, 12 Sep 2008 18:16:26 +0000</pubDate>
		<dc:creator>مسلم عادل</dc:creator>
				<category><![CDATA[منوعات لينوكس]]></category>
		<category><![CDATA[ar]]></category>
		<category><![CDATA[deb]]></category>
		<category><![CDATA[dpkg-buildpackage]]></category>
		<category><![CDATA[dpkg-deb]]></category>
		<category><![CDATA[package]]></category>

		<guid isPermaLink="false">http://www.linuxdocs-ar.com/html/?p=225</guid>
		<description><![CDATA[يوجد عدة طرق لانشاء حزمة (package) خاصة بتوزيعة ديبيان او احد ابنائه، وبسبب تعدد الطرق، قررت أن أقسم هذا الموضوع الى جزئين، الأول هو انشاء حزمة ديبيان بطريقة بسيطة سهلة بدون الحاجة الى المعرفة في كيفية بناء البرامج من مصادرها وكيفية تحديد المستلزمات الخ&#8230;. والجزء الثاني سيحتوي على الشرح التفصيلي لبناء حزمة ديبيان بطريقة محترفة [...]]]></description>
			<content:encoded><![CDATA[<p>يوجد عدة طرق لانشاء حزمة (package) خاصة بتوزيعة ديبيان او احد ابنائه، وبسبب تعدد الطرق، قررت أن أقسم هذا الموضوع الى جزئين، الأول هو انشاء حزمة ديبيان بطريقة بسيطة سهلة بدون الحاجة الى المعرفة في كيفية بناء البرامج من مصادرها وكيفية تحديد المستلزمات الخ&#8230;. والجزء الثاني سيحتوي على الشرح التفصيلي لبناء حزمة ديبيان بطريقة محترفة كما يفعلها الـ Maintainers</p>
<p><span id="more-225"></span></p>
<p>قبل أن تبدأ بالقراءة، أريد أن انبهك الى ملاحظة مهمة وهي:</p>
<p>طريقة انشاء الحزمة المتبعة في هذا الجزء طريقة غير رسمية وغير محترفة بالمرة، لذا لا تفكر حتى بأن تنشيء حزمة باستخدام هذه الطريقة وترسلها الى أحد مطوري ديبيان أو أوبونتو لانهم سيرمون الحزمة في وجهك (وانا كمان راح ارميها في وجهك اذا ارسلتي حزمة مبنية بهذه الطريقة <img src='http://www.linuxdocs-ar.com/html/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  )</p>
<p>هذه الطريقة مذكورة فقط للاشخاص المبتدئين في لينوكس لانها طريقة سهلة، كما أنها تسهل عليهم تناقل البرامج بين بعضهم البعض.</p>
<h4>ما هي حزمة ديبيان؟</h4>
<p>حزمة ديبيان عبارة عن <strong>ملف مضغوط</strong> باستخدام برنامج اسمه ar.<br />
لو احضرت اي حزمة ديبيان ونفذت الامر (ساستخدم حزمة ufw_0.16.2.3_all.deb كمثال):</p>
<div dir="ltr" align="left"><code>arabian@laptop:~$ ar -x ufw_0.16.2.3_all.deb</code></div>
<p> سينتج ظهور 3 ملفات هي: control.tar.gz و data.tar.gz و debian-binary</p>
<ul>
<li><strong>debian-binary</strong> يحتوي على اصدار debhelper الذي استخدم وقت بناء الحزمة وهو لا يهمنا.</li>
<li><strong>control.tar.gz</strong> يتحكم في الحزمة كان يحدد اسم الحزمة والمستلزمات واذا كان يجب تنفيذ شيء معين قبل تركيب الحزمة او بعد التركيب او عند ازالة الحزمة او قبل ازالتها.</li>
<li><strong>data.tar.gz</strong> ويحتوي هذا الملف على البرنامج المراد تركيبه </li>
</ul>
<p>احدى الطرق الغير رسمية لانشاء حزمة ديبيان هي عبر انشاء الارشيفات الثلاثة السابقة الذكر واعادة ضغطها من جديد باستخدام ar. ولكن لن نتبع هذه الطريقة لانك في الحقيقة تقوم بانشاء الارشيف 4 مرات !! وفي حال احببت التعديل سيكون عليك فك ضغط كل شيء من جديد والتعديل (من الاخر، قصة طويلة عريضة مملة)</p>
<p>لهذا السبب ساستخدم طريقة ثانية في انشاء الحزمة (وهي أيضا غير رسمية).</p>
<p>سافترض اني مبرمج عظيم وقمت بعمل برنامج روعة اسمه helloworld! واريد توزيع البرنامج على الناس بصورة حزمة وليس بالكود المصدري.<br />
لذا قبل أن ابدا بعمل الحزمة علي ان اعرف أين سيتم تثبيت البرنامج helloworld، وهل للبرنامج اضافات؟ (مثل ملفات مساعدة، ملفات اعداد، الخ&#8230;). </p>
<p>اذا لنلقي نظرة على البرنامج العظيم helloworld!</p>
<p><strong>helloworld.conf</strong> عبارة عن ملف يحتوي على اعدادات البرنامج<br />
<strong>helloworld.sh</strong> عبارة عن البرنامج العظيم نفسه (الذي يطبع hello world <img src='http://www.linuxdocs-ar.com/html/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  )<br />
<strong>helloworld.5</strong> عبارة عن ملف المساعدة (man page) الخاصة بالبرنامج.<br />
<strong>readme.txt</strong> عبارة عن ملف مساعدة عادي.</p>
<p>لمن يعرف كيف يعمل نظام ملفات اللينوكس (filesystem hierarchy) سيكون بامكانه اخباري عن اماكن هذه الملفات مباشرة، ومن لا يعرف، انصحه ان يترك هذا المقال الان وان يذهب ويقرا هذا الشيء لانه من الاساسيات ولن تستطيع المضي قدما في نظام التشغيل لينوكس اذا لم تكن تعرف ابسط شيء فيه.</p>
<p>على العموم وحتى ازيل الشك ممن دخل في نفسه الشك ساقول (امري لله ايش اعمل):</p>
<p>الملف helloworld.conf سيذهب الى <span dir="ltr"><strong>/etc</strong></span> لانه عبارة عن ملف اعداد.<br />
الملف helloworld.sh سيذهب الى <span dir="ltr"><strong>/usr/bin</strong></span> لانه عبارة عن برنامج خاص بالمستخدم العادي وليس برنامج لادارة النظام.<br />
اما الملف helloworld.5 فسيذهب الى <span dir="ltr"><strong>/usr/share/man/man5</strong></span> لأنه المكان الصحيح لهذا الملف المساعد.<br />
واما الملف الاخير readme.txt  فسيذهب الى مجلد التوثيق وهو <span dir="ltr"><strong>/usr/share/doc</strong></span></p>
<p>اذا بناء على هذه المعلومات نبدا العمل في انشاء الحزمة. قم بانشاء مجلد للعمل اسمه deb-devel (نفذ الاوامر القادمة)</p>
<div dir="ltr" align="left"><code>arabian@laptop:~$ mkdir deb-devel<br />
arabian@laptop:~$ cd deb-devel<br />
arabian@laptop:~/deb-devel$ mkdir -p {DEBIAN,etc,usr/{bin,share/{doc,man/man5}}}</code></div>
<p class="note">
اعرف ان البعض سيسال عن هذا الامر العجيب <span dir="ltr">mkdir -p {DEBIAN,etc,usr/{bin,share/{doc,man/man5}}}</span><br />
الأمر mkdir اعتقد انه معروف للجميع، ولكني قمت باستخدامه بطريقة مختلفة قليلا حتى انشيء كل المجلدات مرة واحدة بدل ان اضطر كتابتها مرات عديدة، والامر السابق يكافيء:<br />
mkdir DEBIAN<br />
mkdir etc<br />
mkdir usr<br />
cd usr<br />
mkdir bin<br />
mkdir share<br />
cd share<br />
mkdir doc<br />
mkdir man<br />
cd man<br />
mkdir man5<br />
انظروا كم مرة كنت ساضطر ان اكرر الامر لو لم استخدمه بالطريقة السابقة.
</p>
<p>الان تأكد ان البناء هو كما في الصورة ادناه:</p>
<p><img src="http://www.linuxdocs-ar.com/images/deb-dir-structure-01.png" alt="deb-package-structure" /></p>
<p>وقم بتوزيع ملفات البرنامج helloworld داخله كما ذكرت في السابق.<br />
طريقة تركيب الملفات الان انتهت، بقي علينا فقط تحديد بعض المعلومات الخاصة بالحزمة نفسها.</p>
<p>كما لاحظتم، قمت بانشاء مجلد اضافي اسمه DEBIAN وحاليا هو فارغ ولا يحتوي على شيء.<br />
هذا المجلد هو خاص بمعلومات الحزمة نفسها، وليس له علاقة مباشرة بالبرنامج helloworld.</p>
<p>ادخل الى المجلد DEBIAN وانشيء داخله ملف باسم control وضع فيه الاتي:</p>
<div dir="ltr" align="left">
<blockquote>
Package: helloworld<br />
Version: 0.0.0.0.1<br />
Architecture: all<br />
Maintainer: Muslim Adel <muslim.adel@gmail.com><br />
Installed-Size: 204<br />
Depends: bash<br />
Section: admin<br />
Priority: optional<br />
Homepage: http://www.linuxdocs-ar.com<br />
Description: print hello world<br />
&nbsp;Helloworld is a great program that prints a beautiful<br />
&nbsp;message in your screen. This message is &#8220;Hello World!&#8221;
</p></blockquote>
</div>
<p>الشرح:</p>
<p><strong>Package</strong> هو اسم الحزمة نفسها وليس اسم البرنامج الموجود بداخل الحزمة، فبعض الحزم تحتوي على مجموعة برامج.<br />
<strong>Version</strong> هو رقم اصدار الحزمة والبرنامج<br />
<strong>Architecture</strong> هي المنصة التي سيعمل عليه البرنامج، في هذه الحالة على كل المنصات ولكن اذا كان برنامج محدد باجهزة من نوع i386 استبدله<br />
<strong>Maintainer</strong> الشخص المسؤول عن الحزمة<br />
<strong>Installed-Size</strong> حجز ملفات الحزمة بعد تثبيتها، يمكنك استخدام الامر du لمعرفة حجم ملفاتك<br />
<strong>Depends</strong> الحزم التي يعتمد عليها برنامجك، بما ان برنامجنا عبارة عن شل سكريبت بالتاكيد سيعتمد على وجود bash<br />
<strong>Description</strong> وصف الحزمة وهذا مكون من جزئين اساسيين.<br />
الجزء الاول وهو السطر الاول، يجب ان يكون قصير وعند انتهائه يجب وضع سطر جديد.<br />
الجزء الثاني وهو السطر الذي يلي الاول يجب ان يبدا بمسافة وليس من اول السطر مباشرة.</p>
<p>انتهينا الان من انتهاء كل شيء، بقي انشاء الحزمة.</p>
<div dir="ltr" align="left"><code>arabian@laptop:~$ dpkg-deb -b deb-devel helloworld_0.0.0.0.1-1_all.deb<br />
dpkg-deb: building package `helloworld' in `helloworld_0.0.0.0.1-1_all.deb' . </code></div>
<p>قد تظهر بعض التحذيرات اثناء انشاء الحزمة ولكن لا تلقي لها بال الان.<br />
ايضا تعمدت ترك بعض الامور غير مشروحة مثل القسم Priority و Section وايضا لماذا اضفت <span dir="ltr">-1_all</span> عند انشاء الحزمة.<br />
هذه الامور كلها ستشرح في الجزء الثاني من هذا الموضوع ان شاء الله.</p>
<p>اذا اردت تركيب الحزمة الجديدة نفذ:</p>
<div dir="ltr" align="left"><code>root@laptop:~# dpkg -i helloworld_0.0.0.0.1-1_all.deb<br />
(Reading database ... 177483 files and directories currently installed.)<br />
Preparing to replace helloworld 0.0.0.1 (using helloworld_0.0.0.0.1-1_all.deb) ...<br />
Unpacking replacement helloworld ...<br />
Setting up helloworld (0.0.0.1) ...<br />
</code></div>
<p>ولتشاهد بناء الملفات في الجديدة بعد تركيبها نفذ:</p>
<div dir="ltr" align="left"><code>root@laptop:~# dpkg -L helloworld<br />
/.<br />
/etc<br />
/etc/heloworld.conf<br />
/usr<br />
/usr/share<br />
/usr/share/doc<br />
/usr/share/doc/readme.txt<br />
/usr/share/man<br />
/usr/share/man/man5<br />
/usr/share/man/man5/helloworld.5.gz<br />
/usr/bin<br />
/usr/bin/helloworld.sh<br />
</code></div>
<p>في النهاية اترككم مع رابط للمجلد deb-devel لتحميله وتجربة انشاء حزمة عليه.<br />
<a href="http://www.linuxdocs-ar.com/scripts/deb-devel.tar.gz">deb-devel.tar.gz</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.linuxdocs-ar.com/html/2008/09/%d8%b7%d8%b1%d9%8a%d9%82%d8%a9-%d8%a7%d9%86%d8%b4%d8%a7%d8%a1-%d8%ad%d8%b2%d9%85%d8%a9-%d8%af%d9%8a%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/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>مجلد يشفر كل ما بداخله</title>
		<link>http://www.linuxdocs-ar.com/html/2008/09/%d9%85%d8%ac%d9%84%d8%af-%d9%8a%d8%b4%d9%81%d8%b1-%d9%83%d9%84-%d9%85%d8%a7-%d8%a8%d8%af%d8%a7%d8%ae%d9%84%d9%87/</link>
		<comments>http://www.linuxdocs-ar.com/html/2008/09/%d9%85%d8%ac%d9%84%d8%af-%d9%8a%d8%b4%d9%81%d8%b1-%d9%83%d9%84-%d9%85%d8%a7-%d8%a8%d8%af%d8%a7%d8%ae%d9%84%d9%87/#comments</comments>
		<pubDate>Mon, 08 Sep 2008 18:28:27 +0000</pubDate>
		<dc:creator>مسلم عادل</dc:creator>
				<category><![CDATA[الأمن]]></category>
		<category><![CDATA[apt-get]]></category>
		<category><![CDATA[deb]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[encryption]]></category>
		<category><![CDATA[gpg]]></category>
		<category><![CDATA[تشفير]]></category>
		<category><![CDATA[حماية]]></category>
		<category><![CDATA[ديبيان]]></category>

		<guid isPermaLink="false">http://www.linuxdocs-ar.com/html/?p=42</guid>
		<description><![CDATA[في بعض الاحيان قد يحتاج احدنا الى تشفير بياناته لعدة اسباب لن اخوض فيها.
توجد عدة طرق لعمل هذا من ضمنها هو عمل ارشيف كامل مشفر بـ gpg ولكن هذه الطريقة اجدها غير عملية خاصة عندما تحتاج الى تشفير ملفات كثيرة وتريد الوصول اليها بسرعة وتشفيرها بسرعة.
لهذا السبب ساقوم بشرح طريقة اسهل بكثير وتوفر الكثير من [...]]]></description>
			<content:encoded><![CDATA[<p>في بعض الاحيان قد يحتاج احدنا الى تشفير بياناته لعدة اسباب لن اخوض فيها.<br />
توجد عدة طرق لعمل هذا من ضمنها هو عمل ارشيف كامل مشفر بـ gpg ولكن هذه الطريقة اجدها غير عملية خاصة عندما تحتاج الى تشفير ملفات كثيرة وتريد الوصول اليها بسرعة وتشفيرها بسرعة.<br />
لهذا السبب ساقوم بشرح طريقة اسهل بكثير وتوفر الكثير من العناء وهي عبر استخدام ecryptfs</p>
<p><span id="more-42"></span></p>
<p>اولا قم بتركيب الحزمة ecrytpfs-utils كالاتي (في ديبيان ومشتقاته)</p>
<div dir="ltr"><code>root@laptop:~# apt-get install ecryptfs-utils</code></div>
<p>بعد انتهاء التركيب قم بانشاء المجلد الذي سيحتوي على البيانات المشفرة وفي نفس الوقت احرص على تغيير صلاحياته حتى لا يصل اليه باقي مستخدمي النظام</p>
<div dir="ltr"><code>arabian@laptop:~$ mkdir ~/private-files; chmod 700 ~/private-files</code></div>
<p>الان لنقم بعمل mount له باستخدام نظام الملفات ecryptfs الذي سيعمل على تشفير البيانات:</p>
<div dir="ltr"><code>root@laptop:~# mount -t ecryptfs ~/private-files ~/private-files<br />
Select key type to use for newly created files:<br />
1) tspi<br />
2) passphrase<br />
3) pkcs11-helper<br />
4) openssl<br />
Selection: <strong><span style="color: blue;">2</span></strong><br />
Passphrase:<br />
Verify Passphrase:<br />
Select cipher:<br />
1) aes: blocksize = 16; min keysize = 16; max keysize = 32 (not loaded)<br />
2) blowfish: blocksize = 16; min keysize = 16; max keysize = 32 (not loaded)<br />
3) des3_ede: blocksize = 8; min keysize = 24; max keysize = 24 (not loaded)<br />
4) twofish: blocksize = 16; min keysize = 16; max keysize = 32 (not loaded)<br />
5) cast6: blocksize = 16; min keysize = 16; max keysize = 32 (not loaded)<br />
6) cast5: blocksize = 8; min keysize = 5; max keysize = 16 (not loaded)<br />
Selection [aes]: <strong><span style="color: blue;">1</span></strong><br />
Select key bytes:<br />
1) 16<br />
2) 32<br />
3) 24<br />
Selection [16]: <strong><span style="color: blue;">1</span></strong><br />
Enable plaintext passthrough (y/n): <strong><span style="color: blue;">n</span></strong><br />
Attempting to mount with the following options:<br />
ecryptfs_key_bytes=16<br />
ecryptfs_cipher=aes<br />
ecryptfs_sig=d3e6fd588866f8b7<br />
WARNING: Based on the contents of [/root/.ecryptfs/sig-cache.txt],<br />
it looks like you have never mounted with this key<br />
before. This could mean that you have typed your<br />
passphrase wrong.<br />
Would you like to proceed with the mount (yes/no)? <strong><span style="color: blue;">yes</span></strong><br />
Would you like to append sig [d3e6fd588866f8b7] to<br />
[/root/.ecryptfs/sig-cache.txt]<br />
in order to avoid this warning in the future (yes/no)? <strong><span style="color: blue;">yes</span></strong><br />
Successfully appended new sig to user sig cache file<br />
Mounted eCryptfs<br />
</code></div>
<p>الان قم بانشاء ونسخ الملفات اليه، بعد الانتهاء من نسخ الملفات، قم بعمل umount</p>
<div dir="ltr"><code>root@laptop:~# umount ~/private-files</code></div>
<p>الان ادخل الى المجلد وانظر الى الملفات، ماذا ستجد؟<br />
ستجد ان اسماء الملفات بقيت كما هي ولكن المحتوى اصبح غير مقروء.</p>
<p class="note"><strong>ملاحظة:</strong> عندما تريد ان ترى الملفات بالصيغة الاصلية مرة اخرى سيكون عليك تكرار الخطوة السابقة مع مراعاة اختيار نفس الخيارات التي اخترتها اول مرة والا لن تستطيع عمل mount للمجلد من جديد.<br />
يمكنك اختصار كل الاسئلة التي سيسالك ايها الامر باضافة الخيارات التالية بحيث يصبح الامر mount كالاتي:</p>
<div dir="ltr"><code>root@laptop:~# mount -t ecryptfs ~/private-files ~/private-files -o key=YOUR_PASSWORD_HERE,ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_passthrough=n</code></div>
]]></content:encoded>
			<wfw:commentRss>http://www.linuxdocs-ar.com/html/2008/09/%d9%85%d8%ac%d9%84%d8%af-%d9%8a%d8%b4%d9%81%d8%b1-%d9%83%d9%84-%d9%85%d8%a7-%d8%a8%d8%af%d8%a7%d8%ae%d9%84%d9%87/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

