لماذا يكون التجميع أفضل من التثبيت من المستودعات

في هذا الدليل الصغير ، سأشرح (وأعلمك) لماذا من الأفضل أن تقوم بتجميع برنامج (مثل Firefox ، Vlc ، إلخ) من كود المصدر الخاص به ، بدلاً من تنزيله (من مركز البرمجيات ، Yumex ، بكمن ، إلخ. ) والتثبيت.

أولا نذهب مع النظرية:

ما هو "ترجمة"؟

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

لماذا من الأفضل "التجميع"؟

عليك أولاً معرفة ما يلي لفهم السبب. ضع طريقة "خام" (بسيطة ، وليست احترافية للغاية ، إلخ) ، كل جنس (Pentium ، Core ، Atom ، إلخ) وأنواعه (Intel ، AMD ، ARM ، إلخ) تحتوي على تعليمات (برنامج مكتوب في المجمع يقوم بمعالجة الكود) الخاص بنموذجهم (Core i7 و Core i5 و Atom x2 و Phantom x8 و Arm وما إلى ذلك) ولديهم أيضًا إرشادات عامة لدى جميع أنواعهم.

عند تنزيل برنامج من المستودعات عبر مركز البرامج (مثل apt-get/Yumex/Yum/Pacman/إلخ)، يتم تثبيته تلقائيًا ويُقال إنه مُجمّع مسبقًا ليعمل على جميع المعالجات المتاحة (Intel وAMD). ولأنه برنامج مُجمّع مسبقًا، فإنه يفقد التعليمات الخاصة بطراز المعالج المحدد (تخيل لو أن برنامجًا مثل Firefox أو Chrome، اللذين يحتويان على أكثر من 7 أو 8 ملايين سطر برمجي، كان عليه تضمين جميع التعليمات الخاصة بكل معالج في السوق؛ سيكون حجم التعليمات البرمجية كبيرًا جدًا لدرجة أن البرنامج سيفقد كفاءته)، ويحتفظ فقط بالتعليمات العامة لمُنشئه (Intel، AMD، ARM).

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

بمزيد من التفاصيل التقنية ، ترتبط هذه الإرشادات المحددة ارتباطًا وثيقًا بما يُعرف بمجموعة شرائح اللوحة الأم ، وهو ما يمثل صداعًا كبيرًا لأولئك منا الذين لديهم Intel عندما نريد ترقية المعالج واللوحة الأم.

ستُفاجأ بقوة معالج AMD Atom x2 أو Intel Core i3 أو Core 2 Duo أو أي معالج آخر في حاسوبك القديم . الآن تفهم لماذا يُثار الكثير من الجدل حول تجميع نواة النظام الشهيرة (جوهر كل نظام تشغيل) في عالم لينكس؟ تخيّل لو كان بإمكانك تجميع نظام كامل خصيصًا لحاسوبك (بيئة رسومية (GNOME، KDE، إلخ)، نواة النظام، البرامج الشائعة الاستخدام (Firefox، VLC، Chrome، Wine، إلخ)) - ستُذهلك سرعة النظام وكفاءته.

مبدأ التجميع هذا للحصول على رمز مُحسَّن خصيصًا لجهازك هو المبدأ الذي تستخدمه توزيعات مثل Gentoo والمشتقات (والتي لن أتحدث عنها الآن ، فأنا أستخدم Fedora الحد الأدنى مع تجميع Gnome 3 والنواة والبرامج الأخرى) حيث يتم دائمًا تجميع النظام والتحديثات والبرامج الخاصة بك.

سلبيات التجميع:

لقد شرحت بالفعل جميع المزايا ، ولكن مثل كل شيء في الكون ، فإنه ضده.

في حالة التجميع هم ؛

  • الوقت اللازم لهذا (Firefox مع i7 4790K (بدون رفع تردد التشغيل لأنني سيئ للغاية مع الفولتية) يستغرق 3 دقائق ، Gnome Shell (لا شيء آخر) مع Gnome-Control-Center استغرقني حوالي دقيقتين ، كلاهما يتم تجميعهما في في نفس الوقت في Fedora. ولكن على جهاز به معالج أقل قوة يمكن أن تكون هذه المرة طويلة بشكل غير متناسب).
  • يستخدم المعالج 100٪ من طاقته مع كل النوى كحد أقصى ، لذا فإن الاستهلاك والحرارة يرتفعان (ضع ذلك في الاعتبار إذا كان لديك رفع تردد التشغيل أو إذا كان جهاز كمبيوتر محمول بشكل خاص) ، لذلك من المريح أن تقوم بإعداد رفيقة أو قهوة لهذه المناسبة.
  • ربما تفتقد مكتبة (أداة) تستخدم برنامجًا بحيث لا يخطئ في التجميع. بشكل عام ، تحتوي جميع التوزيعات على حزم أو مجموعات منها لتجنب ذلك (فهي مليئة بمكتبات مختلفة وأشياء أخرى تسمح للنواة بالتواصل كما ينبغي مع المعالج أثناء العملية).

كيف يمكنني التجميع؟

بالنسبة إلى Debian (Ubuntu ، و Mint ، و Elementary ، إلخ ، كلها مشتقات من هذا ، لذا اتبع هذا

أنا أتحدث هنا عن تجميع برنامج للاستخدام العادي ، وليس للنواة.

aptitude install build-essential dh-make devscripts fakeroot debhelper debian-policy ccache dh-autoreconf autotools-dev build-dep ardor

أضع debian-policy ، لكن إذا كانت توزيعةك ليست دبيان وتعطيك خطأً بعدم وجود مثل هذه الحزمة ، فتجاهلها فقط. يجب أن أوضح أنني لم أستخدم هذه الأنظمة لفترة طويلة ، لذلك إذا لم تعد الحزمة موجودة في المستودعات ، فلا تحدث مشكلة.

بالنسبة لفيدورا:

sudo yum -y تثبيت رؤوس kernel
تطوير النواة
sudo yum groupinstall "أدوات التطوير"
sudo yum groupinstall "مكتبات التطوير"

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

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

إذا كان لديك إمكانية تكوين نفسك لاختيار المكونات وغيرها:

./configure

ثم تكتب:

make

وأخيرًا لتثبيت البرنامج على نظام التشغيل Linux الخاص بك:

make install

كل هذا دائمًا مع الجذر (su في Fedora ، sudo su في Ubuntu ومشتقاته (Mint ، Elementary Os ، إلخ)

أوامر لفك الضغط باستخدام المحطة (يتم فك ضغط الملف في مجلد يوجد به الملف):

ملفات .Tar (القطران) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - حزمة | tar cvf file.tar / file / * Unpack | tar xvf file.tar عرض المحتوى | tar tvf file.tar
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .tar.gz - .tar.z - .tgz (tar with gzip ) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - حزمة و zip | tar czvf file.tar.gz / file / Unpack and unzip | tar xzvf file.tar.gz عرض المحتوى (غير مستخرج) | tar tzvf file.tar.gz
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .gz (gzip) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ضغط | ملف gzip -q (يضغط الملف ويعيد تسميته "file.gz") فك الضغط | gzip -d file.gz (الملف يفك ضغطه ويتركه كـ "ملف" ملاحظة: gzip يضغط الملفات فقط وليس الأدلة
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .bz2 (bzip2) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ضغط | ملف bzip2 | bunzip2 (يضغط الملف ويعيد تسميته "file.bz2") فك الضغط | bzip2 -d file.bz2 | bunzip2 file.bz2 (الملف يفك ضغطه ويتركه كـ "ملف") ملاحظة: يضغط bzip2 الملفات فقط ، وليس المجلدات
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .tar.bz2 (القطران مع bzip2) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ضغط | tar -c ملفات | bzip2> file.tar.bz2 فك ضغط | bzip2 -dc file.tar.bz2 | القطران xv | tar jvxf file.tar.bz2 (الإصدارات الحديثة من tar) اعرض المحتوى | bzip2 -dc file.tar.bz2 | القطران التلفزيون
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .zip (zip) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ضغط | zip file.zip / Mayo / archives Unzip | قم بفك ضغط file.zip عرض المحتوى | بفك ضغط ملف v.zip
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .rar (rar) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ضغط | رر -a file.rar / may / archives Unzip | rar -x file.rar عرض المحتوى | rar -v file.rar | rar -l file.rar

و هذا كل شيء. تحياتي من بوينس آيرس ، الأرجنتين. عطلات سعيدة وعام جديد! :).


أضف كمصدر مفضل في جوجل