البحث في الموقع
المحتوى عن 'make'.
-
عندما تعمل على أنظمة غنو لينكس Gnu Linux فإن جميع البرامج والحزم التي تحتاجها ستجدها في المستودعات الرسميّة لتوزيعتك من خلال مدير الحزم، أو في مستودعات إضافيّة يقدمها المجتمع، لكنك قد تصادف في وقتٍ ما حاجتك إلى حزمة غير متوفرة في المستودعات بشكلها الثنائي الجاهز Binary package، أو أنك ترغب في الحصول على أحدث نسخة من برنامج ما فور صدوره، دون انتظار وصوله إلى المستودعات. في مثل هذه الحالات ستلزمك مهارة بناء وتثبيت الحزم من المصدر، وهي موضوع حديثنا في هذا الدرس، حيث سنعمل معًا على بناء تطبيق curl ابتداء من شِفرته المصدرية، وبالطبع فإن الأساسيات المستخدمة في هذا المثال تصلح أيضًا لمعظم الحالات الأخرى. المتطلباتتتضمن عملية البناء من المصدر تحويل شيفرة البرنامج إلى حزمة ثنائية، يمكن تركيبها باستخدام مدير الحزم في توزيعتك لنحصل على التطبيق بصيغة تنفيذيّة، تُسمى هذه العملية بالترجمة Compiling، وتعني ترجمة الشيفرة المصدرية إلى لغة الآلة. في البداية نحن نحتاج إلى مجموعة من الأدوات والحزم اللازمة في أي عملية بناء، والتي تُسمى بـ "build-essential" في دبيان والأنظمة المبنية عليها، بينما يُطلق عليها اسم "Development Tools" في RedHat و CentOS، والتي تتضمن مترجمات ++gcc/g ومكتبات أخرى ضرورية، لتركيب هذه الحزمة في دبيان و Ubuntu نفّذ الأمر التالي في الطرفيّة: apt-get install build-essentialأما على أنظمة rpm مثل CentOS: yum groupinstall "Development Tools" يتطلب تركيب بعض البرامج في غنو لينكس وجود حزم أخرى (تُسمى اعتماديات) مُثبّتة مسبقًا؛ حيث تلزم لتشغيل البرنامج بشكل صحيح، فإذا استخدمتَ مدير حزم (مثل apt-get) في عملية التركيب فإنه عادةً ما يقوم بجلب هذه الاعتماديات وتثبيتها بشكل تلقائي، أما في حال بناءك لبرنامج ما من المصدر فإنه يتوجب عليك قراءة ملف التعليمات المرفق معه والتحقق من وجود كافة الاعتماديات التي يتطلبها البرنامج مثبّتة على نظامك قبل بدء الترجمة. في مثالنا هنا عن بناء curl سوف تحتاج إلى صلاحيات الجذر root (عبر sudo مثلا) لتثبيت الحزمة بعد ترجمتها. مثال: الحصول على curl وبنائها من المصدرتنزيل الحزمةيتوجب علينا أولًا الحصول على الشيفرة المصدرية للأداة curl، وأمامنا طرق كثيرة لفعل ذلك، منها استخدام النسخة المتوفرة في موقع curl الرسمي وهي الطريقة التي سنستخدمها هنا، انتبه إلى زيارة الموقع لتتأكد من رقم الإصدار الحالي للبرنامج، النسخة المستخدمة في هذا المقال تحمل الرقم 7.43 وهي أحدث إصدار متوفر: wget -O curl.tar.gz http://curl.haxx.se/download/curl-7.43.0.tar.gz تعمل الأداة wget على جلب الحزمة من الرابط المرفق، وتحفظها في الدليل النشط. الخطوة التالية هي فكّ ضغط الحزمة، وسنستخدم لذلك الأداة tar: tar -xvzf curl.tar.gz وهكذا نحصل على المجلد curl-7.43.0 والذي يضم الشيفرة المصدرية لـ curl، نتحقق من ذلك: ls user@droplet:~/curl ls curl-7.43.0 curl.tar.gz كما هو متوقع أصبح لدينا المجلد المطلوب، والذي يُحدّد اسمه تبعًا للإصدار الذي حمّلته من الموقع، للدخول إليه استخدم الأمر cd: cd curl-7.43.0تهيئة وترجمة المصدرداخل المجلد السابق ستجد أنواعًا مختلفة من الملفات، ما يلزمنا الآن هو الملف المُسمى "configure"، وهو عبارة عن ملف تنفيذي (سكربت) يقوم بضبط بعض الإعدادات الخاصّة التي تساعد البرنامج في العمل على أجهزة الحاسوب المختلفة، لتشغيله نفّذ الأمر التالي: ./configure يتحقق السكربت السابق من وجود كافة المكتبات والحزم اللازمة لبناء وتشغيل البرنامج بشكل صحيح مثبّتة على جهازك، ويجمع بعض المعلومات عن النظام المستخدم لضبط البرنامج بما يوافقه، إضافةً لذلك يحدّد السكربت الدليل الذي سيُثبّت فيه البرنامج. عندما ينهي السكربت عمله بشكل صحيح فإنه يولّد ملفًا يدعى "Makefile" والذي يضم كافة المعلومات اللازمة للترجمة، إذا لم تنجح العملية السابقة فينبغي عليك التحقّق مرّةً أخرى من الاعتماديات التي يحتاجها البرنامج والمحاولة من جديد. الآن لبدء بناء البرنامج (ترجمته) نفّذ الأمر: make ستشاهد عشرات الأسطر على شاشة الطرفية تُطبع وتُنفّذ أثناء ترجمة البرنامج، انتظر قليلًا ريثما يتمّ العمل (سيحتاج إلى بضعة دقائق غالبًا)، عند الانتهاء من الترجمة سيكون بإمكانك تثبيت البرنامج على نظام التشغيل لديك، نفّذ الأمر التالي بصلاحيات الجذر root: make installيتّبع الأمر make التعليمات المتضمنة في الملف Makefile لتثبيت الحزمة المُترجمة. في معظم الحالات سيكون هذا هو كلّ شيء، يفترض أن تتمكن الآن من استخدام الأداة curl، للتحقق من ذلك يمكنك طباعة الأمر curl في الطرفية، وفي حال تمّ كل شيء بشكل صحيح ستحصل على خرج مشابه ما يلي: curl: try 'curl --help' or 'curl --manual' for more information لو حصلت على رسالة خطأ، جرّب الأمر التالي: ln -s /usr/local/bin/curl /usr/bin/curl والذي سينشئ اختصارًا للأداة curl من الدليل usr/local/bin/curl/ إلى usr/bin/curl/، مما سيسمح لك بتشغيلها بمجرد استدعاء الأمر curl في الطرفية من خلال. في معظم الحالات يجب أن يعمل ذلك بشكل تلقائي وكما هو متوقع، في بعض الحالات قد لا يستطيع سكربت configure إيحاد مكان التثبيت الصحيح. الآن يمكنك التحقّق من إصدار curl المثبت: curl -V يعيد الأمر السابق رقم الإصدار المثبّت ومعلومات إضافية تشبه هذه: user@droplet:~/curl curl -V curl 7.43.0 (x86_64-unknown-linux-gnu) libcurl/7.26.0 OpenSSL/1.0.1e zlib/1.2.7 libidn/1.25 libssh2/1.4.2 librtmp/2.3 Protocols: dict file ftp ftps gopher http https imap imaps ldap pop3 pop3s rtmp rtsp scp sftp smtp smtps telnet tftp Features: Debug GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRPتهانينا! لقد تمكّنت من بناء الحزمة من المصدر وتثبيتها بنجاح. الخلاصةاستعرضنا في هذا المقال الخطوات الأساسية لترجمة الشيفرة المصدرية وتحويلها إلى حزمة ثنائية جاهزة للتثبيت على نظامك، والتي يمكنك إعادة استخدامها مع معظم حالات البناء من المصدر، وأشدّد مجددًا على أهمية قراءة ملف التعليمات المرفق مع الحزم التي ترغب بتثبيتها، حيث تضم قائمة بالاعتماديات الواجب توفرها على جهازك قبل البدء بالبناء، كما قد تشمل تعليمات أخرى مهمة. عمومًا تذكّر أسلوبنا القياسي: ./configure make make installتُرجم وبتصرف من مقال How To Compile and Install Packages From Source Using Make on a VPS للكاتب Mathias Jensen.