3.5 تركيب الحزم المصدرية
الميّزة الرئيسية في البرمجيات الحرة هي توفّر الكود المصدري،
سنتعلم في هذا الفصل كيف نحولها إلى ملفات تنفيذية وكيف نركبها
بحيث تستطيع تشغيلها فقط بكتابة اسمها.
سنناقش كيفية الحصو عليها عبر CVS وكيفية تطبيق تعديلات تسمى الرقع patches.
اقتباس هذا الفصل:
- "الكلام رخيص. أرني الكود."
-- لينوس تورفلدز
محتويات هذا الفصل:
3.5.1 قبل البدء
إن الملفات المفات المصدرية التي أتحدث عنها هنا ليست حزم .src.rpm وإنما
هي ملفات مضغوطة مثل .tgz أو .tar.bz2
ضع هذه الملفات في المجلد البيت ثم فك ضغطها اما باستعمال برنامج رسمومي مناسب أو بالنقر بالزر الأيمن ثم extract
أو بطباعة الأوامر المناسبة
bash$ tar -xvzf filename.tar.gz
اذا كان الملف المضغوط من نوع tar.bz2 نستخدم
tar -xvjf filename.tar.bz2
سيظهر مجلد جديد ادخل إليه وابحث عن ملف INSTALL أوREADME أو ماشابه وألق نظرة عليه
من محرر النصوص المفضل لديك
أو من سطر الأوامر اكتبless INSTALL ثم اضغط q للخروج
bash$ cd filename
bash$ ls
INSTALL blah.c foobar.c make configure
bash$ less INSTALL
تحذير
تنزيل برنامج من الملف المصدري قد يشوش نظام ادارة الحزم في التوزيعة
خصوصا في مسألة الإعتمادية. لتفادي تشويش نظام الحزم
استعمل الحزم المصدرية المخصصة لنظام الحزم في توزيعتك
ثم تحولها إلى حزمة جاهزة من أمثلة تلك الحزم المدرية
ملفات '.src.rpm' في التوزيعات المعتمدة
على RPM (مثل ريدهات) أو ملفات ديبيان الثلاثة معاً
'.orig.tar.gz' و
'.diff.gz' و '.dsc'،
الحل الآخر هو نقل الملفات خارج تحكم نظام الحزم مثل
/usr/local (نتحكم بذلك من خلال prefix)
3.5.2 التصنيف Compiling
من هنا قد تختلف طريقة المتابعة بحسب البرنامج الذي تتعامل معه ولكن بشكل عام الخطوات هي
بطباعة الأوامر من المجلد الذي ظهر عندنا
bash$ ./configure
bash$ make
bash$ su
password:
bash# make install
bash# exit
bash$
السطر الأول يقوم بعمل إعدادات خاصة بالنظام الموجود لديك.
إذا فشلت هنا لا تتابع، وغالباً سبب الفشل هو عدم وجود
حزم التطوير وهي حزم تنتهي ب devel ؛ لحل المشكلة
استعمل أداة إدارة الحزم لإضافة مثل هذه لحزم فإذا كنت تعلم
أنه برنامج يحتاج gtk يجب أن تركّب gtk-devel (طبعاً هذا جزء من الاسم لأن هناك أرقام الإصدار تفصل بين الكلمتين )
السطر الثاني يقوم بتوليد البرنامج
ثم التحول إلى مستخدم جذر ثم تركيب البرنامج عادة بنقله إلى المجلدات المناسبة
، قد نمرر له بعض الإعدادات الخاصة بتغير المجلد الذي سينقل إليه أو نطلب اعداده
ليناسب معالج أكثر من آخر أو لحذف معلومات التدقيق debug
مثلا ./configure --prefix='/usr/X11R6'
لتغيير مكان تركيب البرنامج.
مثال آخر كيفية تركّب برنامج mlterm سطر الأوامر متعدد اللغات ،
قبل تركيب هذا البرنامج تحتاج إلى تركيب حزمة ثنائية الإتجاه fribidi
وحزمة التطوير الخاصة بها fribidi-devl من أقراص توزيعتك
أو من مواقع التنزيل الخاصة بها انظر الوصلات ثم نفذ:
bash$ ./configure --enable-fribidi && make
bash$ su
password:
bash# make install
bash# exit
bash$ mkdir ~/.mlterm
bash$ echo "ISO10646_UCS2_1 =\
20,-misc-fixed-medium-r-normal--20-200-75-75-c-100-arabeyes-1;" \
> ~/.mlterm/font
bash$ echo -e "ENCODING = utf8\nfontsize = 20" \
> ~/.mlterm/main
في حال حاولت تصنيف البرنامج أكثر من مرة وكنت تريد
اعادة المحاولة أو كنت تريد التأكد من ازلة كل ملفات
المحاولات السابقة والبدء من بيئة نظيفة يمكنك تنفيذ
make clean أو make mrproper
قبل كل شيء.
اذا كان البرنامج يعتمد على برامج معينة
يجب أن تكون موجودة من قبل نفذ
make dep
قبل make
واذا كان هناك أكثر من برنامج في هذه الحزمة وكنت تريد عمل واحد منها فقط
يمكنك عمل ذلك بكتابة make ثم اسمه.
عند الإنتهاء من كل شيء قد ترغب في حذف الملفات المؤقته
ذلك بتنفيذ
make clean
من الأمثلة على الخيارات التي يمكنك تمريرها
إلى make لتعديل بعض الخيارات هي make CC='gcc -s'
ليزيل معلومات التدقيق Debuging information حتى يصبح البرنامج أصغر
أو مثلا لعمل تحسين على أداء البرنامج optimization
make CC='gcc -s -O2 -fexpensive-optimizations -fomit-frame-pointer -mpentium'
الخيار O2 هو مستوى التحسين (يمكنك عمل حتى 6 ولكن 2 تنجح و 3 فما فوق غير مضمونة)
خيرات أخرى مثل foptimize-register-move و fregmove و frerun-loop-opt
وحتى ffast-math هذه الأخيرة من أجل القيام بحسابات الفاصلة العائمة(الكسور) بطريقة
أسرع ولكن تقريبية ودون تتبع الأخطاء
ولتحديد نوع المعالج يمكنك اضافة -march=TARGET
و -mcpu=TARGET
يقول الأستاذ عصام بيازيدي أن أفضل طريقة لتعديل الخيارات
تلك ليست من خلال CC بل من خلال XXCFLAGS (إن لم تخني الذاكرة) لكن كلا الطريقتين تعملان.
واذا كنت تريد تنزيله في غير المكان الإفتراضي
استخدم مثلا
make PREFIX='/usr/local' install
بدلا من make install
لينزل البرنامج في /usr/local بدلاً من /usr
(هذه الحيلة ربما تكون مفيدة إذا أردت الجمع بين wine و wineX-CVS)
3.5.3 الرقع patching
قد تحتاج بعض الحزم إلى رقع عن طريق برنامج patch قبل أن تركّب
ويكون ذلك عادة بتنفيذ
patch -Np1 -i /path/to/file.patch
أو patch -b -p0 < /path/to/file.patch
بحسب طريقة توليد ملف الرقعة patch بواسطة diff.
ويكون ذلك قبل ./configure
هذا مثال يوضح ذلك :
نزل الملف المصدري ل less
وهو
less-378.tar.gz
و الرقعة الخاصة بها وهي
less_composing.patch.tgz
وخزنهما في البيت ثم نفذ:
bash$ tar xvzf less-378.tar.gz
bash$ cd less-378
bash$ tar xvzf ../less_composing.patch.tgz
bash$ patch -b -p0 < less_composing.patch
bash$ ./configure
bash$ su
bash# make && make install
3.5.4 الحصول عليه من CVS
CVS هي اختصار ل Concurrent Versions System. كما تعلم
برامج لينكس هي برامج كتبها أكثر من شخص
ومعظمهم لم يلتقوا ولم يعموا في بيئة مادية واحدة
بل عبر الفضاء الافتراضي كما يحلو للإعلام أن يسميه.
يساعد هذا البرنامج مدير المشروع على إدارة الإصدارات المختلفة
والتعديلات التي يقوم بها كل مبرمج وذلك بسرعة وبمساحة صغيرة.
الحصول على CVS للمشروع يعطيك فرصة الحصول على أحدث نسخة.
باسم وفي دليلك البيت اكتب
export CVSROOT=":USER:PASSWORD@HOST/PROJ/DIR"
حيث USER و PASSWORD هي الاسم وكلمة السر التي يزودك بها
مدير المشروع و HOST هو العنوان و الباقي هو اسم الدليل. ثم اكتب
cvs login للدخول و
cvs checkout PROJ
لتنزيل المشروع حيث PROJ هو اسم المشروع. سيفتح الأمر
مجلد باسم المشروع ادخله بأمر cd متبوع باسم المجلد.
ستجد هناك الملفات المصدرية (مع مجلد زائد اسمه CVS إذا كنت لا تريد تطوير البرنامج احذفه)
ثم قم بالخطوات التقليدية لتصنيفه. هذا المثال
لطريقة تركيب glchess من المصدر عبر CVS
bash$ export CVS_RSH='ssh'
bash$ export CVSROOT=\
":pserver:anonymous@cvs.glchess.sourceforge.net:/cvsroot/glchess"
bash$ cvs login
bash$ cvs -z9 checkout glchess
bash$ cd glchess
bash$ ./configure
bash$ make
bash$ su
bash# make install
لاحظ تحديد CVS_RSH ليستعمل ssh وهي الطريقة المعتمدة في
sourceforge.net للوصول الآمن عن بعد، الخيار z لتحديد مستوى الضغط.
يمكنك المشاركة في تطوير المشاريع عبر CVS
فبعد الحصول على اسم دخول تستطيع تنزيل البرنامج ثم التعديل
فيه ثم ترفع ما عدلت إلى الشبكة
بواسطة cvs commit الخيار m لوضع تعليق
عن التغيير الذي قمنا به ثم اسم الملف مثلاً
bash$ cvs commit -m "More Comments Added to file1.c" file1.c
يجب استعمال الخيار kb مع الملفات غير النصية.
|