ديسمبر 07، 2010

كيفية تجميع و تحزيم فيرتول بوكس من المصدر على أبونتو

هناك ثلاثة طرق للحصول على الآلة الافتراضية على نظام غنو/لينوكس:
1. على شكل حزمة مجمعة مسبقا من طرف المشرفين على التوزيعة التي تستخدمها.
2. أن تثبتها من خلال مستودع المشروع بإتباعك للخطوات اللازمة حسب كل توزيعة.
3. أن تجمعها بنفسك من المصدر.

في الحالة الأولى و الثالثة ستستخدم الإصدار المفتوح المصدر. استخدمه، وزعه، عدله كما تريد حسب شروط رخصة جنو العمومية (GPL)
في الحالة الثانية ستستخدم الاصدار المرخص للاستعمال الشخصي (بشرط: لك وحدك و لا يحق لأكثر من شخص واحد أن يتصل بالنظام الوهمي في آن واحد) أو الاستعمال التعليمي أو لتقيم المنتج (لمدة زمنية محدودة تقدر ببضعة أسابيع)

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


الآن لنرى مع بعض كيف يمكن تجميع الآلة الافتراضية فيرتول بوكس و تحزيمها على أبونتو 10.04LTS أو 10.10.
فقط للتذكير، أبونتو تنحدر من توزيعة دبيان و هذا يعني أن نفس الطريقة غالبا ستعمل على دبيان أو على أية توزيعة تنحدر منهما (أبونتو و دبيان). لماذا غالبا و ليس قطعا؟ لأن دبيان المستقرة اصداراتها أبط من أبونتو و هذا ما يجعل إعدادات بعض المكتبات و أدواة التجميع المتوفرة عليها ربما مختلفة قليلا و قد تحتاج إلى خطوات إضافية.


الخطوات:

أولا، علينا أن نتأكد من أن خيار المستودعات المصدرية مفعل على برنامج Synaptics أو مدير الحزم. من على قائمة Settings (اعدادات) -> Repositories (مستودعات) تأكد أن كل الخيارات المشار إليها بالأسهم الحمر و البنفسجية مُعلمة. صور مُوضِحة:


ثم بعد ذلك نفذ الخطوات (1) و (2) و (3) الواحدة تلو الاخر لتحديث قاعدة بيانات الحزم، ثم تحديد الحزم التي سترقى ثم تثبيتها. كما في الصورة التالية:
 
مقابل هذه الخطوات من على سطر الأوامر هو:
sudo apt-get update && sudo apt-get upgrade

ملاحظة: هذه العملية -- تفعيل كل المستودعات -- أساسية لكي تحصل على كل ما توفره مستودعات أبونتو أو دبيان من حزم جاهزة. و عدد من القادمين الجدد لأبونتو يتوهون عندما يطلب منهم تثبيت بعض الحزم التي لا يجدونها بشكل افتراضي.


ثانيا، سنثبت الأدوات الضرورية لتجميع تقريبا أي برنامج من المصدر:
sudo apt-get install  build-essential  checkinstall  fakeroot  linux-headers-`uname -r` dkms

* حزمة build-essential ستثبت أدوات التجميع الأساسية
* حزمة checkinstall تحزم البرامج المُجمعة على صيغة deb. هذه الأداة ليست ضرورية لعملنا لكنها قد تصبح مفيدة في حالات أخرى.
* حزمة fakeroot يعتمد عليها لتمثيل دور مدير النظام. لأن التجميع عموما يحتاج إلى صلاحيات المدير و هو ما لا يفضل لتفادي أية مخاطر أمنية.
* حزمة linux-headers-`uname -r` توفر ملفات الرؤوس/العناوين المصدرية للنواة. عدد من البرامج التي تستعين بوحداة النواة (kernel modules) تحتاج إلى هذه الحزمة.
* حزمة dkms تؤدي دورا مهما وهو إعادة تجميع تلك الوحدات (وحدات النواة لفيرتول بوكس أو لغيرها) تلقائيا بعد كل تحديث للنواة. من دونها سنحتاج إلى التدخل اليدويا بعد كل تحديث للنواة و هذا مزعج.


ثالثا، الطريقة التي سنتبعها في تحزيم فيرتول بوكس تعتبر سهلة لسببين:
* سنستعين بالاعتمادات الضرورية لعمل ف.ب (فيرتول بوكس من الآن فصاعدا) كما حزمها مطوروا أبونتوا. لو لم نفعل كذلك، لا كان من الضروري أن نثبت كل الاعتمادات يدويا حسب إرشادات مطوري ف.ب أو بطرق أخرى مضنية.
* سنستعين بطريقة معتمد في التحزيم لدبيان و ذلك لأن مطوري ف.ب وفروها داخل ملف الحزمة المصدرية. لو لم تكن متوفرة لكان علينا إما إنشائها يدويا (متعبة قليلا نظرا لحجم ف.ب) أو الاستعانة بأداة checkinstall التي قلت عنها سابقا أنها ليست ضرورية لحالتنا.

الآن إذهب إلى صفحة تحميل ف.ب و حمل الملف المصدري (Open Source Edition (OSE) Source code) : VirtualBox-3.2.12-OSE.tar.bz2

في الوقت الذي يتم فيه التحميل سنكمل الخطوات الأخري من على سطر الأوامر.
sudo apt-get build-dep  virtualbox-ose  virtualbox-ose-dkms  virtualbox-ose-qt

build-dep في السطر أعلاه تعمل على تثبيت كل إعتمادات ف.ب كما حددها المشرفون على توزيعة أبونتو و بذلك تريحنا من تلك العملية اليدوية المضنية.

ثم حزمتي wine (مشغل برامج وندوز على لينوكس) و openjdk-6-jre (الجافا الحرة) ادا لم تمانع؛ و إلا فعليك أن تضيف معيار -d لتجاهلهما لاحقا.
sudo apt-get install openjdk-6-jre wine


رابعا، بعد أن ينتهي تحميل الملف المصدري لف.ب و تهيئة و تثبيت الإعتمادات سنبدأ في عملية التحزم.

من على المكان الذي وضعت فيه الملف المصدري (مثلا مجلد Downloads) نفد ما يلي من على سطر الأوامر.
tar -xvjf VirtualBox-3.2.12-OSE.tar.bz2
cd VirtualBox-3.2.12_OSE
./configure
source ./env.sh
dpkg-buildpackage -rfakeroot -us -uc

السطر الأول يستخرج الملفات المضغوطة و سيضعها في مجلد VirtualBox-3.2.12_OSE (الإسم سيتغير حسب الإصدار)
السطر الثاني ندخل فيه على المجلد الذي يحتوي على الملفات المصدرية.
السطر الثالث للتهية. إنتبه إلى مخرجاته، قد يفشل موضحا سبب ذلك.
الرابع لتهيئة بيئة التجميع.
الخامس لتجميع و تحزيم ف.ب . هنا تحتاج إلى اضافة  -d كمعيار إلى آخر السطر إذا أردت تجهال إحتياجات/إعتمادات wine و openjdk-6-jre

هذا كل شيء، ستنتظر بضعة دقائق بحكم أن ف.ب من البرامج الكبيرة (على جهازي ثنائي النواة بسرعة 2.6Ghz استغرقت عملية التجميع من المصدر و التحزيم 14 دقيقة). بعدها ستجد ملفاتك المحزمة على مجلد الأول حسب مثالنا Downloads).


توضيحات إضافية:
كما دكرت سابقا، أداة dpkg-buildpackage ستعمل لأن مطوري ف.ب سبق و أن جهزوا الكود المصدري للتحزيم على توزيعة دبيان و تلك التي تنحدر منها مثل أبونتو، و الدليل هو وجود مجلد باسم debian به ملفات التحزيم.

لو لم يكن ذلك المجلد متوفرا لحتجنا إلى خطوات إضافية للتجميع مثل (بشكل عام)
make
أو إلى (تحديدا ف.ب كما أشير إلى ذلك في تعليمات التجميع و البناء)
kmk all
ثم خطوة أخرى للتحزيم باستعمال checkinstall . مثال:
checkinstall -D --install=no --pkgname virtualbox-ose --pkgversion 3.2.12 \
--maintainer "You YourEmail@Server" --pkggroup "Miscellaneous - Text Based" \
--pakdir=debs/ --conflicts=virtualbox"


لتثبيت الحزمة المجمعة (virtualbox-ose_3.2.12_i386.deb مثلا) يكفي النقر عليها مرتين أو من على سطر الأوامر بـ:
dpkg -i virtualbox-ose_3.2.12_i386.deb


أيضا لمن أراد تحميل حزمة جاهزة من تجميعي فقد وفرت واحدة لأبونتو 10.04 بمعمارية 32بت و أخرى
لأبونتو 10.10 بمعمارية 32بت أيضا.


تحديث: حسب هذا الخبر فإنه بدءا من الإصدار الرابع لفرتول بوكس سيتم توفير إصدار واحد يشمل الحزمة المصدرية و الثنائية برخصة GPL، لذلك لن يكون من الضروري تجميع ف.ب من المصدر من طرف المستخدمين أو توزيعات غنو/لينوكس.

ليست هناك تعليقات:

إرسال تعليق