بناء حزمة deb من المصادر. تعلم بناء حزم deb. خيارات التنظيف

08.09.2023

هذه المقالة ليست كاملة. يمكنك المساعدة في كتابتها

    تصحيح أسلوب المقال

    من خلال إضافة المزيد من المعلومات حول إعداد أكواد المصدر لنظام debianization

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

./ تكوين && جعل && جعل تثبيت جعل إلغاء التثبيت

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

تصنيف حالات التجميع

الحالات التالية لتجميع الحزمة ممكنة:

    البناء من المصدر؛

    التجميع من الملفات الثنائية؛

يتم أخذ أكواد المصدر أو الملفات الثنائية:

    ليس من المستودع؛

    من مستودع توزيع آخر؛

    من مستودع إصدار Ubuntu آخر، من PPA، أو من Debian؛

ديبيانايزيشن:

    غير متوفر؛

    مأخوذ من مستودع أوبونتو، من PPA أو من دبيان:

    • من نسخة أخرى للبرنامج؛

      من الإصدار الحاليالبرامج:

      • ليس من مستودع إصدار Ubuntu الحالي؛

        من مستودع إصدار Ubuntu الحالي؛

سبب التجمع:

    لا يحتوي مستودع Ubuntu الحالي ولا PPA على الإصدار المطلوب من البرنامج؛

    لسبب ما، أنت غير راض عن الإصدار المتاح من البرنامج (أنت غير راض عن رمز البرنامج أو البيانات، أو معلمات التكوين أو معلومات التحكم في الحزمة)؛

    كلاهما.

البناء من المصدر

ما هو المطلوب

دليل المبتدئين الكامل لمطور دبيان متاح.

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

سنحتاج على الأقل إلى البرامج المثبتة بواسطة الأمر

sudo apt-get install autoconf automake libtool autotools-dev dpkg-dev fakeroot

يمكنك أيضًا الحجز التلقائي - وهذه وثائق لأدوات مساعدة GNU Autoconf، وAutomake، وLibtool. وبالطبع ما تتطلبه أكواد المصدر نفسها للتجميع الصحيح.

إنشاء مفتاح التشفير

هذه الخطوة اختيارية ويمكن تخطيها.

لإنشاء مفتاح، انتقل إلى التطبيقات → الملحقات → كلمات المرور ومفاتيح التشفير. في النافذة التي تفتح، في القائمة مفتاح → مفتاح جديد، حدد المفتاح pgp. ملء الحقول الاسم الكامل و عنوان البريد الإلكتروني.

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

يمكنك إنشاء صندوق، إذا لم يكن لديك واحدًا بالفعل، على بعض العناصر الشائعة خادم البريد: على سبيل المثال، gmail.com أو yandex.ru.
وهذا سيسهل على شخص ما في المستقبل أن يتصل بك وهو لا يعرفك، ولكن لسبب أو لآخر صادف "شيئا" موقعا منك.
بعد ذلك، سيُطلب منك إدخال كلمة مرور كحماية إضافية. قد يكون من المفيد إذا كنت تستخدم مفتاح خاصعلى الأجهزة التي لا يمكنك الوثوق بها بنسبة 100%. الجانب السلبي هو أنه سيتعين عليك إدخال كلمة المرور الخاصة بك في كل مرة تقوم فيها بالتوقيع على شيء ما.

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

لقد قمت بإنشاء مفتاح - الآن يمكن استخدامه عند إنشاء الحزم.
للقيام بذلك، في الملف ~/.bashrc، أو في برنامج نصي آخر لبدء التشغيل لـ Shell المفضل لديك (لـ zsh ~/.zshrc)، تحتاج إلى إدخال المتغيرات

تصدير DEBEMAIL=your@email

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

dch -i

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

دبيان غير متوفر

لذلك ليس لدينا سوى gcoolprog-0.5.3.tar.gz.

أفعل عادة الخطوات التالية:

التحضير المسبق لدليل العمل

"http://<путь до файла>" #يمكنك بالطبع تنزيله من خلال المتصفح فقط، لكنه عادةً ما يكون أسرع

نتلقى الملف gcoolprog-0.5.3.tar.gz. لنقم بفكها والانتقال إلى الدليل الناتج:

القطران zxvf gcoolprog-0.5.3.tar.gz cd gcoolprog-0.5.3

للتجميع الصحيح، يجب أن يحتوي الدليل الجذر ليس فقط على الاسم، ولكن أيضًا على الإصدار!

./ تكوين --prefix =/ usr && make

إذا اكتمل الأمر بنجاح، فكل ما تبقى هو ديبيانيز.

ديبيانايزيشن

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

Dh_make --createorig

ما الذي يجب أن نحصل عليه من الحوار التالي؟

نوع الحزمة: ثنائي واحد، ثنائي متعدد، مكتبة، وحدة kernel أو أقراص مضغوطة؟ اسم المشرف: دينيس عنوان البريد الإلكتروني:[البريد الإلكتروني محمي] التاريخ: الإثنين، 13 أغسطس 2007 12:40:33 +0400 اسم الحزمة: gcoolprog الإصدار: 0.5.3 الترخيص: فارغ نوع الحزمة: ضربة واحدة

للتأكيد: نشير هنا إلى إنشاء حزمة لشخص واحد.

ملف ثنائي

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

وصف: و بدلاً من
(بدون علامات الاقتباس الزاوية) تحتاج إلى إدخال وصف لنوع البرنامج.
هذه هي المعلومات التي سيراها المستخدم عندما ينظر إلى وصف الحزمة. النقطة الثانية هي تصحيح الملف
ديبيان/قواعد في القسمقوس ثنائي

: يجب عدم التعليق عليه (أي إزالة # في بداية السطر)

Dh_install
بدون هذا سوف نحصل على علبة فارغة. النقطة الثانية هي تصحيح الملفأحيانا

يحتوي فقط على:

%:درهم$@
ما هو المقبول باستخدام debhelper.

هذه الإعدادات ستكون كافية لبناء حزمة ببرنامج واحد لا يحتوي على مكتبات مشتركة، أي. فقط الثنائي الموجود في /usr/bin والبيانات الموجودة في /usr/share.

بناء الحزمة

الآن دعونا نجمع الحزمة:

في الدليل أعلاه، أي. في ~/src/gcoolprog/0.5.3، سوف نحصل على الملفات

Gcoolprog_0.5.3-1.diff.gz gcoolprog_0.5.3-1_i386.changes gcoolprog_0.5.3-1_i386.deb gcoolprog_0.5.3.orig.tar.gz

الآن يمكننا تثبيت الحزمة

dpkg -i *.deb

يتم أخذ عملية Debianization من مستودع Ubuntu أو من PPA أو من Debian

Debianization مأخوذ من نسخة أخرى من البرنامج

كما قلت من قبل، ربما سنكون محظوظين ويكفي مجرد تغيير الإصدار. ولكن دعونا لا نخمن.

أدناه لن أعلق على ما هو موضح في الحل السابق.

mkdir ~/ src/ gcoolprog mkdir ~/ src/ gcoolprog/ 0.5.3 cd ~/ src/ gcoolprog/ 0.5.3 wget "http://<путь до файла>"

نحصل على الملف gcoolprog-0.5.3.tar.bz2

Bunzip2 gcoolprog-0.5.3.tar.bz2 gzip gcoolprog-0.5.3.tar mv gcoolprog-0.5.3.tar.gz gcoolprog_0.5.3.orig.tar.gz

الآن دعونا نفكها

القطران zxvf ./gcoolprog_0.5.3.orig.tar.gz

قم بتنزيل الإصدار السابق من http://packages.ubuntu.com أو http://packages.debian.org، الملف gcoolprog_0.5.1.diff.gz(في الجزء السفلي من قسم مزيد من المعلومات حول gcoolprog)

wget "http://archive.ubuntu.com/ubuntu/pool/universe/g/gcoolprog/gcoolprog_0.5.1.diff.gz" gunzip gcoolprog_0.5.1.diff.gz patch -p0< ./ gcoolprog_0.5.1.diff

احصل على الدليل

~/src/gcoolprog/0.5.3/gcoolprog-0.5.1/ديبيان

انسخ الدليل gcoolprog-0.5.1/debian إلى الدليل ~/src/gcoolprog/0.5.3/gcoolprog-0.5.3

cp -a ~/ src/ gcoolprog/ 0.5.3/ gcoolprog-0.5.1/ debian ~/ src/ gcoolprog/ 0.5.3/ gcoolprog-0.5.3 dch -i

يغير هذا الأمر ملف دبيان/سجل التغيير، على سبيل المثال سنرى

Gcoolprog (0.5.1-1ubuntu2) مشاكس؛ الإلحاح = منخفض * - دينيس< ubuntu_user@ mail.ru>

ولكن بما أن لدينا الإصدار 0.5.3، فنحن بحاجة إلى تغيير القيم إلى

Gcoolprog (0.5.3-1ubuntu1) مشاكس؛ إلحاح = منخفض * إصدار جديد للمنبع.< ubuntu_user@ mail.ru>--دينيس

الاثنين 13 أغسطس 2007 14:13:27 +0400

حفظ التغييرات. يمكنك الآن تشغيل أمر الإنشاء في الحزمة.

Dpkg-buildpackage -rfakeroot

الحصول على الملفات

cd .. ls -1 gcoolprog_0.5.3-1 .diff.gz gcoolprog_0.5.3-1 _i386.changes gcoolprog_0.5.3-1 _i386.deb gcoolprog_0.5.3.orig.tar.gz dpkg -i * .deb

Debianization مأخوذ من الإصدار الحالي للبرنامج

لم يتم أخذ عملية Debianization من مستودع إصدار Ubuntu الحالي بالنسبة إلى Debian، يتعين عليك استخدام الموقع http://packages.debian.org، بالنسبة إلى Ubuntu - http://packages.ubuntu.com. ثم، على سبيل المثال، في Ubuntu نبحث عن الحزمة com.gcoolprog

في المستودع للإصدار المستقبلي.

لنقم أولاً بإعداد دليل العمل

mkdir ~/ src/ gcoolprog mkdir ~/ src/ gcoolprog/ 0.5.3 cd ~/ src/ gcoolprog/ 0.5.3

الآن قم بتنزيل ثلاثة ملفات

wget http:// archive.ubuntu.com/ ubuntu/ Pool/ Universe/ g/ gcoolprog/ gcoolprog_0.5.3-1 .dsc wget http:// archive.ubuntu.com/ ubuntu/pool/ Universe/ g/ gcoolprog/ gcoolprog_0 .5.3.orig.tar.gz wget http:// archive.ubuntu.com/ ubuntu/ Pool/ Universe/ g/ gcoolprog/ gcoolprog_0.5.3-1 .diff.gz

أو نفس الشيء، ولكن بأمر واحد

من الحزمة devscripts
ثم فك مع الأمر

Dpkg-source -x ./ gcoolprog_0.5.3-1 .dsc

سنحصل على الدليل gcoolprog-0.5.3 فلنذهب إليه ونغير الإصدار:

cd gcoolprog-0.5.3 dch -i gcoolprog (0.5.3-1ubuntu1) مشاكس؛ إلحاح = منخفض * backport من جريت - دينيس< ubuntu_user@ mail.ru>--دينيس

الآن يمكنك تجميع الحزمة

حفظ التغييرات. يمكنك الآن تشغيل أمر الإنشاء في الحزمة.

Dpkg-buildpackage -rfakeroot

مؤتمر نزع السلاح .. ليرة سورية -1 . gcoolprog_0.5.3-1 .diff.gz gcoolprog_0.5.3-1 _i386.changes gcoolprog_0.5.3-1 _i386.deb gcoolprog_0.5.3.orig.tar.gz dpkg -i * .deb

يتم أخذ Debianization من مستودع إصدار Ubuntu الحالي

في حالة وجود حزمة للإصدار المطلوب من البرنامج في مستودع إصدار Ubuntu الحالي، ولكنها لسبب ما ليست مرضية ويجب إجراء تغييرات على مصادرها (على سبيل المثال، تطبيق نوع من التصحيح ) وإعادة بنائها بناءً على ما هو موجود بالفعل في حزمة Debianization، يمكنك القيام بما يلي.

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

تحميل المصادر:

cd ~/ src apt-get مصدر com.gcoolprog

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

تثبيت حزم التطوير المطلوبة للتجميع:

sudo apt-get build-dep gcoolprog

نقوم بجمع الحزم:

cd gcoolprog-0.5.3 debuild -b -us -uc

يجب تشغيل debuild في الدليل المصدر. يتم تمرير خيارات -b -us -uc إلى برنامج dpkg-buildpackage. يتطلب الأول جمع الحزم الثنائية فقط، بينما يتطلب الثاني والثالث عدم التوقيع رقميًا، على التوالي، على الحزمة المصدر وملف التغييرات. ستكون الحزم الناتجة في الدليل بمستوى أعلى.

البناء من الملفات الثنائية

فيما يلي مثال لما يمكنك فعله في حالة توفر حزمة debian فقط وعدم وجود مصادر ديبيانية.

لنفترض أننا نعمل في الدليل ~/تمب. لنقم بإنشاء دليل فرعي ~/tmp/someprogلفك ملفات الحزمة، تحتاج إلى تشغيل

dpkg -x ~./tmp/some-prog-123 .deb ./someprog

من أجل استخراج معلومات التحكم، نقوم بالتنفيذ

mkdir ~/ tmp/ someprog/ DEBIAN dpkg -e ~/ tmp/ some-prog-123 .deb ./ someprog/ DEBIAN

حسنًا، الآن، من أجل إعادة كل شيء إلى الحزمة، عليك القيام بذلك

dpkg -b ./someprog ~/ tmp/ some-prog-123 -new.deb

في الكتالوج ~/tmp/someprog/DEBIANيحتوي على ملفات تصف ماهية الحزمة وما تعتمد عليه و المجاميع الاختباريةالملفات الموجودة فيه . من أجل بناء الحزمة الخاصة بك، تحتاج إلى وضع الملفات في الدليل ~/tmp/someprogكما لو كان الدليل الجذر، أي إذا كنت تريد تثبيت الملف فيه /usr/bin، عليك أن تضعه في الدليل ~/tmp/someprog/usr/bin، وبالتالي، إذا كان ينبغي أن يكون هناك شيء /إلخ، ثم في ~/tmp/someprog/etcإلخ.

ثم في ~/tmp/someprogقم بإنشاء دليل DEBIAN، وتأكد من استخدام الأحرف الكبيرة، وفيه ملف ~/tmp/someprog/DEBIAN/control، يصف هذا الملف اسم الحزمة وتبعياتها ووصفها، والتنسيق بسيط للغاية. على سبيل المثال:

الحزمة: libcurl3 الإصدار: 7.15.2-2 القسم: libs الأولوية: اختيارية البنية: i386 يعتمد على: libc6 (>= 2.3.5-1)، libcomerr2 (>= 1.33-3)، libidn11 (>= 0.5.18)، libkrb53 (>= 1.4.2)، libssl0.9.8 (>= 0.9.8a-1)، zlib1g (>= 1:1.2.1)، شهادات ca تقترح: libldap2 البدائل: libcurl2 (<< 1:7.11.2-2) Installed-Size: 324 Maintainer: Domenico Andreoli المصدر: curl الوصف: تم تصميم مكتبة نقل الملفات متعددة البروتوكولات libcurl لتكون مكتبة نقل ملفات متعددة البروتوكولات قوية وقابلة للاستخدام وموثوقة ومحمولة.

.

يتم توفير دعم SSL بواسطة OpenSSL.

لتمكين حزمة دعم LDAP، يلزم توفر libldap2-dev.

. هذه هي النسخة المشتركة من libcurl.و .الصفحة الرئيسية: http://curl.haxx.se حسنًا، قم الآن بتجميع:/dpkg -b ./someprog some-prog-123 -new.debهذه المعلومات كافية لتجميع/إعادة تجميع حزمة بسيطة. في الواقع، يمكنك أيضًا تشغيل البرامج النصية عند تثبيت الحزمة، وعند إلغاء تثبيتها، وغير ذلك الكثير مما يحتاجه المشرف العادي.

في كثير من الأحيان تتوفر بعض الباقات في الفروع هذه هي النسخة المشتركة من libcurl.غير مستقر

تجريبي هذه هي النسخة المشتركة من libcurl.و .، ومع ذلك فهو ليس في الفروع مستقراختبار .. أرغب حقًا في تثبيت البرنامج، لكن تحديث نصف النظام أمر مخيف أو غير مرغوب فيه.

هناك مصدر رائع لمثل هذه الحالات، وهو backports.org، ولكن استخدامه يشبه في كثير من النواحي استخدام الفروع مباشرة

ويسبب في بعض الأحيان المزيد من المشاكل بسبب الصراعات الدورية بين المناطق الخلفية وغير المستقرة.

في معظم الحالات، قم بتثبيت حزمة من

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

من

بادئ ذي بدء، نحن بحاجة إلى تكوين شقة-الحصول علىللعمل مع مستودعات Debian src. للقيام بذلك، أضف إلى ملفك /etc/apt/sources.listالسطور التالية:

deb-src http://ftp.debian.org/debian اختبار المساهمة الرئيسية غير الحرة deb-src http://ftp.debian.org/debian sid المساهمة الرئيسية غير الحرة deb-src http://ftp.debian .org/debian المساهمة الرئيسية التجريبية غير مجانية

بالطبع، يمكنك اختيار أي مرآة حزمة - تلك التي تستخدمها في أغلب الأحيان. بعد تغيير الملف /etc/apt/sources.listاجعلها تقليدية

#apt-الحصول على التحديث

القليل من النظرية

ما هي حزمة src على نظام دبيان؟

حزمة debian src هي الكود المصدري للبرنامج، الذي يرجى توفيره من قبل المؤلف بموجب ترخيص أو آخر، مكملاً بعدة نصوص برمجية (يقدمها مشرف الحزمة) التي تبني الحزمة.

جميع البرامج النصية والملفات وما إلى ذلك المتعلقة بإنشاء حزمة على نظام دبيان موجودة تقليديًا في الدليل الفرعي ديبيان/جنبا إلى جنب مع النصوص المصدر.

تتكون حزمة Debian src عادةً من عدة ملفات:

    package-version.dsc- ملف نصي يتضمن قائمة بالملفات الضرورية الأخرى؛

    package-version.orig.tar.gz- أرشفة الكود المصدري للبرنامج؛

    package-version.diff.gz- تصحيح للأرشيف بالكود المصدري للبرنامج، وإضافة دليل دبيان/ المذكور أعلاه إليهم، وربما يحتوي أيضًا على تصحيحات تم إجراؤها على الكود المصدري بواسطة المشرف.

ملحوظة: بعض تشمل الدليل ديبيان/مباشرة إلى الأرشيف مع رموز المصدر. ينطبق هذا بشكل أساسي على البرامج المطورة خصيصًا لديبيان. في هذه الحالة، بدلا من الملفات .orig.tar.gzو .diff.gzسيكون هناك ملف واحد package-version.tar.gz.

استلام وتفريغ الحزمة المصدر

$ apt-get الحزمة المصدر

بالنسبة لحالتنا مع Fluxbox ستبدو كما يلي:

$ apt-get source Fluxbox قراءة قوائم الحزم... تم إنشاء شجرة التبعية... تم الانتهاء تحتاج إلى تنزيل أرشيفات مصدر بحجم 1033 كيلو بايت.

للعثور على قائمة الإصدارات في المستودعات المتاحة، يمكنك استخدام الأمر

سياسة $apt-cache<имя пакета>

ونتيجة لهذا الإجراء، كما يتبين من السجل أعلاه، تم تنزيل الملفات الضرورية من المرآة (التي سجلنا فيها /etc/apt/sources.list) وتم تفكيك المصادر وتم تطبيق التصحيح عليها .diff.gz.

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

$ dpkg-source -xfluxbox_0.9.15.1+1.0rc2-1.dsc

يمكنك أيضًا استخدام الأداة المساعدة dget، والتي ستقوم بتنزيل الحزمة بأكملها وتفريغ المصادر على الفور:

dget www.path.to/fluxbox_0.9.15.1+1.0rc2-1.dsc

قليلا عن بنية دليل دبيان/

يتم تنفيذ كافة الإجراءات الخاصة بتجميع الحزم من الدليل المصدر، والذي تم الحصول عليه عند تفريغ أرشيف src. يوجد دليل debian/ أيضًا في هذا الدليل.

سنهتم في هذا الدليل بشكل أساسي بملفين:

    النقطة الثانية هي تصحيح الملف- يقوم هذا البرنامج النصي ببناء الحزمة فعليًا (وهو ملف Makefile عادي)؛

    ديبيان/التحكم- سيزودنا هذا الملف النصي ببعض المعلومات التي سنحتاجها أدناه؛

أولاً، في الملف الأخير، نحن مهتمون بسطر واحد لحزمتنا مستقريبدو مثل هذا:

    يعتمد البناء على: libx11-dev، libxext-dev، libxft-dev، libxinerama-dev، libxpm-dev، libxrandr-dev، x-dev، libxt-dev، debhelper (>=4.1.0)، libxft-dev، libx11 -dev، libxext-dev، libxft-dev، libxinerama-dev، libxpm-dev، libxrandr-dev، x-dev، libimlib2-dev، libgtk2.0-dev، cdbs

كما ترون، هذه مجرد قائمة بالحزم التي نحتاجها أثناء التجميع.

بناء التبعيات

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

تثبيت تبعيات البناء

حالة بسيطة: كل شيء نجح في المرة الأولى

إذا كان لديك شقة-الحصول علىتم تكوينه كما هو مذكور أعلاه، وفي معظم الحالات يمكن تثبيت التبعيات باستخدام أمر واحد:

# apt-get build-dep Fluxbox

بالنسبة لحزمة Fluxbox التي ندرسها، سيتم تثبيت كل ما تحتاجه دون مشاكل، ويمكنك الانتقال إلى القسم (أدناه) بناء الحزمة.

التبعيات المطلوبة مفقودة من التوزيع الخاص بي

هناك خياران ممكنان هنا.

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

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

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

هذه الإعدادات ستكون كافية لبناء حزمة ببرنامج واحد لا يحتوي على مكتبات مشتركة، أي. فقط الثنائي الموجود في /usr/bin والبيانات الموجودة في /usr/share.

تجميع سهل

لذلك، تم تثبيت كل ما نحتاجه للتجميع. كل ما تبقى هو تجميع الحزمة بالفعل. لهذا نحن بحاجة إلى فائدة com.fakeroot، قم بتثبيته إذا لم تكن قد قمت بتثبيته بالفعل.

انتقل إلى الدليل الذي يحتوي على حزمة src التي تم فك حزمتها وأصدر الأمر:

  • $dch -i

بشكل منفصل، تحتاج إلى النظر في الإصدار الذي سيتم الإشارة إليه في سجل التغيير.

  • لا ينبغي أن يكون هذا هو الإصدار الموجود في المستودع الرسمي (لتجنب الارتباك)
  • إذا كنت تقوم فقط بتنفيذ منفذ خلفي، فيجب أن يكون الإصدار أقل من الإصدار الذي تم بناء الحزمة عليه (حتى لا تكون هناك مشاكل عندما تدخل هذه الحزمة في الاختبار، ثم إلى مستقرة وتحاول ترقية التوزيع). أضف السطر ~backports1إلى رقم الإصدار في هذه الحالة. لاحقًا، إذا كانت هناك حزمة بنفس رقم الإصدار في المستودعات، فسيقوم نظامك بتحديثها. رقم 1 V في هذه الحالةقد يعني رقم البناء الخاص بك، والكلمة backportsيمكن استبداله بأي شيء آخر سيكون أكثر إفادة.

وعلى هذا يكون من الصحيح إضافته إلى الإصدار -ما الخط1، إذا قمت بتعديل شيء ما بشكل ملحوظ، أو ~ ما الخط 1، إذا قمت بعمل backport.

$ fakeroot ./debian/rules ثنائي أو $ dpkg-buildpackage -rfakeroot أو #debuild

ونتيجة لذلك، سيتم تجميع الحزمة الثنائية التي بدأت الفوضى من أجلها في الدليل الأصلي.

يمكن أن تنشأ المشاكل في هذه الخطوة فقط في حالتين:

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

ارجع بضع خطوات وحاول مرة أخرى.

إذا لم يكن هناك سوى أرشيف مع المصادر

لذلك لدينا فقط Fluxbox-0.9.15.tar.bz2. عادةً ما أقوم بالخطوات التالية: التحضير المسبق لدليل العمل:

mkdir ~/src/fluxbox mkdir ~/src/fluxbox/0.9.15 cd ~/src/fluxbox/0.9.15 wget "http://<путь до файла>"(يمكنك، بالطبع، تنزيله ببساطة من خلال متصفح، ولكنه عادة ما يكون أسرع)

نحصل على ملف Fluxbox-0.9.15.tar.bz2. بالنظر إلى الأمام قليلاً، فلنعالج الملف باستخدام برنامج gzip.

Bunzip2 Fluxbox-0.9.15.tar.bz2 gzip Fluxbox-0.9.15.tar

لنحصل على Fluxbox-0.9.15.tar.gz، ونعيد تسميته:

mv Fluxbox-0.9.15.tar.gz Fluxbox_0.9.15.orig.tar.gz

(على سبيل المثال، قمنا بفصل الاسم والإصدار بشرطة سفلية وبعد الإصدار أضفنا الكلمة orig:fluxbox_0.9.15.orig.tar.gz) الآن قم بفك ضغطها (ولكن لا تقم بحذفها تحت أي ظرف من الظروف!):

القطران zxvf ./fluxbox_0.9.15.orig.tar.gz cd Fluxbox-0.9.15

للتجميع الصحيح، يجب أن يحتوي الدليل الجذر ليس فقط على الاسم، ولكن أيضًا على الإصدار! أدناه سنعتبر الدليل ~/src/fluxbox/0.9.15/fluxbox-0.9.15 هو الدليل الجذر للمصادر. بعد ذلك نقوم بإجراء التجميع "الخام". أولئك. نحن نفعل كالمعتاد

./configure --prefix=/usr && make

(لكننا لا نقوم بتثبيته!) إذا تمت تهيئته بجميع الخيارات الضرورية وتم تجميعه في ملف ثنائي، فكل ما يتبقى هو تحويله إلى دبيان.

إذا لم يكن هناك سوى حزمة deb

قم بفك الحزمة في المجلد /tmp/program/

برنامج $ dpkg -x*.deb /tmp/program

لتفريغ معلومات الحزمة، تحتاج إلى تشغيل:

mkdir /tmp/program/DEBIAN $ dpkg -e Program*.deb /tmp/program/DEBIAN

الآن يمكنك إجراء تغييرات. لإعادة تجميع الحزمة، قم بما يلي:

$ dpkg - b /tmp/program Program-new*.deb

ديبيانايزيشن

الهدف من هذا الإجراء برمته هو إنشاء دليل دبيان في الجذر المصدر، مع ملفات التكوين والبرامج النصية الضرورية. للقيام بذلك، في جذر التعليمات البرمجية المصدر (~/src/fluxbox/0.9.15/fluxbox-0.9.15)، قم بتنفيذ ما يلي:

dh_make نوع الحزمة: ثنائي واحد، ثنائي متعدد، مكتبة، وحدة kernel أو أقراص مضغوطة؟ اسم المشرف: دينيس عنوان البريد الإلكتروني:اسم المشرف: فرانك عنوان البريد الإلكتروني: التاريخ: Wen، 20 مايو 2011 12:40:33 +0200 اسم الحزمة: Fluxbox الإصدار: 0.9.15 الترخيص: GPLv3 نوع الحزمة: Single Hit

للتأكيد:

هنا نطلب منه إنشاء حزمة لملف ثنائي واحد. إذا لم نقم بإعادة تسمية الأرشيف، فسنتلقى الرسالة التالية:

تعذر العثور علىfluxbox_0.9.15.orig.tar.gz إما أن تحدد ملفًا بديلاً لاستخدامه مع -f، أو أضف --createorig لإنشاء ملف. ديبيان/التحكم:

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

وصف: و وصف:

  • (بدون علامات الاقتباس الزاوية) تحتاج إلى إدخال وصف لنوع البرنامج. هذه هي المعلومات التي سيراها المستخدم عندما ينظر إلى وصف الحزمة في Synaptic. النقطة الثانية هي تصحيح ملف دبيان/القواعد في قسم القوس الثنائي: تحتاج إلى إلغاء التعليق عليه (أي إزالة # في بداية الخط)

dh_install

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

dpkg-buildpackage -rfakeroot

في الدليل أعلاه، أي. في ~/src/fluxbox/0.9.15، سنحصل على الملفات:

cd .. ls -1fluxbox_0.9.15-1.diff.gzfluxbox_0.9.15-1_i386.changesfluxbox_0.9.15-1_i386.debfluxbox_0.9.15.orig.tar.gz

تثبيت الحزمة

بعد تجميع الحزمة، كل ما تبقى هو تثبيتها باستخدام الأمر:

أو قم بإدراجه كجزء من مستودعك الخاص. هذه أشياء أساسية بالفعل في نظام دبيان، لذلك تم وصفها في مقالات ويكي أخرى.

البناء من خلال إنشاء صور نظام نظيفة

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

إن التجذير في بيئة نظيفة هو الحل الجيد... هل أنت خائف؟ لقد سُرق كل شيء أمامنا بالفعل.

بناء حزمة باستخدام pbuilder

يبسط البرنامج التفاعلي هذه العملية بشكل جيد. com.pbuilder. قم بتثبيت الحزمة com.pbuilder، ثم افتح /etc/pbuilderrc للتحرير وأدخل عنوان مستودعك المفضل.

قم بتشغيل الأوامر:

# تحديث pbuilder # pbuilder إنشاء --التوزيع """sarge"""

النظام جاهز للاستخدام.

بدلا من الاسم رقيباستبدل اسم التوزيع الخاص بك.

الآن لبناء الحزمة للتوزيع المحدد، قم بإصدار الأمر:

# بناء pbuilder package-version.dsc

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

بناء حزمة باستخدام باني البقر

сowbuilder هو من حزمة Cowdancer - وهو نظير لـ pbuilder، فقط يقوم بتخزين صورة نظام التجميع ليس في tar.gz ولكن في شكل موسع، وأثناء التجميع يقوم بنسخ هذه الصورة باستخدام تقنية النسخ عند الكتابة، والتي يسرع التجميع.

مثال التكوين /etc/pbuilderrc:

BUILDPLACE=/var/cache/pbuilder/build/ USEPROC=yes USEDEVPTS=yes USEDEVFS=no BUILDRESULT=/var/cache/pbuilder/result/ # لدي تخزين مؤقت لـ apt-cacher، لذلك قمت بتعطيل التخزين المؤقت للحزم داخل pbuilder #APTCACHE=" /var/cache/pbuilder/aptcache/" APTCACHE="" REMOVEPACKAGES="" HOOKDIR="" تصدير DEBIAN_FRONTEND="noninteractive" DEBEMAIL="Alexander GQ Gerasiov< اسم المشرف: دينيس عنوان البريد الإلكتروني:>" BUILDSOURCEROOTCMD = "fakeroot" PBUILDERROOTCMD = "sudo" DEBBUILDOPTS = "" APTCONFDIR = "" BUILDUSERID = 1000 BUILDUSERNAME = gq تصدير LOGNAME = gq BINDMOUNTS = "" إلغاء تعيين DEBOOTSTRAPOPTS Export PATH = "/usr/sbin:/usr/bin: /sbin:/bin:/usr/X11R6/bin"export SHELL=/bin/bash DEBOOTSTRAP="cdebootstrap" PKGNAME_LOGFILE_EXTENTION="_$(dpkg --print-architecture).build"

يمكنك إنشاء صورة النظام دون استخدام التكوين:

# Cowbuilder - create -distribution sid -architecture i386

الآن قم بتسجيل الدخول إلى نظام نظيف:

# Cowbuilder --login --save # aptitude install devscripts

يعد الخروج من البيئة أمرًا قياسيًا؛ ابحث عن الحزم المجمعة في /var/cache/pbuilder.

خروج أو Ctrl+D

بناء الحزمة في بيئة نظيفة

كيف الآن لتجميع الحزمة في البيئة المطلوبة. أولا من الكتالوج الخاص بنا<имя пакета>-<версия апстрим>مع النسخة المعدلة والبناء المصحح، نقوم بتجميع الحزمة المصدرية للإصدار الجديد:

dpkg-buildpackade -rfakeroot -S

انتقل إلى الدليل أعلاه حيث يتم جمع الملف<имя пакета>_<версия>.dsc (حيث يوجد الإصدار، هذا هو الإصدار الخاص بنا مع "~backport") ونقول

pbuild --dist sarge<имя пакета>_<версия>.dsc

إذا حدث خطأ (على سبيل المثال، بسبب مشاكل التبعية)، فارجع إلى الخطوة 1 وقم بتصحيح الأخطاء. إذا سار كل شيء على ما يرام، إذن الحزم المجمعةسينتهي الأمر في الدليل /var/cache/pbuilder/results. هذا كل شيء.

لتحديث الصور (خاصة المتعلقة بالاختبار) أستخدم الأمر

pbuild --dist etch --update

مثال لبرنامج التشغيل الآلي: || ||

مثال لبرنامج نصي للتشغيل الآلي لإصدارات متعددة: || ||

إزالة تبعيات البناء

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

$ deborphan أو $ deborphan -guess-dev أو احذفه مباشرة: # deborphan -guess-dev | xargs apt-get إزالة -purge -y

أو برنامج نصي (تم اختباره بافلو روديج):

# aptitude markauto $(apt-cache showrc PACKAGE_NAME | grep Build-Depends | perl -p -e "s/(?:[\[(].+?[\])]|Build-Depends:|,|\| )//ز")
المؤلف: مايكل ريد
تاريخ النشر: 4 يناير 2014
ترجمة: ن. رومادانوف
تاريخ النقل: يونيو 2014

سنخبرك بكيفية إنشاء النوعين الأكثر شيوعًا حزم لينكسلتوزيع البرامج، ويمكنك توزيع الحزم الخاصة بك بنفسك.

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

سنبدأ بدليل الإنشاء ملفات DEB((.deb) للتوزيعات المشتقة من دبيان - لهذا نستخدم Xubuntu كقاعدة لنا. بعد ذلك، سنشرح بالتفصيل الطرق المطلوبة لإنشاء حزم RPM لاستخدامها في التوزيعات المشتقة من دبيان القبعة الحمراءولهذا سوف نستخدم فيدورا. من الممكن غالبًا إنشاء حزمة على توزيعة واحدة ثم تثبيتها على توزيعة ذات صلة (مثل Ubuntu>Debian)، ولكن إذا كان ذلك مهمًا، فقد ترغب في تجربتها بنفسك.

أما بالنسبة للبرنامج، فسنستخدم متصفح الويب Dillo خفيف الوزن كمثال لحزمة مبنية على كود المصدر. عند البناء من المصدر، إذا لم يعمل البناء كما هو متوقع، يمكنك كالمعتاد البحث عن حلول على الإنترنت. على سبيل المثال، في حالة Dillo 3.0.3، وبسبب خطأ في أرشيف التعليمات البرمجية المصدر، كان علينا إضافة "LIBS = -lX11" قبل أوامر البناء حتى تعمل الأوامر.

يتم البناء على سطر الأوامر

موارد

التثبيت (أو الجهاز الظاهري) لـ Ubuntu وFedora

وصف خطوة بخطوة

الخطوة 01:باستخدام آلة افتراضية

غالبًا ما يكون استخدام أدوات المحاكاة الافتراضية مثل VirtualBox أو Vmware هو أفضل أسلوب لإنشاء حزم للأنظمة الأخرى. من ناحية، يسمح لك هذا الأسلوب بالحفاظ على تثبيت أساسي نظيف نسبيًا، مقارنة بالإعدادات التي من المحتمل أن يعمل بها الآخرون. وهذا يعني أيضًا أنه يمكنك الحصول على مجموعة من الأنظمة المستهدفة باستخدام توزيعات مختلفة. بالإضافة إلى ذلك، تسمح لك معظم أدوات المحاكاة الافتراضية بمحاكاة بنيات مختلفة، وبالتالي يمكن لمنصة 32 بت تشغيل أنظمة تشغيل 64 بت، على الرغم من أن الأداء سيتأثر.

الخطوة 02:لنبدأ من الصفر

إذا حدث خطأ ما في Ubuntu أو Fedora، فمن الآمن تمامًا حذف الدليل المصدر والبدء من جديد. لاحظ أن أدوات دبيان تقوم بتعديل الأرشيف الأصلي، لذلك سيتعين عليك البدء من نسخة جديدة.

الجزء 1: ديبيان

الخطوة 03:تثبيت بيئة البناء

سنبدأ بتثبيت معظم الأدوات التي نحتاجها لإنشاء برامج من كود المصدر. اطلب:

$ Sudo apt-get install build-essential autoconf automake autotools-dev

نحتاج الآن إلى تثبيت الأدوات المستخدمة للعمل مع حزم DEB. قم بذلك باستخدام الأمر التالي ...

$ sudo apt-get install dh-make debhelper devscripts fakeroot xutils lintian pbuilder

الخطوة 04:قم بإنشاء مفتاح GPG

إذا لم تكن قد أنشأت مفتاحًا عامًا لـ GPG في الماضي، فستحتاج إلى إنشاء واحد الآن حتى تتمكن من توقيع الحزم. أدخل أولاً النص gpg –gen-key. حدد القيم الافتراضية، وعندما يُطلب منك ذلك، أدخل اسمك الحقيقي ومعلومات الاتصال الخاصة بك. قم بتدوين جميع البيانات بعناية، لأننا سنحتاج إلى مطابقتها تمامًا في ملف التكوين لاحقًا. بعد ذلك، اكتب الأمر ls ~/.gnupg للتأكد من وجود المفتاح الجديد (هذا هو الملف_lastname.gpg). قم بإنشاء مفتاح عام منه:

Gpg -a --output ~/.gnupg/.gpg --export "[اسمك]"

قم باستيراده باستخدام:

Gpg --import ~/.gnupg/.gpg

الخطوة 05:قم بتنزيل الحزمة

في هذا المثال سنقوم بتنزيل وبناء المزيد أحدث نسخةمتصفح الويب ديلو. انتقل إلى موقع Dillo (www.dillo.org) وقم بتنزيل أحدث archive.tar.bz. استخدم الأمر mkdir ~/srcand لإنشاء دليل للكود المصدري ونقل الأرشيف إليه.

الخطوة 06:قم بفك ضغط الأرشيف

قم بفك ضغط الأرشيف باستخدام الأمر tar -xjvf [اسم الأرشيف].tar.bz2. لاحظ أن اتباع اصطلاحات تسمية الدليل (packagename-version) مهم لأغراضنا، ولحسن الحظ فإن حزمة Dillo تتبعها. من المهم أيضًا أن يكون أرشيف الكود المصدري أعلى بمستوى واحد من دليل الكود المصدري.

الخطوة 07:التكوين لديبيان

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

Dh_make -e -c الترخيص -f ../

في مثالنا، سطر الأوامرسوف تبدو مثل هذا:

Dh_make -c gpl3 -e اسم المشرف: دينيس عنوان البريد الإلكتروني:-f ../dillo-3.0.3.tar.bz2

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

الخطوة 08:فتح ملف التحكم

فتح في محرر النصوصملف التحكم في دليل دبيان الفرعي. أكمل قسم الصفحة الرئيسية (استخدم Google لإكمال قائمة أقسام برنامج دبيان) وحقول الوصف لهذا الملف.

الخطوة 09:استكشاف التبعيات الموجودة لديك

يمكنك البحث عن التبعيات المطلوبة لتشغيل برنامج يأتي كحزمة. انتقل إلى الدليل الذي يحتوي على الكود المصدري واكتب الأمر dpkg-depcheck -d ./configure في الجهاز. إذا قمت بذلك، سوف تتلقى أخطاء تشير إلى الحزمة المفقودة المطلوبة لإنشاء البرنامج (يتم توفيرها بشكل منفصل). يمكنك فتح هذه الحزمة عن طريق كتابة sudo apt-get build-dep [اسم الحزمة]، والذي من شأنه أن يساعدك إذا كان مستودع التوزيع الخاص بك يدعم الحزمة. إذا لم يكن مدعومًا، فسيتعين عليك تشغيل dpkg-depcheck -d ./configur بشكل متكرر وإضافة الحزم يدويًا عن طريق كتابة psudo apt-get install [package name].

الخطوة 10:إضافة التبعيات إلى ملف التحكم

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

حاول إكمال هذه الخطوة بقدر ما تستطيع ولا تتخطاها. المصدر: - هذه عادة هي الصفحة الرئيسية للمشروع. في قسم الملفات: * استبدل معلومات حقوق النشر بأسماء مؤلفي المشروع. يمكنك الاطلاع على مثال لملء قسم Files: debian/*، حيث يجب إدخال المعلومات ذات الصلة. قد يتعين عليك أن تكون محققًا قليلاً للعثور على المعلومات التي تحتاجها. ابحث في الدليل المصدر عن ملفات مثل AUTHORS وCOPYING.

الخطوة 12:تحرير ملف سجل التغيير

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

الخطوة 13:إنشاء حزمة

إذا تم تكوين كل شيء بشكل صحيح، فيمكننا أخيرًا إنشاء حزمة DEB. انتقل إلى الدليل المصدر وقم بتشغيل dpkg-buildpackage -b لإنشاء الحزمة التي سيتم وضعها في الدليل ~/src/. على سبيل المثال، قم بإنشاء حزمة باستخدام الأمر dpkg -I [package] . للتحقق من الامتثال لسياسات دبيان، قم بتشغيل برنامج Lintian باستخدام الأمر lintian [package]. يرجى ملاحظة أن هذه الأداة صارمة للغاية وأن الأمر متروك لك لتقرير ما إذا كانت بعض التحذيرات البسيطة المتعلقة بعدم الامتثال مقبولة بالنسبة لك. أخيرًا، قم بتثبيت الاتفاق باستخدام الأمر sudo dpgk -i [package].

الجزء 2: إنشاء حزم RPM في فيدورا

الخطوة 14:فتح ملف التحكم

قم بالتبديل إلى وضع المستخدم الجذر عن طريق كتابة su. ابدأ بمجموعة تثبيت أدوات التطوير في yum، ثم استخدم yum لتثبيت أداة حزم gcc-c++ fedora-. اكتب الأمر usermod -a -G mock لإضافة المستخدم الخاص بك إلى المجموعة الوهمية. يتيح لنا ذلك تنفيذ إجراء الإنشاء دون الحاجة إلى أن تصبح جذرًا.

الخطوة 15:إنشاء بيئة البناء

اضغط على Ctrl + D للخروج من دور الجذر. اكتب rpmdev-setuptree لإنشاء شجرة الدليل (ضمن ~/rpmbuild) التي نحتاجها.

الخطوة 16:قم بتنزيل الأرشيف ونقله إلى الموقع المطلوب

قم بتنزيل حزمة Dillo من موقع Dillo وانقل الأرشيف إلى الدليل المناسب - اكتب mv [اسم الأرشيف] ~/rpmbuild/SOURCES.

الخطوة 17:قم بإنشاء ملف .spec

تستخدم التوزيعات المستندة إلى Red Hat، مثل Fedora، ملفات ‎.spec لتحديد عملية الإنشاء. قم بالتغيير إلى الدليل الذي يحتوي على مثل هذه الملفات باستخدام cd ~/rpmbuild/SPECS/andcreateablank.spec وقم بإنشاء ملف .spec فارغ باستخدام rpmdev-newspec dillo.

الخطوة 18:قم بتحرير الملف .spec

اكتب الأمر gedit dillo.spec. املأ حقول الإصدار والملخص والترخيص (في هذه الحالة، يشير عنوان URL إلى GPLv3+). الصفحة الرئيسيةمشروع؛ يحدد Source0 عنوان كود المصدر. قم بتقديم التعليقات في الحقلين BuildRequires وRequires. أضف وصفًا كاملاً إلى منطقة الوصف %.

الخطوة 19:بناء التعليمات البرمجية المصدر

إذا كانت الحزمة مدعومة على الإطلاق على النظام، فقم بتشغيل الأمر yum-builddep [اسم الحزمة]. بخلاف ذلك، سيتعين عليك تكرار أمر الإنشاء لتلقي رسائل خطأ، أو البحث عن الوثائق في أرشيف التعليمات البرمجية المصدر. في دليل SPEC، اكتب rpmbuild -ba[package name].spec. إذا فشل هذا الإصدار وأبلغ عن ملفات إضافية غير مضغوطة، فقم بتمييز قائمة الملفات هذه وانسخها إلى قسم %files في الملف.spec وأعد إصدار أمر الإنشاء. سيتم الآن وضع الحزمة في دليل RPMS. اكتب rpm -ivh [package] لتثبيته. اكتب الأمر rpm -qa | grep [package] للتأكد من تثبيته.

مقدمة

حزمة Deb عبارة عن أرشيف عادي للملفات التي تحتوي على ملفات مخصصة للتثبيت على النظام، بالإضافة إلى بعض ملفات الخدمة الضرورية لجعل هذا التثبيت مرنًا.

    Archive control.tar.gz، الذي يحتوي على نصوص برمجية كتبها مشرف الحزمة، وتستخدم عند تثبيت/إلغاء تثبيت الحزمة، بالإضافة إلى ملفات الخدمة الأخرى؛

    أرشفة data.tar.gz التي تحتوي على الملفات الثنائية للبرنامج الذي تم إنشاء الحزمة من أجله؛

    ملف ديبيان الثنائي.

نظرًا لأن محتويات الحزمة قد تتغير في المستقبل (سيكون هناك رقم جديدالإصدار في debian-binary)، ثم أنشئ حزمة deb باستخدام برامج القطرانلا يُنصح باستخدام , gzip, ar ولن يتم أخذ هذا الخيار في الاعتبار في المقالة.

يتم تجميع الحزمة بواسطة برنامج dpkg من بنية دليل معدة خصيصًا:

    المسار/إلى/دير/ملف1

    المسار/إلى/dirX/fileX

    الملفات والأدلة المعدة للتثبيت على النظام. موقعهم في الأرشيف يتوافق مع موقعهم فيه نظام الملفاتإذا عدت من الجذر. على سبيل المثال، الملف usr/share/doc/package/copyright الموجود في أرشيف deb بعد التثبيت سيكون موجودًا في /usr/share/doc/package/copyright (سيتم تجميعها جميعًا في أرشيف data.tar.gz) ;

    دليل DEBIAN/، الذي يحتوي على معلومات الخدمة حول الحزمة. سيتم تجميع محتويات هذا الدليل أثناء التجميع في أرشيف control.tar.gz؛

إنشاء حزمة Geany (بيئة تطوير متكاملة سريعة وخفيفة الوزن)

تكوين

يعرض أمر التكوين، الذي يتم تشغيله باستخدام مفتاح المساعدة –، قائمة من المعلمات التي يمكن تمريرها إليه.

$ ./configure... التحقق من نمط التبعية لـ gcc... (مخزن مؤقتًا) gcc3 التحقق من g++... لا التحقق من c++... لا التحقق من gpp... لا التحقق من aCC... لا التحقق من CC ... لا التحقق من cxx... لا التحقق من cc++... لا التحقق من cl.exe... لا التحقق من لجنة الاتصالات الفدرالية... لا التحقق من KCC... لا التحقق من RCC... لا التحقق من xlC_r... لا يوجد فحص لـ xlC... لا يوجد تحقق مما إذا كنا نستخدم مترجم GNU C++... لا يوجد تحقق مما إذا كان g++ يقبل -g... لا يوجد فحص لنمط التبعية لـ g++... لا شيء تكوين: خطأ: لا يوجد C++ لم يتم العثور على المترجم. الرجاء تثبيت مترجم C++.

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

    المكتبة الديناميكية اللازمة لتشغيل البرامج المترجمة بالفعل؛

    حزمة بنفس الاسم ومع اللاحقة -dev، والتي تحتوي على الملفات المطلوبة لتجميع البرامج

تثبيت الحزم المطلوبة.

# aptitude install autoconf automake libtool autotools-dev dpkg-dev fakeroot intltool-debian intltool ... سيتم تثبيت الحزم الجديدة التالية: autoconf automake autotools-dev build-essential(a) dpkg-dev g++(a) g++-4.3( أ) gettext(a) intltool intltool-debian libltdl7-dev(a) libstdc++6-4.3-dev(a) libtool m4(a) 0 تحديث الحزم، 14 تثبيت جديد، 0 حزم محددة للإزالة، و0 حزم لا محدث. تحتاج إلى الحصول على 10.2 ميغابايت من الأرشيف. بعد التفريغ، سيتم شغل 35.9 ميجابايت. هل تريد الاستمرار؟

ص...

دعونا نتحقق. قم بتشغيل ./التكوين مرة أخرى.

$ ./configure ... التحقق من pkg-config هو الإصدار 0.9.0 على الأقل... نعم التحقق من GTK... التكوين: خطأ: لم يتم استيفاء متطلبات الحزمة (gtk+-2.0 >= 2.8.0): لا توجد حزمة تم العثور على "gtk+-2.0" فكر في تعديل متغير البيئة PKG_CONFIG_PATH إذا قمت بتثبيت برنامج ببادئة غير قياسية. وبدلاً من ذلك، يمكنك تعيين متغيرات البيئة GTK_CFLAGS و GTK_LIBS لتجنب الحاجة إلى استدعاء pkg-config. راجع صفحة الدليل pkg-config لمزيد من التفاصيل. خطأ. يتطلب حزمة GTK+-2.0. وكما أظهرت عمليات البحث في المنتديات الإنجليزية، لا تزال الحزمة تسمى libgtk2.0-dev. دعونا نضعها. كما يظهر الإخراج أدناه - من الأفضل العثور عليهبالفعل

# aptitude install libgtk2.0-dev... سيتم تثبيت الحزم الجديدة التالية: debhelper(a) html2text(a) libatk1.0-dev(a) libcairo2-dev(a) libdirectfb-dev(a) libdirectfb-extra (أ) libexpat1-dev(a) libfontconfig1-dev(a) libfreetype6-dev(a) libglib2.0-dev(a) libgtk2.0-dev libice-dev(a) libjpeg62-dev(a) libmail-sendmail- بيرل (أ) libpango1.0-dev(a) libpixman-1-dev(a) libpng12-dev(a) libpthread-stubs0(a) libpthread-stubs0-dev(a) libsm-dev(a) libsys-hostname- طويل- بيرل (أ) libsysfs-dev(a) libx11-dev(a) libxau-dev(a) libxcb-render-util0-dev(a) libxcb-render0-dev(a) libxcb1-dev(a) libxcomposite- dev( a) libxcursor-dev(a) libxdamage-dev(a) libxdmcp-dev(a) libxext-dev(a) libxfixes-dev(a) libxft-dev(a) libxi-dev(a) libxinerama-dev( أ) libxrandr-dev(a) libxrender-dev(a) po-debconf(a) x11proto-composite-dev(a) x11proto-core-dev(a) x11proto-damage-dev(a) x11proto-fixes-dev( أ) x11proto-input-dev(a) x11proto-kb-dev(a) x11proto-randr-dev(a) x11proto-render-dev(a) x11proto-xext-dev(a) x11proto-xinerama-dev(a) xtrans- dev(a) zlib1g-dev(a) تم تحديث 0 حزمة، وتم تثبيت 51 حزمة جديدة، وتم وضع علامة على 0 حزمة للإزالة، و0 حزمة لم يتم تحديثها. تحتاج إلى الحصول على 11.4 ميغابايت من الأرشيف. بعد التفريغ، سيتم شغل 39.4 ميجابايت. هل تريد الاستمرار؟

ي

دعونا نتحقق. قم بتشغيل ./التكوين مرة أخرى. ونرى السعادة بالأسفل :) تم تنفيذ الأمر بنجاح !!!

$ ./configure... تثبيت Geany في: /usr/local باستخدام إصدار GTK: 2.16.1 البناء مع دعم طباعة GTK: نعم البناء بدعم البرنامج الإضافي: نعم استخدام دعم المحطة الافتراضية: نعم استخدام دعم مأخذ التوصيل (مجال UNIX): نعم تم التكوين بشكل جيد.

يصنع

تجميع في الملفات الثنائية

    . وبناء على ذلك، سيكون عليك حذفه يدويا. $ قم بالتثبيت

    الطريقة الثانية - استخدم الأداة المساعدة checkinstall # aptitude install checkinstall # man checkinstall NAME checkinstall - تتبع تثبيت البرامج المحلية، وقم بإنتاج برنامج ثنائي يمكن التحكم فيه باستخدام برنامج إدارة الحزم الخاص بك. ...

    نظرًا لأننا نبني الحزمة الخاصة بـ Ubuntu، فنحن مهتمون بالمفاتيح:

    د- أنشئ حزمة دبيان.

    $ cd /home/darkfire/deb/geany/geany-0.17 $ ./configure $ make $ sudo bash # يجب تشغيل أوامر أخرى كجذر # checkinstall -D ... ************ * **************************************** ******* منتهي. تم تثبيت الحزمة الجديدة وحفظها في /home/darkfire/deb/geany/geany-0.17/geany_0.17-1_i386.deb ويمكنك إزالتها من نظامك في أي وقت باستخدام: dpkg -r geany ******* ****************************************************** ***...

    تم إنشاء الحزمة geany_0.17-1_i386.deb وجاهزة للتثبيت.

إنشاء حزمة Eric Python IDE

نقوم بإنشاء حزمة Eric IDE بدعم اللغة الروسية. قم بتنزيل وفك شفرة المصدر والترويس. قبل التجميع، سنقوم بتثبيت الحزم اللازمة لتشغيل Eric.

# aptitude تثبيت دراجة إصلاح libqscintilla2-3 libqt3-i18n libqt4-assistant libqt4-help libqt4-webkit libqt4-xmlpatterns $ mkdir -p /home/darkfire/deb/eric4ide $ cd /home/darkfire/deb/eric4ide $ wget http:// downloads.sourceforge.net/project/eric-ide/eric4/4.3.5/eric4-4.3.5.tar.gz $ wget http://downloads.sourceforge.net/project/eric-ide/eric4/4.3.5 /eric4-i18n-ru-4.3.5.tar.gz?use_mirror=sunet $ tar -xzvf eric4-4.3.5.tar.gz $ tar -xzvf eric4-i18n-ru-4.3.5.tar.gz $ cd /home/darkfire/deb/eric4ide/eric4-4.3.5/ $ sudo bash # checkinstall python install.py checkinstall 1.6.1, Copyright 2002 Felipe Eduardo Sanchez Diaz Duran يتم توزيع هذا البرنامج بموجب شروط GNU GPL وثائق الحزمة الدليل ./doc -pak غير موجود. هل يجب علي إنشاء مجموعة افتراضية من مستندات الحزمة؟ [y]: جارٍ إعداد وثائق الحزمة...حسنًا، برجاء كتابة وصف للحزمة. قم بإنهاء وصفك بسطر فارغ أو EOF. >> نقوم بإنشاء حزمة Eric IDE بدعم اللغة الروسية. >> *************************************************** **** تم تحديد إنشاء حزمة دبيان *** *************************************** ************ تم إنشاء هذه الحزمة باستخدام هذه القيم: 0 - المشرف: [ root@ubuntuatom ] 1 - الملخص: [ قمنا بإنشاء حزمة Eric IDE بدعم اللغة الروسية. ] 2 - الاسم: [ eric4 ] 3 - الإصدار: [ 4.3.5 ] 4 - الإصدار: [ 1 ] 5 - الترخيص: [ GPL ] 6 - المجموعة: [ checkinstall ] 7 - البنية: [ i386 ] 8 - موقع المصدر: [ eric4-4.3.5 ] 9 - موقع المصدر البديل: 10 - يتطلب: 11 - يوفر: [ eric4 ] أدخل رقمًا لتغيير المعلمة أو اضغط على ENTER للمتابعة: ... تجميع eric/uninstall.py ... التثبيت اريك 4 .. اكتمل التثبيت. ========================= اكتمل التثبيت بنجاح ========================== دليل الوثائق... ./ ./README-i18n.txt ./THANKS ./README grep: /var/tmp/tmp.hxkpsnHJSB/newfile: لا يوجد مثل هذا الملف أو الدليل بعض الملفات التي تم إنشاؤها بواسطة التثبيت موجودة داخل البنية الدليل: /home/darkfire/deb/eric4ide/eric4-4.3.5 ربما لا تريد تضمينها في الحزمة، خاصة إذا كانت داخل الدليل الرئيسي الخاص بك. هل تريد مني أن أدرجها؟ [n] : هل تريد استبعادها من الحزمة؟ (الإجابة بنعم فكرة جيدة) [y]: يتم نسخ الملفات إلى دليل مؤقت...موافق تجريد ثنائيات ومكتبات ELF...موافق ضغط صفحات الدليل...موافق إنشاء قائمة من الملفات...موافق تجميع حزمة دبيان...جارٍ حذف الملفات المؤقتة...موافق جاري كتابة حزمة النسخ الاحتياطي...موافق، جارٍ حذف الدليل المؤقت. ..نعم *********************************************** ******* *********************** منتهي. تم تثبيت الحزمة الجديدة وحفظها في /home/darkfire/deb/eric4ide/eric4-4.3.5/eric4_4.3.5-1_i386.deb ويمكنك إزالتها من نظامك في أي وقت باستخدام: dpkg -r eric4 ***** ****************************************************** *****

تثبيت الحزمة المترجمة:

Dpkg -i eric4_4.3.5-1_i386.deb

فشل

عند البدء، يحدث خطأ

# eric4 Traceback (آخر مكالمة):

ملف "/usr/lib/python2.6/dist-packages/eric4/eric4.py"، السطر 20، في من PyQt4.QtCore قم باستيراد QTextCodec، SIGNAL، SLOT، qWarning، \

خطأ الاستيراد: لا توجد وحدة باسم PyQt4.QtCore