PKGBUILD(5)

الاسم
PKGBUILD - ملف وصف بناء الحزمة

موجز

PKGBUILD

الوصف

تصف صفحة الدليل هذه القواعد العامة حول ملفات PKGBUILD. بمجرد كتابة ملف PKGBUILD، تُبنى الحزمة الفعلية باستخدام makepkg وتُثبّت بواسطة pacman.

    ملاحظة

    يوجد مثال لملف PKGBUILD، مفيد للمرجعية، في /usr/share/pacman إلى جانب ملفات أمثلة أخرى مثل سكربت التثبيت. يمكنك نسخ ملف PKGBUILD.proto المقدم إلى دليل بناء حزمة جديد وإجراء التخصيصات لتناسب احتياجاتك.

الخيارات والتوجيهات

فيما يلي قائمة بالخيارات والتوجيهات القياسية المتاحة للاستخدام في PKGBUILD. يفهم makepkg كل هذه الخيارات ويفسرها، وسيجري نقل معظمها مباشرة إلى الحزمة المبنية. الحقول الإلزامية لملف PKGBUILD يعمل بالحد الأدنى هي pkgname وpkgver و pkgrel و arch.

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

pkgname (array)
    إما اسم الحزمة أو مصفوفة من الأسماء للحزم المنقسمة. المحارف الصالحة لأعضاء هذه المصفوفة هي المحارف الأبجدية الرقمية، وأي من المحارف التالية: “@ . _ + -”. بالإضافة إلى ذلك، لا يُسمح للأسماء أن تبدأ بشرطات أو نقاط.

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

    يمكن تحديث المتغير pkgver آليًا عن طريق توفير دالة pkgver() في ملف PKGBUILD والتي تخرج إصدار الحزمة الجديد. تُشغّل هذه الدالة بعد تنزيل المصادر واستخراجها وتشغيل دالة prepare() (إن وجدت)، بحيث يمكنها استخدام تلك الملفات في تحديد pkgver الجديد. هذا مفيد جدًا عند استخدامه مع المصادر من أنظمة التحكم في الإصدارات (انظر أدناه).

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

epoch
    يُستخدم لإجبار الحزمة على أن تُرى كأحدث من أي إصدارات سابقة ذات حقبة (epoch) أقل، حتى لو كان رقم الإصدار لا يتسبب عادةً في مثل هذه الترقية. يجب أن تكون هذه القيمة عددًا صحيحًا موجبًا؛ القيمة المبدئية إذا تُركت غير محددة هي 0. هذا مفيد عندما يتغير مخطط ترقيم إصدار الحزمة (أو يكون أبجديًا رقميًا)، مما يكسر منطق مقارنة الإصدارات العادي. انظر pacman(8) لمزيد من المعلومات حول مقارنات الإصدارات.

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

url
    يحتوي هذا الحقل على رابط URL مرتبط بالبرنامج الذي يجري حزمه. هذا هو عادة موقع الويب الخاص بالمشروع.

license (array)
    يحدد هذا الحقل الرخصة (الرخص) التي تنطبق على الحزمة. إذا كانت هناك رخص متعددة قابلة للتطبيق، فاذكرها جميعًا: license=('GPL' 'FDL').

install
    يحدد سكربت تثبيت خاص ليكون متضمنًا في الحزمة. ينبغي أن يكون هذا الملف في نفس دليل PKGBUILD وسيُنسخ إلى الحزمة بواسطة makepkg. لا يلزم تضمينه في مصفوفة المصدر (على سبيل المثال، install=$pkgname.install).

changelog
    يحدد ملف سجل التغييرات (changelog) ليكون متضمنًا في الحزمة. ينبغي أن ينتهي ملف سجل التغييرات بسطر جديد واحد. ينبغي أن يكون هذا الملف في نفس دليل PKGBUILD وسيُنسخ إلى الحزمة بواسطة makepkg. لا يلزم تضمينه في مصفوفة المصدر (على سبيل المثال، changelog=$pkgname.changelog).

source (array)
    مصفوفة من ملفات المصدر المطلوبة لبناء الحزمة. يجب أن تكون ملفات المصدر إما في نفس دليل PKGBUILD، أو أن تكون رابط URL مؤهلًا بالكامل يمكن لـ makepkg استخدامه لتنزيل الملف. لتبسيط صيانة ملفات PKGBUILD، استخدم المتغيرين $pkgname و $pkgver عند تحديد موقع التنزيل، إن أمكن. ستُستخرج الملفات المضغوطة آليًا ما لم توجد في مصفوفة noextract الموصوفة أدناه.

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

    من الممكن أيضًا تغيير اسم الملف المُنزّل، وهو أمر مفيد مع روابط URL الغريبة وللتعامل مع ملفات مصدر متعددة بنفس الاسم. الصيغة هي: source=('filename::url').

    يدعم makepkg أيضًا بناء إصدارات تطويرية من الحزم باستخدام مصادر مُنزّلة من أنظمة التحكم في الإصدارات (VCS). لمزيد من المعلومات، انظر استخدام مصادر VCS أدناه.

    يتعرف makepkg على الملفات الموجودة في مصفوفة المصدر ذات الامتدادات .sig أو .sign أو .asc كتوقيعات PGP وسيجري استخدامها آليًا للتحقق من سلامة ملف المصدر المقابل.

validpgpkeys (array)
    مصفوفة من بصمات أصابع PGP. إذا كانت هذه المصفوفة غير فارغة، فلن يقبل makepkg إلا التوقيعات من المفاتيح المدرجة هنا وسيتجاهل قيم الثقة من حلقة المفاتيح. إذا وُقّع ملف المصدر بمفتاح فرعي، فسيظل makepkg يستخدم المفتاح الرئيس للمقارنة.

    لا تُقبل إلا بصمات الأصابع الكاملة. يجب أن تكون بأحرف كبيرة وألا تحتوي على محارف مسافات بيضاء.

noextract (array)
    مصفوفة من أسماء الملفات المقابلة لتلك الموجودة في مصفوفة المصدر. الملفات المدرجة هنا لن تُستخرج مع بقية ملفات المصدر. هذا مفيد للحزم التي تستخدم البيانات المضغوطة مباشرة.

cksums (array)
    تحتوي هذه المصفوفة على مجاميع تحقق CRC لكل ملف مصدر محدد في مصفوفة المصدر (بنفس الترتيب). سيستخدم makepkg هذا للتحقق من سلامة ملف المصدر أثناء عمليات البناء اللاحقة. إذا وُضعت القيمة SKIP في المصفوفة بدلاً من الرمز التعموي العادي، فسيُتخطى التحقق من السلامة لملف المصدر هذا. لتوليد مجاميع التحقق بسهولة، شغل “makepkg -g >> PKGBUILD”. إذا رغبت في ذلك، انقل سطر cksums إلى موقع مناسب. لاحظ أن مجاميع التحقق المولدة بواسطة "makepkg -g" ينبغي التحقق منها باستخدام قيم مجاميع التحقق المقدمة من مطور البرنامج.

md5sums, sha1sums, sha224sums, sha256sums, sha384sums, sha512sums, b2sums (مصفوفات)
    فحوصات سلامة بديلة يدعمها makepkg؛ تتصرف هذه كلها بشكل مشابه لخيار cksums الموصوف أعلاه. لتمكين استخدام وتوليد مجاميع التحقق هذه، تأكد من إعداد خيار INTEGRITY_CHECK في makepkg.conf(5).

groups (array)
    مصفوفة من الأسماء الرمزية التي تمثل مجموعات من الحزم، مما يتيح لك تثبيت حزم متعددة عن طريق طلب هدف واحد. على سبيل المثال، يمكن للمرء تثبيت جميع حزم كيدي عن طريق تثبيت مجموعة kde.

arch (array)
    يحدد البنيات التي تتوفر عليها الحزمة المعطاة (على سبيل المثال، arch=('i686' 'x86_64')). الحزم التي لا تحتوي على ملفات خاصة ببنية معينة ينبغي أن تستخدم arch=('any'). المحارف الصالحة لأعضاء هذه المصفوفة هي المحارف الأبجدية الرقمية و “_”.

backup (array)
    مصفوفة من أسماء الملفات، بدون شرطات مائلة بادئة، والتي ينبغي عمل نسخة احتياطية لها إذا حُذفت الحزمة أو رُقّيت. يُستخدم هذا بشكل شائع للحزم التي تضع ملفات الإعداد في /etc. انظر "Handling Config Files" في pacman(8) لمزيد من المعلومات.

depends (array)
    مصفوفة من الحزم التي تعتمد عليها هذه الحزمة لتعمل. ينبغي إحاطة الإدخالات في هذه القائمة بعلامات اقتباس مفردة وأن تحتوي على اسم الحزمة على الأقل. يمكن أن تتضمن الإدخالات أيضًا متطلب إصدار على الشكل name<>version، حيث <> هي واحدة من خمس مقارنات: >= (أكبر من أو يساوي)، <= (أقل من أو يساوي)، = (يساوي)، > (أكبر من)، أو < (أقل من).

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

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

makedepends (array)
    مصفوفة من الحزم التي تعتمد عليها هذه الحزمة للبناء ولكن لا حاجة إليها في وقت التشغيل. تتبع الحزم في هذه القائمة نفس تنسيق depends.

    يمكن إضافة makedepends إضافية خاصة ببنية معينة عن طريق إلحاق شرطة سفلية واسم البنية، على سبيل المثال، makedepends_x86_64=().

checkdepends (array)
    مصفوفة من الحزم التي تعتمد عليها هذه الحزمة لتشغيل مجموعة اختباراتها ولكن لا حاجة إليها في وقت التشغيل. تتبع الحزم في هذه القائمة نفس تنسيق depends. لا تؤخذ هذه الاعتماديات في الاعتبار إلا عند وجود دالة check() والمخطط تشغيلها بواسطة makepkg.

    يمكن إضافة checkdepends إضافية خاصة ببنية معينة عن طريق إلحاق شرطة سفلية واسم البنية، على سبيل المثال، checkdepends_x86_64=().

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

        optdepends=('python: for library bindings')

    يمكن إضافة optdepends إضافية خاصة ببنية معينة عن طريق إلحاق شرطة سفلية واسم البنية، على سبيل المثال، optdepends_x86_64=().

conflicts (array)
    مصفوفة من الحزم التي ستتعارض مع هذه الحزمة (أي لا يمكن تثبيتهما معًا في نفس الوقت). يتبع هذا التوجيه نفس تنسيق depends. التعارضات المحددة بالإصدار مدعومة باستخدام المعاملات كما هو موصوف في depends.

    يمكن إضافة تعارضات إضافية خاصة ببنية معينة عن طريق إلحاق شرطة سفلية واسم البنية، على سبيل المثال، conflicts_x86_64=().

provides (array)
    مصفوفة من “التموينات الافتراضية” التي توفرها هذه الحزمة. يتيح هذا للحزمة توفير اعتماديات أخرى غير اسم الحزمة الخاص بها. على سبيل المثال، يمكن لحزمة dcron أن توفر cron، مما يتيح للحزم الاعتماد على cron بدلاً من dcron OR fcron.

    التموينات المحددة بالإصدار ممكنة أيضًا، بتنسيق name=version. على سبيل المثال، يمكن لـ dcron توفير cron=2.0 لتلبية اعتمادية cron>=2.0 للحزم الأخرى. التموينات التي تتضمن المعاملين > و < غير صالحة لأنه لا يمكن توفير إلا إصدارات محددة من الحزمة.

    إذا بدا اسم التموين أنه مكتبة (ينتهي بـ .so)، فسيحاول makepkg العثور على المكتبة في الحزمة المبنية وإلحاق الإصدار الصحيح. إلحاق الإصدار بنفسك يعطل الاكتشاف الآلي.

    يمكن إضافة توفيرات إضافية خاصة ببنية معينة عن طريق إلحاق شرطة سفلية واسم البنية، على سبيل المثال، provides_x86_64=().

replaces (array)
    مصفوفة من الحزم التي ينبغي أن تحل هذه الحزمة محلها. يمكن استخدام هذا للتعامل مع الحزم التي جُدد اسمها أو دُمجت. على سبيل المثال، إذا جُدد اسم حزمة j2re إلى jre، فإن هذا التوجيه يتيح للترقيات المستقبلية الاستمرار كما هو متوقع على الرغم من انتقال الحزمة. عمليات الاستبدال المحددة بالإصدار مدعومة باستخدام المعاملات كما هو موصوف في depends.

    إن ترقية النظام (Sysupgrade) هي حاليًا عملية pacman الوحيدة التي تستخدم هذا الحقل. لن تستخدم عملية المزامنة أو الترقية العادية قيمته.

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

options (array)
    تتيح لك هذه المصفوفة تجاوز بعض سلوكيات makepkg المبدئية عند بناء الحزم. لتعيين خيار، ما عليك سوى تضمين اسم الخيار في مصفوفة الخيارات. لعكس السلوك المبدئي، ضع علامة تعجب “!” في مقدمة الخيار. حدد فقط الخيارات التي تريد تجاوزها على وجه التحديد، وسيُؤخذ الباقي من makepkg.conf(5). ملاحظة: خيار force هو خيار محذوف الآن لصالح متغير المستوى الأعلى epoch.

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

    docs
        حفظ أدلة الوثائق (doc). إذا كنت ترغب في حذف أدلة الوثائق، فحدد !docs في المصفوفة.

    libtool
        تُترك ملفات libtool (.la) في الحزم. حدد !libtool لإزالتها.

    staticlibs
        ترك ملفات المكتبات الساكنة (.a) في الحزم. حدد !staticlibs لحذفها (إذا كان لها نظير مشترك).

    emptydirs
        تُترك الأدلة الفارغة في الحزم.

    zipman
        ضغط صفحات الدليل (man) والمعلومات (info) باستخدام gzip.

    ccache
        السماح باستخدام ccache أثناء build(). أكثر فائدة في شكلها السلبي !ccache مع حزم معينة تواجه مشاكل في البناء باستخدام ccache.

    distcc
        السماح باستخدام distcc أثناء build(). أكثر فائدة في شكلها السلبي !distcc مع حزم معينة تواجه مشاكل في البناء باستخدام distcc.

    buildflags
        السماح باستخدام رايات البناء الخاصة بالمستخدم (CPPFLAGS، CFLAGS، CXXFLAGS، LDFLAGS) أثناء build() كما هو محدد في makepkg.conf(5). أكثر فائدة في شكلها السلبي !buildflags مع حزم معينة تواجه مشاكل في البناء باستخدام رايات بناء مخصصة.

    makeflags
        السماح باستخدام رايات make الخاصة بالمستخدم أثناء build() كما هو محدد في makepkg.conf(5). أكثر فائدة في شكلها السلبي !makeflags مع حزم معينة تواجه مشاكل في البناء باستخدام رايات make مخصصة مثل -j2 (أو أعلى).

    debug
        إضافة رايات تنقيح المخصصة من قبل المستخدم (DEBUG_CFLAGS، DEBUG_CXXFLAGS) إلى نظيراتها من رايات البناء كما هو محدد في makepkg.conf(5). عند استخدامها بالاقتران مع خيار ‘strip’، تُنشأ حزمة منفصلة تحتوي على رموز تنقيح.

    lto
        تمكين بناء الحزم باستخدام تحسين وقت الربط (link time optimization). يضيف -flto إلى كل من CFLAGS و CXXFLAGS.

يمكن إضافة خيارات إضافية خاصة ببنية معينة عن طريق إلحاق شرطة سفلية واسم البنية على سبيل المثال، options_x86_64=().

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

    يجب أن تكون جميع المدخلات في تلك المصفوفة على الصيغة key=value، حيث key هي سلسلة نصية اختيارية غير فارغة ويجب ألا تحتوي value على علامة يساوي. علاوة على ذلك، فإن المفتاح “pkgtype” محجوز لبرنامج makepkg.

دوال الحزم

بالإضافة إلى التوجيهات المذكورة أعلاه، تتطلب ملفات PKGBUILD مجموعة من الدوال التي توفر تعليمات لبناء الحزمة وتثبيتها. كحد أدنى، يجب أن يحتوي ملف PKGBUILD على دالة ()package التي تثبت جميع ملفات الحزمة في دليل الحزم، مع استخدام الدوال الاختيارية ()prepare و ()build و ()check لإنشاء تلك الملفات من المصدر.

يُجلب هذا ويُنفذ مباشرة بواسطة makepkg، لذا فإن أي شيء متاح في Bash أو في النظام يكون متاحًا للاستخدام هنا. تأكد من أن أي أوامر غريبة مستخدمة مغطاة في مصفوفة makedepends.

إذا أنشأت أي متغيرات خاصة بك في أي من هذه الدوال، فيُوصى باستخدام الكلمة المفتاحية local الخاصة بـ Bash لقصر نطاق المتغير على داخل الدالة.

دالة ()package
    تُستخدم دالة ()package لتثبيت الملفات في الدليل الذي سيصبح الدليل الجذر للحزمة المبنية وتُشغل بعد جميع الدوال الاختيارية المذكورة أدناه. تُشغل مرحلة الحزم باستخدام fakeroot لضمان أذونات الملفات الصحيحة في الحزمة الناتجة. جميع الدوال الأخرى ستُشغل كالمستخدم الذي يستدعي makepkg. تُشغل هذه الدالة داخل srcdir$.

دالة ()verify
    يمكن تحديد دالة ()verify اختيارية لتنفيذ استيثاق اختياري للمصدر. يجب أن تعيد الدالة رمز خروج غير صفري عند فشل التحقق. تُشغل هذه الدالة قبل استخراج المصادر. تُشغل هذه الدالة داخل startdir$.

دالة ()prepare
    يمكن تحديد دالة ()prepare اختيارية تُنفذ فيها عمليات تحضير المصادر للبناء، مثل تطبيق الرقع. تُشغل هذه الدالة بعد استخراج المصدر وقبل دالة ()build. تُتخطى دالة ()prepare عند تخطي استخراج المصدر. تُشغل هذه الدالة داخل srcdir$.

دالة ()build
    تُستخدم دالة ()build الاختيارية لتصريف و/أو ضبط ملفات المصدر استعدادًا لتثبيتها بواسطة دالة ()package. تُشغل هذه الدالة داخل srcdir$.

دالة ()check
    يمكن تحديد دالة ()check اختيارية يمكن فيها تشغيل طقم اختبارات الحزمة. تُشغل هذه الدالة بين دالتي ()build و ()package. تأكد من أن أي أوامر غريبة مستخدمة مغطاة في مصفوفة checkdepends. تُشغل هذه الدالة داخل srcdir$.

جميع المتغيرات المذكورة أعلاه مثل pkgname$ و pkgver$ متاحة للاستخدام في دوال الحزم. بالإضافة إلى ذلك، يعرّف makepkg المتغيرات التالية:

srcdir
    يحتوي هذا على الدليل الذي يستخرج فيه makepkg، أو ينسخ إليه، جميع ملفات المصدر.

pkgdir
    يحتوي هذا على الدليل الذي يربط فيه makepkg الحزمة المثبتة. سيصبح هذا الدليل هو الدليل الجذر لحزمتك المبنية. ينبغي استخدام هذا المتغير فقط في دالة ()package.

startdir
    يحتوي هذا على المسار المطلق للدليل الذي يقع فيه ملف PKGBUILD، وهو عادة يكون مخرجات (pwd)$ عند بدء تشغيل makepkg. استخدام هذا المتغير مهجور ومستنكر بشدة.

تقسيم الحزم

يدعم makepkg بناء حزم متعددة من ملف PKGBUILD واحد. يتحقق ذلك عن طريق تعيين مصفوفة من أسماء الحزم لتوجيه pkgname. تستخدم كل حزمة مقسمة دالة حزم مقابلة باسم ()package_foo، حيث foo هو اسم الحزمة المقسمة.

تأخذ جميع الخيارات والتوجيهات للحزم المقسمة القيم الشاملة المعطاة في ملف PKGBUILD مبدئيًا. ومع ذلك، يمكن تخطي الخيارات التالية داخل دالة الحزم الخاصة بكل حزمة مقسمة: pkgdesc و arch و url و license و groups و depends و optdepends و provides و conflicts و replaces و backup و options و install و changelog.

لاحظ أن makepkg لا يأخذ في الحسبان اعتماديات الحزم المقسمة عند التحقق مما إذا كانت الاعتماديات مثبتة قبل بناء الحزمة ومع الخيار syncdeps--. يجب تحديد جميع الحزم المطلوبة لصنع الحزمة في مصفوفتي depends و makedepends الشاملتين.

يتوفر توجيه شامل اختياري عند بناء حزمة مقسمة:

pkgbase
    الاسم المستخدم للإشارة إلى مجموعة الحزم في مخرجات makepkg وفي تسمية أرشيفات التار (tarballs) الخاصة بالمصدر فقط. إذا لم يُحدد، يُستخدم العنصر الأول في مصفوفة pkgname. المحارف الصالحة لهذا المتغير هي المحارف الأبجدية الرقمية، وأي من المحارف التالية: “@ . _ + -”. بالإضافة إلى ذلك، لا يُسمح بأن يبدأ المتغير بشرطات أو نقاط.

برمجة التثبيت/الترقية/الإزالة

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

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

تُمرر السكربتات إما سلسلة نصية واحدة أو سلسلتين لـ “full version strings”، حيث تكون سلسلة الإصدار الكاملة إما pkgver-pkgrel أو epoch:pkgver-pkgrel، إذا كانت قيمة epoch غير صفرية.

pre_install
    يُشغل مباشرة قبل استخراج الملفات. يُمرر وسيط واحد: السلسلة النصية للإصدار الكامل للحزمة الجديدة.

post_install
    يُشغل مباشرة بعد استخراج الملفات. يُمرر وسيط واحد: السلسلة النصية للإصدار الكامل للحزمة الجديدة.

pre_upgrade
    يُشغل مباشرة قبل استخراج الملفات. يُمرر وسيطان بهذا الترتيب: السلسلة النصية للإصدار الكامل للحزمة الجديدة، والسلسلة النصية للإصدار الكامل للحزمة القديمة.

post_upgrade
    يُشغل بعد استخراج الملفات. يُمرر وسيطان بهذا الترتيب: السلسلة النصية للإصدار الكامل للحزمة الجديدة، والسلسلة النصية للإصدار الكامل للحزمة القديمة.

pre_remove
    يُشغل مباشرة قبل إزالة الملفات. يُمرر وسيط واحد: السلسلة النصية للإصدار الكامل للحزمة القديمة.

post_remove
    يُشغل مباشرة بعد إزالة الملفات. يُمرر وسيط واحد: السلسلة النصية للإصدار الكامل للحزمة القديمة.

لاستخدام هذه الميزة، أنشئ ملفًا مثل pkgname.install وضعه في نفس الدليل الذي يحتوي على سكربت PKGBUILD. ثم استخدم توجيه التثبيت:

    install=pkgname.install

لا يلزم تحديد سكربت التثبيت في مصفوفة المصدر. يتوفر قالب ملف تثبيت في /usr/share/pacman باسم proto.install كمرجع مع تعريف جميع الدوال المتاحة.

استخدام مصادر نظام التحكم في الإصدارات (VCS)

يُتاح بناء نسخة تطويرية من حزمة باستخدام مصادر من نظام التحكم في الإصدارات (VCS) عن طريق تحديد المصدر على الصيغة:

    source=('directory::url#fragment?query')

يدعم makepkg حاليًا أنظمة التحكم في الإصدارات التالية: Bazaar و Git و Subversion و Fossil و Mercurial. بالنسبة لأنظمة التحكم في الإصدارات الأخرى، يجب إجراء الاستنساخ اليدوي لمستودعات المنبع في دالة ()prepare.

تدعم بعض مصادر نظام التحكم في الإصدارات (VCS) مثل Git تثبيت عملية السحب عن طريق المجموع الفحصي لمحتواها باستخدام وظيفة تصدير حتمية مثل “git archive”.

ينقسم عنوان URL للمصدر إلى أربعة مكونات:

directory
    (اختياري) يحدد اسم دليل بديل ليقوم makepkg بتنزيل مصدر نظام التحكم في الإصدارات (VCS) إليه.

url
    عنوان URL لمستودع نظام التحكم في الإصدارات (VCS). يجب أن يتضمن هذا نظام التحكم في الإصدارات (VCS) في بروتوكول عنوان URL لكي يتعرف عليه makepkg كمصدر نظام تحكم في الإصدارات (VCS). إذا لم يتضمن البروتوكول اسم نظام التحكم في الإصدارات (VCS)، فيمكن إضافته عن طريق إسباق عنوان URL بـ +vcs. على سبيل المثال، استخدام مستودع Git عبر HTTPS سيكون له عنوان URL للمصدر على الصيغة: git+https://....

fragment
    (اختياري) يتيح تحديد رقم مراجعة أو فرع ليقوم makepkg بسحبه من نظام التحكم في الإصدارات (VCS). تكون الشظية على الصيغة type=value، على سبيل المثال لسحب مراجعة معينة سيكون سطر المصدر هو (source=(url#revision=123. تعتمد الأنواع المتاحة على نظام التحكم في الإصدارات (VCS) المستخدم:

    bzr
        المراجعة (انظر 'bzr help revisionspec' للتفاصيل)

    fossil
        الفرع، الإيداع، الوسم

    git
        الفرع، الإيداع، الوسم

    hg
        الفرع، المراجعة، الوسم

    svn
        المراجعة

query
    (اختياري) يتيح تحديد ما إذا كان ينبغي فحص سحب نظام التحكم في الإصدارات (VCS) بحثًا عن مراجعات موقعة بـ PGP. ينبغي أن يكون سطر المصدر على الصيغة (source=(url#fragment?signed أو (source=(url?signed#fragment. مدعوم حالياً بواسطة Git فقط.

مثال

التالي هو مثال لملف PKGBUILD الخاص بحزمة patch. لمزيد من الأمثلة، ابحث في ملفات البناء الخاصة بحزم توزيعتك.

    # Maintainer: Joe User <joe.user@example.com>
    pkgname=patch
    pkgver=2.7.1
    pkgrel=1
    pkgdesc="A utility to apply patch files to original sources"
    arch=('i686' 'x86_64')
    url="https://www.gnu.org/software/patch/patch.html"
    license=('GPL')
    groups=('base-devel')
    depends=('glibc')
    makedepends=('ed')
    optdepends=('ed: for "patch -e" functionality')
    source=("ftp://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.xz"{,.sig})
    sha256sums=('9124ba46db0abd873d0995c2ca880e81252676bb6c03e0a37dfc5f608a9b0ceb'
                'SKIP')
    build() {
            cd "$srcdir/$pkgname-$pkgver"
            ./configure --prefix=/usr
            make
    }
    package() {
            cd "$srcdir/$pkgname-$pkgver"
            make DESTDIR="$pkgdir/" install
    }

انظر أيضًا

makepkg(8)، pacman(8)، makepkg.conf(5)

راجع موقع pacman الإلكتروني على https://archlinux.org/pacman/ للحصول على معلومات حديثة حول pacman والأدوات المرتبطة به.

العلل

علل؟ لا بد أنك تمزح؛ لا توجد علل في هذا البرنامج. ولكن إذا صدف وكنا مخطئين، فيُرجى الإبلاغ عنها في متتبع المشكلات في https://gitlab.archlinux.org/pacman/pacman/-/issues مع معلومات محددة مثل سطر الأوامر الخاص بك، وطبيعة العلة، وحتى قاعدة بيانات الحزمة إذا كان ذلك يساعد.

المؤلفون

المصينون الحاليون:

    • آلان مكراي <allan@archlinux.org>

    • أندرو غريغوري <andrew.gregory.8@gmail.com>

    • Morgan Adamiec <morganamilo@archlinux.org>

المساهمون الرئيسون السابقون:

    • Judd Vinet <jvinet@zeroflux.org>

    • أوريليان فوريه <aurelien@archlinux.org>

    • آرون غريفين <aaron@archlinux.org>

    • دان ماكغي <dan@archlinux.org>

    • Xavier Chantry <shiningxc@gmail.com>

    • Nagy Gabor <ngaba@bibl.u-szeged.hu>

    • ديف رايزنر <dreisner@archlinux.org>

    • إيلي شوارتز <eschwartz@archlinux.org>

للمساهمين الإضافيين، استخدم git shortlog -s على مستودع pacman.git.

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.