التثبيت جعل أوبونتو. تجميع وتثبيت البرامج من المصدر. البرامج المطلوبة

06.12.2021

أهلاً بكم!

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

./تكوين

يبحث هذا الأمر عن المكتبات وملفات الرأس اللازمة للتجميع (هذا للبرامج المكتوبة جزئيًا أو كليًا بلغة C/C++ واللغات المشابهة)، بالإضافة إلى تعيين معلمات خاصة أو توصيل مكتبات خاصة، إذا ./تكوينسوف يجد كل ما يحتاجه، وسوف يخلق ملفات الصنع- الملف المطلوب لبناء البرنامج

يمكنك تكوين معلمات المكوِّن باستخدام المفاتيح والوسائط الخاصة بهذه المفاتيح نفسها، على سبيل المثال:

./configure --prefix=/opt/my_program

مع مفتاح --بادئة = يمكنك تحديد دليل يعمل لاحقًا كبادئة لبرنامجك (أي الدليل الجذر). ويرجع ذلك إلى حقيقة أنه في عالم Linux وليس فقط، يوجد تسلسل هرمي خاص لنظام الملفات (HFS) والذي بموجبه يجب تجميع أي برنامج وتثبيته حتى يعمل بدون أخطاء.

هناك ثلاث بادئات رئيسية لنظام الملفات يتم تكوين معظم البرامج عليها، وهي:

  • / - الدليل الجذر لنظام التشغيل، ما يسمى ROOT
  • /usr - الدليل الذي توجد به تطبيقات بيئة المستخدم
  • /usr/local - دليل إضافي لـ برامج المستخدمتم جمعها باليد، على وجه التحديد ل نظام التشغيللم تتحول إلى مكب نفايات

إذا قمت بفتح أي من هذه الدلائل، فيمكنك رؤية بنية مشابهة جدًا، على الأقل ستكون هناك مجلدات: 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، يمكنك تثبيت:

  • أندرويد ستوديو
  • كسوف
  • إصدار مجتمع IntelliJ Idea
  • إصدار مجتمع PyCharm
  • مترجم جوجل go-lang
  • مطور لعبة Stencyl IDE

تثبيت

في ubuntu 15.04، يتوفر ubuntu-make خارج الصندوق، ويُطلب من مستخدمي الإصدارين 14.04 و14.10 التثبيت من ppa:

Sudo add-apt-repository ppa:ubuntu-desktop/ubuntu-make sudo apt-get update sudo apt-get install ubuntu-make

الاستخدام

التثبيت باستخدام ubuntu-make بسيط للغاية. ل عمليات تثبيت أندرويدالاستوديو يعمل فقط في المحطة:

اوماك الروبوت
انتظر قليلا وهذه هي النتيجة:

تم تضمين الرمز الموجود في الشرطة وopenjdk (إذا لم تكن Java موجودة في النظام). بعد الإطلاق، قام "الاستوديو" بسحب SDK وتحديثه إلى الإصدار 1.0.2. تم إطلاق "Hello World" على الهاتف وتم الانتهاء من اختبار الأداء الوظيفي.

تم تثبيت Golang بالمثل:

بالنسبة إلى PyCharm وEclipse وIdea، ستتم إضافة وسيطة أخرى:

Umake بيئة تطوير متكاملة pycharm

لإزالة حزمة، ما عليك سوى إضافة الوسيطة "-r" إلى نفس السطر:

Umake بيئة تطوير متكاملة pycharm -r

رأي

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

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

تجميع (تجميع) البرنامج هو تحويل الكود المصدري الخاص به، المكتوب بلغة برمجة مجمعة (على سبيل المثال، 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. أو ربما هناك

في كثير من الأحيان لا يمكن العثور على الحزم الضرورية إلا في النموذج المصدر؛ توضح هذه المقالة طريقة تثبيت حزمة من التعليمات البرمجية المصدر.

فتح العلبة

يتم توزيع البرامج عادةً في أرشيفات مجمعة، وهي ملفات ذات امتدادات

.tar.gz (أحيانًا .tgz) .tar.bz2

عليك أن تفهم الفرق بين أرشيفي وباكر.

يستخدم البرنامج لأرشفة الدلائل والملفات قطران; ونتيجة عمله هو ملف بامتداد .قطران. بالمعنى التقريبي، هذه نسخة نظام الملفات- الدلائل والملفات بخصائصها وحقوق الوصول إليها، موضوعة في ملف واحد.

سيكون حجم هذا الملف أكبر قليلاً من الحجم الإجمالي للملفات التي تم أرشفتها. لذلك (أو ربما لسبب آخر) يستخدمون برامج الحزم - وهي برامج تسمح لك بتقليل حجم الملف دون فقدان البيانات.

برنامج قطرانيمكن تفريغها، لذلك لا حاجة للاتصال com.gunzip، أو يمكنك فقط إخبار البرنامج قطرانأنه يجب أولاً فك ضغط الملف. على سبيل المثال، الأمر

القطران -xvf< some_app_name>.tar.gz

سيتم فك ضغطه وفك ضغطه على الفور. الفرق بين الملفات والامتدادات

.tar.gz

.tar.bz2

فقط تم استخدام حزم مختلفة، البرنامج قطرانيحدد طريقة الضغط تلقائيا وخيارات إضافية في في هذه الحالةغير مطلوب.

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

قرص مضغوط< имя_пакета>*

بناء الحزمة

لبناء برامج في جنو/لينكس، تستخدم (في الغالب) البرنامج يصنع، الذي يدير التعليمات من ملف تعريف، ولكن بما أن هناك العديد من توزيعات 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

بدونقطع في النهاية! يمكنك الآن بدء عملية بناء البرنامج نفسه باستخدام الأمر

يصنع

امتيازات كافية للبناء مستخدم عادي. يمكن اعتبار نهاية البناء اللحظة التي يتوقف فيها تنفيذ الأوامر الموجودة في وحدة التحكم "عشوائيًا" ولا توجد كلمة خطأ. الآن تم تجميع كل شيء وجاهز للتثبيت.

تثبيت

إن الجهود المبذولة في التثبيت الصحيح ستؤتي ثمارها في المستقبل إذا تمت إزالة البرنامج المثبت أو تحديثه.

التثبيت الصحيح (الخيار رقم 1)

التثبيت باستخدام الأداة المساعدة com.checkinstall. للتثبيت:

Sudo apt-get install checkinstall

ناقص هذه الطريقة: com.checkinstallلا يفهم جميع المصادر، حيث يمكن لمؤلف البرنامج كتابة نصوص تثبيت خاصة و com.checkinstallلن يفهمهم.

لإنشاء وتثبيت حزمة deb تحتاج إلى تشغيلها

سودو تحقق التثبيت

التثبيت الصحيح (الخيار رقم 2)

قم بإنشاء حزمة deb يدويًا بسرعة.

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

    نقوم بالتثبيت في دليل مؤقت، حيث نحصل على المجموعة الكاملة من الملفات المثبتة:

Fakeroot make install DESTDIR=`pwd`/tempinstall

    لنقم بإنشاء دليل DEBIAN في "حزمة الجذر" ونضيف قائمة بجميع الملفات التي يجب أن تنتقل إلى /etc إلى DEBIAN/conffiles:

cd tempinstall mkdir DEBIAN Find etc |

    sed "s/^/\//" > DEBIAN/ conffiles

ثم نقوم بإنشاء ملف DEBIAN/control بالمحتوى التالي:

    الحزمة: package_name الإصدار: 1.2.3 البنية: amd64/i386/armel/all المشرف: يمكنك إدخال اسمك، يمكنك القمامة، ولكن إذا تركته فارغًا، فسوف يقسم dpkg حسب: هنا يمكنك إدخال قائمة الحزم مفصولة بفواصل. الأولوية: اختيارية الوصف: تحتاج أيضًا إلى إدخال شيء ما حتى لا تكون هناك تحذيرات

    إذا لزم الأمر، يمكنك أيضًا إنشاء نصوص برمجية preinst وpostinst وprerm وpostrm هناك.

نقوم بإنشاء حزمة deb، والتي نقوم بتنفيذها:

    dpkg -b التثبيت المؤقت

الناتج هو tempinstall.deb، الذي نقوم بتثبيته

سودو dpkg -i tempinstall.deb

التثبيت (الخيار رقم 3)

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

فوق القديم، من المرجح أن يحل محل التغييرات التي أجريتها في التكوينات. يقوم برنامج make install بتنفيذ ما يُطلب منه بالضبط - فهو يقوم بتثبيت الملفات في الأماكن الصحيحة، متجاهلاً حقيقة وجود شيء ما بالفعل. بعد هذه العملية، من المستحيل تماما الحصول على أي معلومات حول ما تم وضعه في مكانه وبشكل سهل الهضم. في بعض الأحيان، بالطبع، يدعم Makefile إجراء إلغاء التثبيت، ولكن هذا ليس شائعًا جدًا، وليس حقيقة أنه يعمل بشكل صحيح. بالإضافة إلى ذلك، ستحتاج إلى تخزين الشجرة المصدر التي تم فك حزمتها وإنشاء قواعد لإلغاء التثبيت.

لتثبيت ما عليك القيام به

سودو جعل التثبيت

لإزالة حزمة تم تثبيتها باستخدام هذه الطريقة، يجب عليك تنفيذها في الدليل الجذر لمصادر البرنامج (حيث قمت بتشغيل make install).

سودو جعل إلغاء التثبيت

أخطاء

ضروري برمجة

الحزم التي تحتوي على مم في نهاية الوصف هي حزم لبرامج C++. قائمة bmpx، ولكنها مناسبة لأي برنامج GTK2/Gnome تقريبًا. لذا، إذا لم تتمكن من تجميعها، فانظر إلى هذه القائمة وقارنها بما قمت بتثبيته.

تجميع:وقت التشغيل:
Xlibx11-devليبكس11-6
جليب إم إمlibglibmm-2.4-devlibglibmm-2.4-1c2a
جتك +libgtk2.0-dev,gtk-doc-toolslibgtk2.0-0
جتككمlibgtkmm-2.4-devlibgtkmm-2.4-1c2a
الفسحةlibglade2-devlibglade2-0
جليدMMlibglademm-2.4-devlibglademm-2.4-1c2a
XMLlibxml2-devlibxml2
XML++libxml++2.6-devlibxml++2.6c2a
دي باصlibdbus-1-dev، libdbus-glib-1-devlibdbus-1-2، libdbus-glib-1-2
الساlibasound2-devليباسوند2
هالlibhal-dev، libhal-storage-devlibhal1,libhal-storage1
صبيlibgamin-devليبغامين0
نيونlibneon25-devlibneon25
TagLiblibtagc0-devlibtagc0
إخطار بدء التشغيلlibstartup-notification0-devإعلام libstartup0
يعززlibboost-dev،liboost-filesystem-devlibboost-نظام الملفات1.33.1
MusicBrainzlibmusicbrainz4-devlibmusicbrainz4c2a
GStreamerlibgstreamer0.10-dev،libgstreamer-plugins-base0.10-devlibgstreamer0.10-0،libgstreamer-plugins-base0.10-0

المواد من مجموعة مستخدمي Bryansk Linux وwww.rm.pp.ru

لكل توزيعة خصائصها الخاصة لتجميع النواة، وتركز هذه المقالة تحديدًا على كيفية القيام بذلك في Debian Etch. ويكشف أيضًا عن مسألة كيفية تطبيق تصحيح معين على النواة عند الحاجة إلى دعم وظائف معينة أو معدات جديدة في نظامك. هذه المقالة مخصصة في المقام الأول للمستخدمين المدربين وليس هناك ضمانات بأن هذه الطريقة ستعمل كما ينبغي وأن جميع الإجراءات والمسؤوليات الموضحة تقع على عاتقك.

  1. ملحوظة
  2. تطبيق بقع
  3. تكوين النواة
  4. تجميع النواة
  5. تثبيت نواة جديدة
  6. مشاكل
  7. روابط

ملحوظة

سيتم وصف طريقتين لتجميع النواة. سيكون الخيار الأول هو إنشاء حزم .deb التي يمكن تثبيتها على نظامك أو على نظام آخر. الطريقة الثانية هي ما يسمى بالطريقة "التقليدية".

الطريقة الأولى. بناء النواة في حزم .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 وقدرات المعالج الخاص بك.

حل مشكلة إنشاء initrd.img

مؤخرًا، ظهر خطأ في دبيان، حيث أنه بعد تثبيت الحزم ذات النواة المجمعة باستخدام الطريقة الموضحة هنا، لا يتم إنشاء الملف /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 -l

linux-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.