أهلاً بكم!
هذه ملاحظة قصيرة للمبتدئين في Linux حول معنى هذه الأوامر الثلاثة الرائعة وما هي الحاجة إليها. لنبدأ، كما يقولون، من البداية. يجب تجميع معظم البرامج قبل الاستخدام، أي تحويلها من نص يمكن للشخص فهمه إلى مجموعة من الآحاد والأصفار التي يمكن للكمبيوتر فهمها. تنقسم العملية إلى ثلاث مراحل: التكوين والتجميع والتثبيت. التفاصيل تحت القطع :)
يبحث هذا الأمر عن المكتبات وملفات الرأس اللازمة للتجميع (هذا للبرامج المكتوبة جزئيًا أو كليًا بلغة C/C++ واللغات المشابهة)، بالإضافة إلى تعيين معلمات خاصة أو توصيل مكتبات خاصة، إذا ./تكوينسوف يجد كل ما يحتاجه، وسوف يخلق ملفات الصنع- الملف المطلوب لبناء البرنامج
يمكنك تكوين معلمات المكوِّن باستخدام المفاتيح والوسائط الخاصة بهذه المفاتيح نفسها، على سبيل المثال:
./configure --prefix=/opt/my_program
مع مفتاح --بادئة =
هناك ثلاث بادئات رئيسية لنظام الملفات يتم تكوين معظم البرامج عليها، وهي:
إذا قمت بفتح أي من هذه الدلائل، فيمكنك رؤية بنية مشابهة جدًا، على الأقل ستكون هناك مجلدات: bin، وما إلى ذلك، include، libs، sbin.
إذا قمت بتشغيل ./تكوينبدون مفاتيح، ستكون البادئة الافتراضية (الدليل الذي سيتم تثبيت البرنامج المترجم فيه). /usr/localتذكر هذا، إذا لم تتمكن من تشغيل برنامجك، فقد لا يكون لديك المسار إليه طريق.
باستثناء المفتاح --بادئةفي المكوِّن، كقاعدة عامة، هناك العديد من المفاتيح الأخرى، يمكنك رؤيتها جميعًا إذا قمت بتشغيل:
./تكوين --مساعدة
يبدأ الأمر/البرنامج الأكثر أهمية وبساطة عملية تجميع التطبيق من الكود المصدري. لعملك هذا البرنامجيستخدم ملفات خاصة ملفات الصنع، والتي تصف بالتفصيل عملية إنشاء التطبيق بجميع المعلمات التي حددناها للمكوِّن. ستكون نتيجة أمر make الناجح عبارة عن برنامج مترجم في الدليل الحالي.
يقوم هذا الأمر بتثبيت التطبيق مباشرة في الدليل المحدد في مرحلة التكوين؛ وبعد تنفيذ أمر التثبيت، يمكنك تشغيل البرنامج المثبت حديثًا.
لكي لا تكتب ثلاثة أوامر بالتناوب، يمكنك كتابتها في سطر واحد:
./configure && make && make install
&& - هذا هو عامل التشغيل AND، الذي يأتي من لغة C/C++، ومع ذلك، من وجهة نظر الصدفة، فهذا يعني أنه يجب تنفيذ الأمر التالي فقط في حالة نجاحه الأمر السابقيعد هذا مناسبًا جدًا إذا انتهت إحدى المراحل بخطأ.
في الواقع، يمكن لـ make install أيضًا إجراء عملية بناء، لأن مهمة التثبيت تعتمد على المهمة الكاملة (أي إنشاء التطبيق مباشرة)، وهذا يعني أنه يمكن تخطي خطوة الإنشاء ويمكن تنفيذ أمرين فقط إذا كتبتهما على سطر واحد:
./configure && قم بالتثبيت
حظا سعيدا لك! وشكرا على القراءة!
كانت هناك رغبة في التعرف على التطوير لنظام Android. تم التنزيل أندرويد ستوديو، تفكيكها وحذفها. قررت البحث عن خيارات التثبيت الأخرى. أثناء البحث، عثرت على Ubuntu Make (المعروف أيضًا باسم Ubuntu Developer Tools Center في الماضي)، وفي هذه الملاحظة القصيرة أريد أن أخبرك عنه.
ظهر مركز أدوات مطوري Ubuntu في الأخبار جنبًا إلى جنب مع Ubuntu 14.10 (Utopic Unicorn)، لكن يبدو لي أنه لم يجذب اهتمامًا واسع النطاق. بعد فترة ليست طويلة، تمت إعادة تسمية المشروع إلى Ubuntu Make، كما يطلق عليه حتى يومنا هذا، بعد أن تطور إلى الإصدار 0.4. تم تنفيذ التطوير بواسطة ديدييه روش، مهندس البرمجيات، Canonical. ومن الجدير بالذكر أيضًا حقيقة أن Ubuntu Make مكتوب بلغة Python 3.4.
الهدف الرئيسي للمشروع هو تثبيت احتياجات المطورين الشائعة بسرعة وسهولة في Ubuntu. وعلى الرغم من أنه لا يزال بعيدًا عن "الاحتياجات العامة" (لا تزال قائمة الحزم المتاحة للتثبيت صغيرة)، إلا أن كل شيء على ما يرام مع "السريع والبسيط".
حاليًا، باستخدام Ubuntu Make، يمكنك تثبيت:
Sudo add-apt-repository ppa:ubuntu-desktop/ubuntu-make sudo apt-get update sudo apt-get install ubuntu-make
اوماك الروبوت
انتظر قليلا وهذه هي النتيجة:
تم تضمين الرمز الموجود في الشرطة وopenjdk (إذا لم تكن Java موجودة في النظام). بعد الإطلاق، قام "الاستوديو" بسحب SDK وتحديثه إلى الإصدار 1.0.2. تم إطلاق "Hello World" على الهاتف وتم الانتهاء من اختبار الأداء الوظيفي.
تم تثبيت Golang بالمثل:
بالنسبة إلى PyCharm وEclipse وIdea، ستتم إضافة وسيطة أخرى:
Umake بيئة تطوير متكاملة pycharm
لإزالة حزمة، ما عليك سوى إضافة الوسيطة "-r" إلى نفس السطر:
Umake بيئة تطوير متكاملة pycharm -r
هناك حالات تحتاج فيها إلى أحدث إصدار من البرنامج، لكنه ليس موجودًا في مستودع التوزيع الخاص بك. أو لم تتم إضافة هذا البرنامج هناك على الإطلاق لسبب ما. هناك عدة خيارات للحصول على هذا البرنامج، أحدها هو بناء البرنامج من كود المصدر مباشرة للتوزيع الخاص بك. وبطبيعة الحال، نحن نتحدث عن البرامج مفتوحة المصدر. كود المصدر:)
تجميع (تجميع) البرنامج هو تحويل الكود المصدري الخاص به، المكتوب بلغة برمجة مجمعة (على سبيل المثال، C++)، وهو أمر مفهوم للمبرمج، إلى كود ثنائي (تسلسل من الأصفار والواحدات)، وهو أمر مفهوم. إلى المعالج المركزي للكمبيوتر. لا يتم تجميع جميع لغات البرمجة. على سبيل المثال، يمكن تشغيل التعليمات البرمجية في لغة بايثون على الفور، دون ترجمتها إلى كود ثنائي (على الرغم من أن هذا ممكن أيضًا). لبناء برنامج، من المستحسن أن يكون لديك معالج قوي إلى حد ما، ويفضل أن يكون متعدد النواة. لا تقم أبدًا بتجميع البرامج على أجهزة الكمبيوتر المحمولة! سيكون لهذا تأثير سلبي للغاية على متوسط \u200b\u200bالعمر المتوقع لهم (لم يتم تصميمهم لمثل هذه الأحمال، ما لم يكن لديك جهاز كمبيوتر محمول للألعاب بالطبع).
لا يوجد شيء معقد في بناء برنامج من كود المصدر. الشيء الرئيسي الذي يجب تذكره هو قاعدة واحدة: في توزيع الحزمة، يجب ألا تستخدم هذه الطريقة أبدًا قم بالتثبيت. وإلا فسوف تحصل على كومة كبيرة من المشاكل في المستقبل. عندما تدرك أنك تريد إزالة البرنامج (المثبت بهذه الطريقة)، و مدير الحزملا يعرف عنها. ويتكون البرنامج نفسه من عدة مئات من الملفات المنتشرة عبر أدلة مختلفة. مخيف؟ لذلك، في التوزيعات المعبأة، يجب أن يتم تجميع البرنامج في حزمة. ثم يمكن إزالته دون مشاكل، إذا حدث شيء ما. لقد كتبت هذا لأن العديد من الأدلة التي صادفتها حول كيفية تجميع البرامج على Linux تصف بالضبط قم بالتثبيت. يمكنك إزالة برنامج تم تثبيته بهذه الطريقة فقط في حالتين:
ألاحظ أنه لا يمكن تجميع كل البرامج بنفس الطريقة. لذلك، يجب عليك دائمًا قراءة تعليمات التجميع الموجودة في الأرشيف مع الكود المصدري. يحدث أن يقوم المطور بوضع برنامج نصي هناك، والذي عند إطلاقه يفعل كل شيء بنفسه (يجمع ويثبت، لكننا نتذكر إجراء التثبيت)، أو قد لا يكون مناسبًا للتجميع يصنعلكنك تحتاج إلى نظام تجميع مختلف. أيضًا، لإنشاء برنامج، ستحتاج إلى تثبيت تبعيات التجميع اللازمة له (وهي حزم ذات البادئة -ديف). لتجميع برنامج سريعًا في حزمة حتى تتمكن من تثبيته أو إلغاء تثبيته دون مشاكل، توجد أداة مساعدة تسمى com.checkinstall. سيسمح لك بإنشاء حزمة أصلية للنظام ( ديبأو دورة في الدقيقة)، والذي سيسمح لك باستخدام مدير الحزم القياسي لتثبيته/إلغاء تثبيته
لبناء برامج في جنو/لينكس، تستخدم (في الغالب) البرنامج يصنع، الذي يدير التعليمات من ملف تعريف، ولكن بما أن هناك العديد من توزيعات GNU/Linux، وجميعها مختلفة، فمن أجل تجميع البرنامج، تحتاج لكل توزيعة إلى تحديد المسارات التي توجد بها المكتبات وملفات الرأس بشكل منفصل. لا يستطيع المبرمجون دراسة كل توزيعة وإنشاء ملفات Makefiles لكل منها على حدة. لذلك، توصلوا إلى مكونين "يدرسون" النظام ويقومون بإنشاء ملف Makefile وفقًا للمعرفة المكتسبة. للبناء نحتاج إلى مترجمين: تم تحديدهم في تبعيات الحزمة بناء ضروري، لذلك يكفي تثبيته بكل التبعيات. لا تزال هناك حاجة com.autoconfو com.automake. إذا كان البرنامج مكتوبا كيو تي، وعادة ما يتم تجميعها إما بواسطة فريق com.qmake(بالطبع يجب تثبيته)، أو عن طريق فتح ملف المشروع في البعض بيئة تطوير متكاملة(عادة كيو تي الخالق) والجمعيات فيه.
أولا تحتاج إلى إعداد النظام. للقيام بذلك، دعونا نضع مجموعة ضروريةأدوات:
س udo apt install بناء أساسيات gcc devscripts git fakeroot automake autoconf
يمكنك الحصول على كود المصدر بطرق مختلفة. قم بالتنزيل من الإنترنت (على سبيل المثال، من موقع المطور)، واستنساخ مستودع يحتوي على كود المصدر، وما إلى ذلك. في الحالة الأولى، بشكل عام، كل شيء واضح. في الثاني: لنفترض أن البرنامج موجود في مستودع git (on جيثب، على سبيل المثال). يمكننا الذهاب إلى هذا المستودع وتنزيل الأرشيف بالرمز من هناك
لذا، انسخ المستودع بالكامل بنفسك (كما يفعل المطورون). على سبيل المثال، لنأخذ البرنامج com.mgba. هذا هو المحاكي وحدة التحكم في اللعبة نينتندو جيم بوي. عنوان المستودع. دعونا ننسخها لأنفسنا:
استنساخ بوابة https://github.com/mgba-emu/mgba.git
في الدليل الرئيسي الخاص بك، سيكون لديك دليل به كود المصدر الخاص به. وفي نفس الصفحة من البرنامج توجد تعليمات التجميع.
نقرأ بعناية. افتح محطة وانتقل إلى الدليل الذي يحتوي على كود المصدر:
cd ~/mgba
ونقوم بتجميع البرنامج:
بناء مكدير
بناء القرص المضغوط
cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr ..
يصنع
سودو تحقق التثبيت -D
سيُطلب منك بعض المعلومات (اسم الحزمة، الإصدار، وما إلى ذلك. ويُنصح بملء جميع الحقول). بعد التجميع، في الدليل أعلاه (أي، في mgba)، ستظهر حزمة deb مع البرنامج. الآن يمكنك ببساطة تثبيته بالنقر المزدوج أو باستخدام الأمر سودو dpkg -i packagename.deb. إذا بدأت في تلقي رسائل خطأ أثناء التجميع، فاقرأها بعناية. قد تكون هناك بعض تبعيات التجميع مفقودة.
لنأخذ مثالًا مختلفًا قليلًا، والذي يستخدم أداة التهيئة. في هذه الحالة، في الدليل الذي يحتوي على الكود المصدري، توجد البرامج النصية: autogen.sh, تكوينوما شابه. Autogen.shيولد البرنامج النصي تكوين، والتي يمكنك من خلالها تكوين البرنامج بالفعل قبل التجميع (نعم، نعم، مكون المكوِّن). كما هو الحال دائمًا، لا تنس قراءة التعليمات الخاصة بتجميع برنامج معين. لنفترض أن الأرشيف يحتوي على البرنامج النصي autogen.sh. دعونا ننفذها:
./autogen.sh
بمجرد التنفيذ، يجب أن يظهر ملف التكوين. لمعرفة المعلمات التي يمكنك بناء البرنامج بها، أدخل:
./تكوين --مساعدة
قم بمراجعة جميع الخيارات المتاحة. عادة، يمكن أن يكون هذا دعمًا لمختلف المكونات الإضافية، أو تجميعًا بواجهة بديلة، أو حتى تجميعًا لبنية معالج مختلفة. لنفترض أن البرنامج يستخدم واجهة مكتوبة جتك + 2، ولكن لديه بديل على جتك + 3. بعد ذلك سيبدو تكوين البرنامج كما يلي:
./التكوين --with-gtk3
./configure --enable-gtk3
سيتم وصف كل شيء بالتفصيل في التعليمات. هناك مجموعة معينة من الخيارات القياسية (بعد إدخال ./configure --help، يتم كتابتها أولاً)، مثل تحديد مسار التثبيت:
البادئة=/usr
بعد تشغيل التهيئة وتكوين الكود بنجاح، يمكنك تشغيل الإنشاء:
سودو تحقق التثبيت
هذا كل شيء. كما ترون، لا يوجد شيء معقد هنا. على الرغم من أنني لن أخفي ذلك، إلا أنه يحدث أن المطور لم يهتم بتعليمات التجميع عالية الجودة. ولكن هذا نادرا ما يحدث. كما أود أن ألفت انتباهكم إلى ما يلي: اللجوء إلى بناء برنامج من الكود المصدري فقط كملاذ أخير. إذا كنت تستخدم أوبونتو LTS، ثم ابحث (باستخدام Google) لمعرفة ما إذا كان البرنامج الذي تحتاجه (أو إصدارًا أحدث) متاحًا في إصدار أحدث من Ubuntu. أو ربما هناك
في كثير من الأحيان لا يمكن العثور على الحزم الضرورية إلا في النموذج المصدر؛ توضح هذه المقالة طريقة تثبيت حزمة من التعليمات البرمجية المصدر.
يتم توزيع البرامج عادةً في أرشيفات مجمعة، وهي ملفات ذات امتدادات
عليك أن تفهم الفرق بين أرشيفي وباكر.
يستخدم البرنامج لأرشفة الدلائل والملفات قطران; ونتيجة عمله هو ملف بامتداد .قطران. بالمعنى التقريبي، هذه نسخة نظام الملفات- الدلائل والملفات بخصائصها وحقوق الوصول إليها، موضوعة في ملف واحد.
سيكون حجم هذا الملف أكبر قليلاً من الحجم الإجمالي للملفات التي تم أرشفتها. لذلك (أو ربما لسبب آخر) يستخدمون برامج الحزم - وهي برامج تسمح لك بتقليل حجم الملف دون فقدان البيانات.
برنامج قطرانيمكن تفريغها، لذلك لا حاجة للاتصال com.gunzip، أو يمكنك فقط إخبار البرنامج قطرانأنه يجب أولاً فك ضغط الملف. على سبيل المثال، الأمر
القطران -xvf< some_app_name>.tar.gzسيتم فك ضغطه وفك ضغطه على الفور. الفرق بين الملفات والامتدادات
فقط تم استخدام حزم مختلفة، البرنامج قطرانيحدد طريقة الضغط تلقائيا وخيارات إضافية في في هذه الحالةغير مطلوب.
بعد التفريغ، يجب عليك الانتقال إلى الدليل الناتج؛ ويتم تنفيذ جميع الأوامر الموضحة أدناه في الدليل باستخدام الكود المصدري للحزمة.
قرص مضغوط< имя_пакета>*لبناء برامج في جنو/لينكس، تستخدم (في الغالب) البرنامج يصنع، الذي يدير التعليمات من ملف تعريف، ولكن بما أن هناك العديد من توزيعات GNU/Linux، وجميعها مختلفة، فمن أجل بناء البرنامج، تحتاج لكل توزيعة إلى تحديد المسارات التي توجد بها المكتبات وملفات الرأس بشكل منفصل. لا يمكن للمبرمجين دراسة كل توزيعة وإنشاء منفصلة ملف تعريف. لذلك، توصلوا إلى مكونين "يدرسون" النظام ويقومون بإنشاءه وفقًا للمعرفة المكتسبة ملف تعريف. لكنهم لم يتوقفوا عند المكوّنات وتوصلوا إلى مكوّنات المكوّنات...وهذا هو المكان الذي توقفوا فيه
للبناء نحتاج إلى مترجمين: تم تحديدهم في تبعيات الحزمة بناء ضروري، لذلك يكفي تثبيته بكل التبعيات. لا تزال هناك حاجة com.autoconfو com.automake.
لذلك، لبناء شيء ما من المصدر، تحتاج أولاً إلى إنشاء مكون؛ تم شرح كيفية إنشاء المكوّن في ملفconfig.in. لبناء المكوّن الذي تحتاجه للتشغيل
./ bootstrap ./ autogen.shإذا لم تكن هناك مثل هذه البرامج النصية في الأرشيف، فيمكنك تشغيل الأوامر التالية بالتسلسل:
alocal autoheader automake --gnu --add-missing --copy --foreign autoconf -f -Wallكل هذه الأوامر تستخدم الملف تكوين.in. بعد تنفيذ هذه الأوامر، سيتم إنشاء ملف تكوين. بعد ذلك، تحتاج إلى تشغيل المكوّن للتحقق من وجود جميع التبعيات، بالإضافة إلى تثبيت خيارات بناء إضافية (إن أمكن) وعرض نتيجة التثبيت (اختياري - قد لا يكون موجودًا)
./ تكوينسيقوم المكوّن بإنشاء ملف Makefile استنادًا إلى المعرفة المكتسبة والملف makefile.am. يمكنك تمرير الخيارات المتوفرة في مصادر البرنامج إلى المكوّن، والتي تسمح لك بتمكين/تعطيل ميزات معينة في البرنامج، وعادةً ما يمكنك التعرف عليها باستخدام الأمر
./ تكوين --مساعدةهناك أيضًا مجموعة من الخيارات القياسية، مثل
البادئة=
الذي يحدد الدليل الذي سيتم استخدامه للتثبيت. عادة لأوبونتو
--prefix =/ usr --prefix =/ usr/ localبدونقطع في النهاية! يمكنك الآن بدء عملية بناء البرنامج نفسه باستخدام الأمر
يصنعامتيازات كافية للبناء مستخدم عادي. يمكن اعتبار نهاية البناء اللحظة التي يتوقف فيها تنفيذ الأوامر الموجودة في وحدة التحكم "عشوائيًا" ولا توجد كلمة خطأ. الآن تم تجميع كل شيء وجاهز للتثبيت.
إن الجهود المبذولة في التثبيت الصحيح ستؤتي ثمارها في المستقبل إذا تمت إزالة البرنامج المثبت أو تحديثه.
التثبيت باستخدام الأداة المساعدة com.checkinstall. للتثبيت:
Sudo apt-get install checkinstallناقص هذه الطريقة: com.checkinstallلا يفهم جميع المصادر، حيث يمكن لمؤلف البرنامج كتابة نصوص تثبيت خاصة و com.checkinstallلن يفهمهم.
لإنشاء وتثبيت حزمة deb تحتاج إلى تشغيلها
سودو تحقق التثبيتقم بإنشاء حزمة deb يدويًا بسرعة.
يتمثل الاختلاف الرئيسي عن الطريقة السابقة في أنه في هذه الحالة تقوم بإنشاء الحزمة يدويًا وتتبع جميع التغييرات التي تجريها. ستناسبك هذه الطريقة أيضًا إذا كانت المصادر لا تدعم بناء الحزمة بها com.checkinstall.
نقوم بالتثبيت في دليل مؤقت، حيث نحصل على المجموعة الكاملة من الملفات المثبتة:
لنقم بإنشاء دليل DEBIAN في "حزمة الجذر" ونضيف قائمة بجميع الملفات التي يجب أن تنتقل إلى /etc إلى DEBIAN/conffiles:
sed "s/^/\//" > DEBIAN/ conffiles
الحزمة: package_name الإصدار: 1.2.3 البنية: amd64/i386/armel/all المشرف: يمكنك إدخال اسمك، يمكنك القمامة، ولكن إذا تركته فارغًا، فسوف يقسم dpkg حسب: هنا يمكنك إدخال قائمة الحزم مفصولة بفواصل. الأولوية: اختيارية الوصف: تحتاج أيضًا إلى إدخال شيء ما حتى لا تكون هناك تحذيرات
إذا لزم الأمر، يمكنك أيضًا إنشاء نصوص برمجية preinst وpostinst وprerm وpostrm هناك.
dpkg -b التثبيت المؤقت
التثبيت غير صحيح عيب هذه الطريقة هو أنه إذا قمت بالتثبيت مباشرة عبر make install، فمن المرجح أنك لن تتمكن من إزالة الحزمة أو تحديثها بشكل طبيعي. علاوة على ذلك، التثبيتنسخة جديدة
فوق القديم، من المرجح أن يحل محل التغييرات التي أجريتها في التكوينات. يقوم برنامج make install بتنفيذ ما يُطلب منه بالضبط - فهو يقوم بتثبيت الملفات في الأماكن الصحيحة، متجاهلاً حقيقة وجود شيء ما بالفعل. بعد هذه العملية، من المستحيل تماما الحصول على أي معلومات حول ما تم وضعه في مكانه وبشكل سهل الهضم. في بعض الأحيان، بالطبع، يدعم Makefile إجراء إلغاء التثبيت، ولكن هذا ليس شائعًا جدًا، وليس حقيقة أنه يعمل بشكل صحيح. بالإضافة إلى ذلك، ستحتاج إلى تخزين الشجرة المصدر التي تم فك حزمتها وإنشاء قواعد لإلغاء التثبيت.
لتثبيت ما عليك القيام بهسودو جعل التثبيت
لإزالة حزمة تم تثبيتها باستخدام هذه الطريقة، يجب عليك تنفيذها في الدليل الجذر لمصادر البرنامج (حيث قمت بتشغيل make install).أخطاء
الحزم التي تحتوي على مم في نهاية الوصف هي حزم لبرامج C++. قائمة bmpx، ولكنها مناسبة لأي برنامج GTK2/Gnome تقريبًا. لذا، إذا لم تتمكن من تجميعها، فانظر إلى هذه القائمة وقارنها بما قمت بتثبيته.
تجميع: | وقت التشغيل: | |
---|---|---|
X | libx11-dev | ليبكس11-6 |
جليب إم إم | libglibmm-2.4-dev | libglibmm-2.4-1c2a |
جتك + | libgtk2.0-dev,gtk-doc-tools | libgtk2.0-0 |
جتككم | libgtkmm-2.4-dev | libgtkmm-2.4-1c2a |
الفسحة | libglade2-dev | libglade2-0 |
جليدMM | libglademm-2.4-dev | libglademm-2.4-1c2a |
XML | libxml2-dev | libxml2 |
XML++ | libxml++2.6-dev | libxml++2.6c2a |
دي باص | libdbus-1-dev، libdbus-glib-1-dev | libdbus-1-2، libdbus-glib-1-2 |
السا | libasound2-dev | ليباسوند2 |
هال | libhal-dev، libhal-storage-dev | libhal1,libhal-storage1 |
صبي | libgamin-dev | ليبغامين0 |
نيون | libneon25-dev | libneon25 |
TagLib | libtagc0-dev | libtagc0 |
إخطار بدء التشغيل | libstartup-notification0-dev | إعلام libstartup0 |
يعزز | libboost-dev،liboost-filesystem-dev | libboost-نظام الملفات1.33.1 |
MusicBrainz | libmusicbrainz4-dev | libmusicbrainz4c2a |
GStreamer | libgstreamer0.10-dev،libgstreamer-plugins-base0.10-dev | libgstreamer0.10-0،libgstreamer-plugins-base0.10-0 |
المواد من مجموعة مستخدمي Bryansk Linux وwww.rm.pp.ru
لكل توزيعة خصائصها الخاصة لتجميع النواة، وتركز هذه المقالة تحديدًا على كيفية القيام بذلك في Debian Etch. ويكشف أيضًا عن مسألة كيفية تطبيق تصحيح معين على النواة عند الحاجة إلى دعم وظائف معينة أو معدات جديدة في نظامك. هذه المقالة مخصصة في المقام الأول للمستخدمين المدربين وليس هناك ضمانات بأن هذه الطريقة ستعمل كما ينبغي وأن جميع الإجراءات والمسؤوليات الموضحة تقع على عاتقك.
سيتم وصف طريقتين لتجميع النواة. سيكون الخيار الأول هو إنشاء حزم .deb التي يمكن تثبيتها على نظامك أو على نظام آخر. الطريقة الثانية هي ما يسمى بالطريقة "التقليدية".
أولاً، لنقم بتحديث قوائم الحزم:
#الحصول على التحديثلنقم بتثبيت الحزم التي نحتاجها:
# apt-get install kernel-package libncurses5-dev fakeroot wget bzip2 build-essentialانتقل إلى الدليل /usr/src، ثم انتقل إلى www.kernel.org وحدد إصدار kernel المطلوب. في هذه الحالة، سيتم النظر في الإصدار linux-2.6.23.1.tar.bz2. تحميل:
# cd /usr/src # wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.23.1.tar.bz2دعونا نفك المصادر وننشئها رابط رمزي:
# tar xjf linux-2.6.23.1.tar.bz2 # rm linux (أزل الارتباط الرمزي السابق) # ln -s linux-2.6.23.1 linux # cd /usr/src/linuxلا تفعل هذا اختياريا أو دون داع!
في بعض الأحيان تكون هناك حاجة إلى برامج تشغيل أو أدوات غير مدعومة في kernel الموجود، على سبيل المثال تقنية المحاكاة الافتراضية أو غيرها من المواصفات الأخرى غير الموجودة في الإصدار الحالي. على أي حال، يمكن تصحيح ذلك عن طريق تطبيق ما يسمى بالتصحيحات (إن وجدت).
لذا، لنفترض أنك قمت بتنزيل التصحيح المطلوب (على سبيل المثال، دعنا نسميه patch.bz2) إلى /usr/src. لنطبق التصحيح الذي تم تنزيله على مصادرنا (يجب أن تظل في الدليل /usr/src/linux):
# bzip2 -dc /usr/src/patch.bz2 | patch -p1 --dry-run # bzip2 -dc /usr/src/patch.bz2 | التصحيح-ص1الأمر الأول هو مجرد اختبار ولن يتم تطبيق أي تغييرات على المصادر. إذا لم يتم طرح أي أخطاء بعد الأمر الأول، فيمكنك تشغيل الأمر الثاني لتطبيق التصحيح. لا ينبغي عليك تحت أي ظرف من الظروف تنفيذ الأمر الثاني إذا تم إنشاء أخطاء بعد الأول!
بهذه الطريقة يمكنك تطبيق التصحيحات على مصادر النواة. على سبيل المثال، هناك بعض الميزات المتوفرة فقط في النواة 2.6.23.8، ولم تحتوي التعليمات البرمجية المصدرية على الوظائف الضرورية، ولكن تم إصدار التصحيح 2.6.23.8.bz2. يمكنك تطبيق هذا التصحيح على مصادر النواة 2.6.23، ولكن ليس 2.6.23.1 أو 2.6.23.3، إلخ. يمكنك قراءة المزيد عن هذا على:
البادئات (التصحيحات المسبقة) - تعادل إصدارات ألفا؛ يجب تطبيق التصحيحات على مصادر الإصدار السابق الكامل بإصدار مكون من 3 أرقام (على سبيل المثال، يمكن تطبيق التصحيح 2.6.12-rc4 على مصادر الإصدار 2.6.11، ولكن ليس على الإصدار 2.6.11.10.)
وهذا يعني أننا إذا أردنا بناء النواة 2.6.23.8، فإننا بحاجة إلى تنزيل مصادر الإصدار 2.6.23 (http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.23) .tar.gz) مطبق بالطريقة الثانية "التقليدية"!
تطبيق التصحيح 2.6.23.8.bz2 على النواة 2.6.23:
# cd /usr/src # wget http://www.kernel.org/pub/linux/kernel/v2.6/patch-2.6.22.8.bz2 # cd /usr/src/linux # bzip2 -dc /usr/ src/patch-2.6.23.8.bz2 | patch -p1 --dry-run # bzip2 -dc /usr/src/patch-2.6.23.8.bz2 | التصحيح-ص1إنها فكرة جيدة أن تستخدم ملف التكوين الموجود للنواة قيد التشغيل للنواة الجديدة أيضًا. لذلك، ننسخ التكوين الحالي إلى /usr/src/linux:
# جعل نظيف && جعل mrproper # cp /boot/config-`uname -r` ./.config # make Menuconfigوبعد ذلك سيتم تحميل قائمة تكوين kernel الرسومية. حدد العنصر "تحميل ملف تكوين بديل" في قائمة التكوين وانقر على "موافق". ثم (إذا لزم الأمر) قم بإجراء التغييرات اللازمة على تكوين kernel من خلال التنقل عبر القائمة (يمكن العثور على تفاصيل تكوين kernel على www.google.com). عند الانتهاء والنقر على "خروج"، سيتم طرح السؤال "هل ترغب في حفظ تكوين النواة الجديد الخاص بك؟"، أجب بالإيجاب "نعم".
يتم بناء النواة من خلال أمرين فقط:
# make-kpkg نظيف # fakeroot make-kpkg --initrd --append-to-version=-cybermind kernel_image kernel_headersبعد --append-to-version=، يمكنك كتابة أي اسم تريده، ولكن يجب أن يبدأ بعلامة الطرح (-) وليس به مسافات.
يمكن أن تستغرق عملية تجميع حزم .deb وإنشائها وقتًا طويلاً. كل شيء يعتمد على تكوين kernel وقدرات المعالج الخاص بك.
مؤخرًا، ظهر خطأ في دبيان، حيث أنه بعد تثبيت الحزم ذات النواة المجمعة باستخدام الطريقة الموضحة هنا، لا يتم إنشاء الملف /boot/initrd.img المقابل. ولإصلاح هذه المشكلة لنواة مثبتة بالفعل، سيتعين عليك إنشاء initrd.img يدويًا:
التحديث-initramfs -c -k<полная-версия-ядра>لحل المشكلة "للمستقبل"، قم بالتعليق، كما هو موضح، على السطر الثاني المقتبس أدناه في الملف /etc/kernel/postinst.d/initramfs-tools:
# حزمة النواة تمرر وسيطًا إضافيًا؛ hack لعدم التشغيل ضمن حزمة kernel #[ -z "$2" ] || خروج 0عند اكتمال بناء النواة بنجاح، سيتم إنشاء حزمتين .deb في الدليل /usr/src:
# cd /usr/src # ls -llinux-image-2.6.23.1-cybermind_2.6.23.1-cybermind-10.00.Custom_i386.deb - النواة الفعلية نفسها وlinux-headers-2.6.23.1-cybermind_2.6.23.1-cybermind-10.00.Custom_i386.deb - الرؤوس النواة اللازمة لبناء وحدات أخرى (على سبيل المثال، عند بناء الوحدات النمطية برامج تشغيل نفيديا). تثبيتها:
# dpkg -i linux-image-2.6.23.1-cybermind_2.6.23.1-cybermind-10.00.Custom_i386.deb # dpkg -i linux-headers-2.6.23.1-cybermind_2.6.23.1-cybermind-10.00.Custom_i386.deb(يمكن الآن تثبيت هذه الحزم على نظام آخر ولن تكون هناك حاجة لإنشائها مرة أخرى.)
هذا كل شيء، اكتمل التثبيت، وسيتم إجراء قائمة أداة تحميل التشغيل وتثبيت قرص ذاكرة الوصول العشوائي الجديد والنواة تلقائيًا. كل ما تبقى هو إعادة التشغيل:
# إعادة التشغيلنقوم بتنفيذ جميع النقاط الموضحة أعلاه قبل نقطة "تجميع النواة".
# جعل الكل # جعل الوحدات_تثبيت # جعل التثبيتكالعادة، قد يستغرق البناء وقتًا طويلاً، اعتمادًا على تكوين النواة وقدرات المعالج.
العيب الرئيسي لهذه الطريقة هو أنه إذا قمت بتحديث النواة في كثير من الأحيان، فسوف تتراكم بعد فترة عدد كبيروسوف ترغب في حذف تلك غير المستخدمة. لتسهيل ذلك، يمكنك تجميع النواة والملفات الأخرى المثبتة في النظام باستخدام الأمرين "make Modules_install" و"make install" في حزمة deb (أو بالأحرى، اثنتين تبدأان من kernel 2.6.27) المشابهة لـ الطريقة الأولى، لكننا سنستخدم فيما يلي نصوص النواة نفسها:
# جعل الكل # جعل deb-pkgسيظهر ملفان .deb في الدليل بمستوى واحد أعلى الدليل المصدر. لقد قمت بتجميع النواة في الدليل /usr/src/linux-2.6.27.10 وظهرت الملفات في الدليل /usr/src/
# linux-2.6.27.10_2.6.27.10-1_amd64.deb # linux-firmware-image_2.6.27.10-1_all.debيتم تثبيت النواة مع الأمر
# dpkg -i linux-2.6.27.10_2.6.27.10-1_amd64.debيمكن إزالة النوى القديمة، على سبيل المثال، من متشابك"أ
تم تجميع النواة وتثبيتها، لكنك تحتاج الآن إلى إنشاء قرص ذاكرة الوصول العشوائي (الذي بدونه لن يتم تشغيل النواة ببساطة) وتحتاج إلى تحديث أداة تحميل التمهيد GRUB. للقيام بذلك، قم بما يلي:
# depmod 2.6.23.1 # apt-get install yairdتثبيت قرص ذاكرة الوصول العشوائي:
# mkinitrd.yaird -o /boot/initrd.img-2.6.23.1 2.6.23.1لنقم بتحديث أداة تحميل التشغيل بسهولة وبدون ألم:
# تحديث اليرقةهذا كل شيء، أداة تحميل التشغيل والنواة الجديدة جاهزة، كل ما تبقى هو إعادة التشغيل:
# إعادة التشغيلإذا لم يتم تحميل النواة الجديدة التي حددتها بعد إعادة التشغيل، فأعد التشغيل واختر النواة السابقة ويمكنك محاولة القيام بالعملية بأكملها مرة أخرى لبناء نواة عاملة. في هذه الحالة، لا تنس حذف أسطر النواة غير العاملة في /boot/grub/menu.lst.