.\" -*- coding: UTF-8 -*- '\" t .\" Title: pkgbuild .\" Author: [see the "Authors" section] .\" Generator: DocBook XSL Stylesheets vsnapshot .\" Date: 2026-05-06 .\" Manual: Pacman Manual .\" Source: Pacman 7.1.0 .\" Language: English .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH PKGBUILD 5 "6 مايو 2026" "Pacman 7\&.1\&.0" "دليل Pacman" .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH الاسم PKGBUILD \- ملف وصف بناء الحزمة .SH موجز .sp PKGBUILD .SH الوصف .sp تصف صفحة الدليل هذه القواعد العامة حول ملفات PKGBUILD\&. بمجرد كتابة ملف PKGBUILD، تُبنى الحزمة الفعلية باستخدام makepkg وتُثبّت بواسطة pacman\&. .if n \{\ .sp .\} .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBملاحظة\fP .ps -1 .br .sp يوجد مثال لملف PKGBUILD، مفيد للمرجعية، في \fI/usr/share/pacman\fP إلى جانب ملفات أمثلة أخرى مثل سكربت التثبيت\&. يمكنك نسخ ملف PKGBUILD\&.proto المقدم إلى دليل بناء حزمة جديد وإجراء التخصيصات لتناسب احتياجاتك\&. .sp .5v .RE .SH "الخيارات والتوجيهات" .sp فيما يلي قائمة بالخيارات والتوجيهات القياسية المتاحة للاستخدام في PKGBUILD\&. يفهم makepkg كل هذه الخيارات ويفسرها، وسيجري نقل معظمها مباشرة إلى الحزمة المبنية\&. الحقول الإلزامية لملف PKGBUILD يعمل بالحد الأدنى هي \fBpkgname\fP و\fBpkgver\fP و \fBpkgrel\fP و \fBarch\fP\&. .sp إذا كنت بحاجة إلى إنشاء أي متغيرات مخصصة للاستخدام في عملية البناء الخاصة بك، فيوصى ببدء اسمها بشرطة سفلية \fI_\fP\&. سيمنع هذا أي تعارض محتمل في الأسماء مع متغيرات makepkg الداخلية\&. على سبيل المثال، لتخزين إصدار نواة الأساس في متغير، استخدم شيئًا مشابهًا لـ $_basekernver\&. .PP \fBpkgname (array)\fP .RS 4 إما اسم الحزمة أو مصفوفة من الأسماء للحزم المنقسمة\&. المحارف الصالحة لأعضاء هذه المصفوفة هي المحارف الأبجدية الرقمية، وأي من المحارف التالية: \(lq@ \&. _ + \-\(rq\&. بالإضافة إلى ذلك، لا يُسمح للأسماء أن تبدأ بشرطات أو نقاط\&. .RE .PP \fBpkgver\fP .RS 4 إصدار البرنامج كما أصدره المؤلف (على سبيل المثال، \fI2\&.7\&.1\fP)\&. لا يُسمح للمتغير أن يحتوي على نقطتين رأسيتين، أو شرطات مائلة للأمام، أو شرطات، أو مسافات بيضاء\&. .sp يمكن تحديث المتغير pkgver آليًا عن طريق توفير دالة pkgver() في ملف PKGBUILD والتي تخرج إصدار الحزمة الجديد\&. تُشغّل هذه الدالة بعد تنزيل المصادر واستخراجها وتشغيل دالة prepare() (إن وجدت)، بحيث يمكنها استخدام تلك الملفات في تحديد pkgver الجديد\&. هذا مفيد جدًا عند استخدامه مع المصادر من أنظمة التحكم في الإصدارات (انظر أدناه)\&. .RE .PP \fBpkgrel\fP .RS 4 هذا هو رقم الإصدار الخاص بالتوزيعة\&. يتيح هذا لمديري الحزم إجراء تحديثات على خيارات اضبط الخاصة بالحزمة، على سبيل المثال\&. يُعيّن هذا عادةً على \fI1\fP لكل إصدار برنامج أصلي جديد ويُزاد لتحديثات PKGBUILD الوسيطة\&. المتغير هو عدد صحيح موجب، مع مستوى إصدار فرعي اختياري يُحدد بإضافة عدد صحيح موجب آخر مفصول بنقطة (أي على الشكل x\&.y)\&. .RE .PP \fBepoch\fP .RS 4 يُستخدم لإجبار الحزمة على أن تُرى كأحدث من أي إصدارات سابقة ذات حقبة (epoch) أقل، حتى لو كان رقم الإصدار لا يتسبب عادةً في مثل هذه الترقية\&. يجب أن تكون هذه القيمة عددًا صحيحًا موجبًا؛ القيمة المبدئية إذا تُركت غير محددة هي \fI0\fP\&. هذا مفيد عندما يتغير مخطط ترقيم إصدار الحزمة (أو يكون أبجديًا رقميًا)، مما يكسر منطق مقارنة الإصدارات العادي\&. انظر \fBpacman\fP(8) لمزيد من المعلومات حول مقارنات الإصدارات\&. .RE .PP \fBpkgdesc\fP .RS 4 ينبغي أن يكون هذا وصفًا موجزًا للحزمة ووظائفها\&. حاول إبقاء الوصف في سطر واحد من النص وعدم استخدام اسم الحزمة\&. .RE .PP \fBurl\fP .RS 4 يحتوي هذا الحقل على رابط URL مرتبط بالبرنامج الذي يجري حزمه\&. هذا هو عادة موقع الويب الخاص بالمشروع\&. .RE .PP \fBlicense (array)\fP .RS 4 يحدد هذا الحقل الرخصة (الرخص) التي تنطبق على الحزمة\&. إذا كانت هناك رخص متعددة قابلة للتطبيق، فاذكرها جميعًا: license=(\*(AqGPL\*(Aq \*(AqFDL\*(Aq)\&. .RE .PP \fBinstall\fP .RS 4 يحدد سكربت تثبيت خاص ليكون متضمنًا في الحزمة\&. ينبغي أن يكون هذا الملف في نفس دليل PKGBUILD وسيُنسخ إلى الحزمة بواسطة makepkg\&. لا يلزم تضمينه في مصفوفة المصدر (على سبيل المثال، install=$pkgname\&.install)\&. .RE .PP \fBchangelog\fP .RS 4 يحدد ملف سجل التغييرات (changelog) ليكون متضمنًا في الحزمة\&. ينبغي أن ينتهي ملف سجل التغييرات بسطر جديد واحد\&. ينبغي أن يكون هذا الملف في نفس دليل PKGBUILD وسيُنسخ إلى الحزمة بواسطة makepkg\&. لا يلزم تضمينه في مصفوفة المصدر (على سبيل المثال، changelog=$pkgname\&.changelog)\&. .RE .PP \fBsource (array)\fP .RS 4 مصفوفة من ملفات المصدر المطلوبة لبناء الحزمة\&. يجب أن تكون ملفات المصدر إما في نفس دليل PKGBUILD، أو أن تكون رابط URL مؤهلًا بالكامل يمكن لـ makepkg استخدامه لتنزيل الملف\&. لتبسيط صيانة ملفات PKGBUILD، استخدم المتغيرين $pkgname و $pkgver عند تحديد موقع التنزيل، إن أمكن\&. ستُستخرج الملفات المضغوطة آليًا ما لم توجد في مصفوفة noextract الموصوفة أدناه\&. .sp يمكن إضافة مصادر إضافية خاصة ببنية معينة عن طريق إلحاق شرطة سفلية واسم البنية، على سبيل المثال، \fIsource_x86_64=()\fP\&. يجب أن تكون هناك مصفوفة سلامة مطابقة تحتوي على مجاميع التحقق، على سبيل المثال \fIcksums_x86_64=()\fP\&. .sp من الممكن أيضًا تغيير اسم الملف المُنزّل، وهو أمر مفيد مع روابط URL الغريبة وللتعامل مع ملفات مصدر متعددة بنفس الاسم\&. الصيغة هي: source=(\*(Aqfilename::url\*(Aq)\&. .sp يدعم makepkg أيضًا بناء إصدارات تطويرية من الحزم باستخدام مصادر مُنزّلة من أنظمة التحكم في الإصدارات (VCS)\&. لمزيد من المعلومات، انظر استخدام مصادر VCS أدناه\&. .sp يتعرف makepkg على الملفات الموجودة في مصفوفة المصدر ذات الامتدادات \&.sig أو \&.sign أو \&.asc كتوقيعات PGP وسيجري استخدامها آليًا للتحقق من سلامة ملف المصدر المقابل\&. .RE .PP \fBvalidpgpkeys (array)\fP .RS 4 مصفوفة من بصمات أصابع PGP\&. إذا كانت هذه المصفوفة غير فارغة، فلن يقبل makepkg إلا التوقيعات من المفاتيح المدرجة هنا وسيتجاهل قيم الثقة من حلقة المفاتيح\&. إذا وُقّع ملف المصدر بمفتاح فرعي، فسيظل makepkg يستخدم المفتاح الرئيس للمقارنة\&. .sp لا تُقبل إلا بصمات الأصابع الكاملة\&. يجب أن تكون بأحرف كبيرة وألا تحتوي على محارف مسافات بيضاء\&. .RE .PP \fBnoextract (array)\fP .RS 4 مصفوفة من أسماء الملفات المقابلة لتلك الموجودة في مصفوفة المصدر\&. الملفات المدرجة هنا لن تُستخرج مع بقية ملفات المصدر\&. هذا مفيد للحزم التي تستخدم البيانات المضغوطة مباشرة\&. .RE .PP \fBcksums (array)\fP .RS 4 تحتوي هذه المصفوفة على مجاميع تحقق CRC لكل ملف مصدر محدد في مصفوفة المصدر (بنفس الترتيب)\&. سيستخدم makepkg هذا للتحقق من سلامة ملف المصدر أثناء عمليات البناء اللاحقة\&. إذا وُضعت القيمة \fISKIP\fP في المصفوفة بدلاً من الرمز التعموي العادي، فسيُتخطى التحقق من السلامة لملف المصدر هذا\&. لتوليد مجاميع التحقق بسهولة، شغل \(lqmakepkg \-g >> PKGBUILD\(rq\&. إذا رغبت في ذلك، انقل سطر cksums إلى موقع مناسب\&. لاحظ أن مجاميع التحقق المولدة بواسطة "makepkg \-g" ينبغي التحقق منها باستخدام قيم مجاميع التحقق المقدمة من مطور البرنامج\&. .RE .PP \fBmd5sums, sha1sums, sha224sums, sha256sums, sha384sums, sha512sums, b2sums (مصفوفات)\fP .RS 4 فحوصات سلامة بديلة يدعمها makepkg؛ تتصرف هذه كلها بشكل مشابه لخيار cksums الموصوف أعلاه\&. لتمكين استخدام وتوليد مجاميع التحقق هذه، تأكد من إعداد خيار INTEGRITY_CHECK في \fBmakepkg.conf\fP(5)\&. .RE .PP \fBgroups (array)\fP .RS 4 مصفوفة من الأسماء الرمزية التي تمثل مجموعات من الحزم، مما يتيح لك تثبيت حزم متعددة عن طريق طلب هدف واحد\&. على سبيل المثال، يمكن للمرء تثبيت جميع حزم كيدي عن طريق تثبيت مجموعة \fIkde\fP\&. .RE .PP \fBarch (array)\fP .RS 4 يحدد البنيات التي تتوفر عليها الحزمة المعطاة (على سبيل المثال، arch=(\*(Aqi686\*(Aq \*(Aqx86_64\*(Aq))\&. الحزم التي لا تحتوي على ملفات خاصة ببنية معينة ينبغي أن تستخدم arch=(\*(Aqany\*(Aq)\&. المحارف الصالحة لأعضاء هذه المصفوفة هي المحارف الأبجدية الرقمية و \(lq_\(rq\&. .RE .PP \fBbackup (array)\fP .RS 4 مصفوفة من أسماء الملفات، بدون شرطات مائلة بادئة، والتي ينبغي عمل نسخة احتياطية لها إذا حُذفت الحزمة أو رُقّيت\&. يُستخدم هذا بشكل شائع للحزم التي تضع ملفات الإعداد في \fI/etc\fP\&. انظر "Handling Config Files" في \fBpacman\fP(8) لمزيد من المعلومات\&. .RE .PP \fBdepends (array)\fP .RS 4 مصفوفة من الحزم التي تعتمد عليها هذه الحزمة لتعمل\&. ينبغي إحاطة الإدخالات في هذه القائمة بعلامات اقتباس مفردة وأن تحتوي على اسم الحزمة على الأقل\&. يمكن أن تتضمن الإدخالات أيضًا متطلب إصدار على الشكل \fIname<>version\fP، حيث <> هي واحدة من خمس مقارنات: >= (أكبر من أو يساوي)، <= (أقل من أو يساوي)، = (يساوي)، > (أكبر من)، أو < (أقل من)\&. .sp إذا بدا اسم الاعتمادية أنه مكتبة (ينتهي بـ \&.so)، فسيحاول makepkg العثور على ملف ثنائي يعتمد على المكتبة في الحزمة المبنية وإلحاق الإصدار الذي يحتاجه الملف الثنائي\&. إلحاق الإصدار بنفسك يعطل الاكتشاف الآلي\&. .sp يمكن إضافة اعتماديات إضافية خاصة ببنية معينة عن طريق إلحاق شرطة سفلية واسم البنية، على سبيل المثال، \fIdepends_x86_64=()\fP\&. .RE .PP \fBmakedepends (array)\fP .RS 4 مصفوفة من الحزم التي تعتمد عليها هذه الحزمة للبناء ولكن لا حاجة إليها في وقت التشغيل\&. تتبع الحزم في هذه القائمة نفس تنسيق depends\&. .sp يمكن إضافة makedepends إضافية خاصة ببنية معينة عن طريق إلحاق شرطة سفلية واسم البنية، على سبيل المثال، \fImakedepends_x86_64=()\fP\&. .RE .PP \fBcheckdepends (array)\fP .RS 4 مصفوفة من الحزم التي تعتمد عليها هذه الحزمة لتشغيل مجموعة اختباراتها ولكن لا حاجة إليها في وقت التشغيل\&. تتبع الحزم في هذه القائمة نفس تنسيق depends\&. لا تؤخذ هذه الاعتماديات في الاعتبار إلا عند وجود دالة check() والمخطط تشغيلها بواسطة makepkg\&. .sp يمكن إضافة checkdepends إضافية خاصة ببنية معينة عن طريق إلحاق شرطة سفلية واسم البنية، على سبيل المثال، \fIcheckdepends_x86_64=()\fP\&. .RE .PP \fBoptdepends (array)\fP .RS 4 مصفوفة من الحزم (والأسباب المصاحبة لها) والتي ليست ضرورية للوظائف الأساسية، ولكنها قد تكون ضرورية للاستفادة الكاملة من محتويات هذه الحزمة\&. إن optdepends مخصصة حاليًا لأغراض إعلامية فقط ولا يستخدمها pacman أثناء حل الاعتماديات\&. تتبع الحزم في هذه القائمة نفس تنسيق depends، مع إلحاق وصف اختياري\&. تنسيق تحديد أوصاف optdepends هو: .sp .if n \{\ .RS 4 .\} .nf optdepends=(\*(Aqpython: for library bindings\*(Aq) .fi .if n \{\ .RE .\} .sp يمكن إضافة optdepends إضافية خاصة ببنية معينة عن طريق إلحاق شرطة سفلية واسم البنية، على سبيل المثال، \fIoptdepends_x86_64=()\fP\&. .RE .PP \fBconflicts (array)\fP .RS 4 مصفوفة من الحزم التي ستتعارض مع هذه الحزمة (أي لا يمكن تثبيتهما معًا في نفس الوقت)\&. يتبع هذا التوجيه نفس تنسيق depends\&. التعارضات المحددة بالإصدار مدعومة باستخدام المعاملات كما هو موصوف في depends\&. .sp يمكن إضافة تعارضات إضافية خاصة ببنية معينة عن طريق إلحاق شرطة سفلية واسم البنية، على سبيل المثال، \fIconflicts_x86_64=()\fP\&. .RE .PP \fBprovides (array)\fP .RS 4 مصفوفة من \(lqالتموينات الافتراضية\(rq التي توفرها هذه الحزمة\&. يتيح هذا للحزمة توفير اعتماديات أخرى غير اسم الحزمة الخاص بها\&. على سبيل المثال، يمكن لحزمة dcron أن توفر \fIcron\fP، مما يتيح للحزم الاعتماد على \fIcron\fP بدلاً من \fIdcron OR fcron\fP\&. .sp التموينات المحددة بالإصدار ممكنة أيضًا، بتنسيق \fIname=version\fP\&. على سبيل المثال، يمكن لـ dcron توفير \fIcron=2\&.0\fP لتلبية اعتمادية \fIcron>=2\&.0\fP للحزم الأخرى\&. التموينات التي تتضمن المعاملين > و < غير صالحة لأنه لا يمكن توفير إلا إصدارات محددة من الحزمة\&. .sp إذا بدا اسم التموين أنه مكتبة (ينتهي بـ \&.so)، فسيحاول makepkg العثور على المكتبة في الحزمة المبنية وإلحاق الإصدار الصحيح\&. إلحاق الإصدار بنفسك يعطل الاكتشاف الآلي\&. .sp يمكن إضافة توفيرات إضافية خاصة ببنية معينة عن طريق إلحاق شرطة سفلية واسم البنية، على سبيل المثال، \fIprovides_x86_64=()\fP\&. .RE .PP \fBreplaces (array)\fP .RS 4 مصفوفة من الحزم التي ينبغي أن تحل هذه الحزمة محلها\&. يمكن استخدام هذا للتعامل مع الحزم التي جُدد اسمها أو دُمجت\&. على سبيل المثال، إذا جُدد اسم حزمة \fIj2re\fP إلى \fIjre\fP، فإن هذا التوجيه يتيح للترقيات المستقبلية الاستمرار كما هو متوقع على الرغم من انتقال الحزمة\&. عمليات الاستبدال المحددة بالإصدار مدعومة باستخدام المعاملات كما هو موصوف في depends\&. .sp إن ترقية النظام (Sysupgrade) هي حاليًا عملية pacman الوحيدة التي تستخدم هذا الحقل\&. لن تستخدم عملية المزامنة أو الترقية العادية قيمته\&. .sp يمكن إضافة عمليات استبدال إضافية خاصة ببنية معينة عن طريق إلحاق شرطة سفلية واسم البنية، على سبيل المثال، \fIreplaces_x86_64=()\fP\&. .RE .PP \fBoptions (array)\fP .RS 4 تتيح لك هذه المصفوفة تجاوز بعض سلوكيات makepkg المبدئية عند بناء الحزم\&. لتعيين خيار، ما عليك سوى تضمين اسم الخيار في مصفوفة الخيارات\&. لعكس السلوك المبدئي، ضع علامة تعجب \(lq!\(rq في مقدمة الخيار\&. حدد فقط الخيارات التي تريد تجاوزها على وجه التحديد، وسيُؤخذ الباقي من \fBmakepkg.conf\fP(5)\&. \fBملاحظة:\fP خيار \fIforce\fP هو خيار محذوف الآن لصالح متغير المستوى الأعلى \fIepoch\fP\&. .PP \fBstrip\fP .RS 4 تجريد (Strip) الرموز من الملفات الثنائية والمكتبات\&. إذا كنت تستخدم مصحح أخطاء بشكل متكرر على البرامج أو المكتبات، فقد يكون من المفيد تعطيل هذا الخيار\&. .RE .PP \fBdocs\fP .RS 4 حفظ أدلة الوثائق (doc)\&. إذا كنت ترغب في حذف أدلة الوثائق، فحدد !docs في المصفوفة\&. .RE .PP \fBlibtool\fP .RS 4 تُترك ملفات libtool (\&.la) في الحزم\&. حدد !libtool لإزالتها\&. .RE .PP \fBstaticlibs\fP .RS 4 ترك ملفات المكتبات الساكنة (\&.a) في الحزم\&. حدد !staticlibs لحذفها (إذا كان لها نظير مشترك)\&. .RE .PP \fBemptydirs\fP .RS 4 تُترك الأدلة الفارغة في الحزم\&. .RE .PP \fBzipman\fP .RS 4 ضغط صفحات الدليل (man) والمعلومات (info) باستخدام gzip\&. .RE .PP \fBccache\fP .RS 4 السماح باستخدام ccache أثناء build()\&. أكثر فائدة في شكلها السلبي !ccache مع حزم معينة تواجه مشاكل في البناء باستخدام ccache\&. .RE .PP \fBdistcc\fP .RS 4 السماح باستخدام distcc أثناء build()\&. أكثر فائدة في شكلها السلبي !distcc مع حزم معينة تواجه مشاكل في البناء باستخدام distcc\&. .RE .PP \fBbuildflags\fP .RS 4 السماح باستخدام رايات البناء الخاصة بالمستخدم (CPPFLAGS، CFLAGS، CXXFLAGS، LDFLAGS) أثناء build() كما هو محدد في \fBmakepkg.conf\fP(5)\&. أكثر فائدة في شكلها السلبي !buildflags مع حزم معينة تواجه مشاكل في البناء باستخدام رايات بناء مخصصة\&. .RE .PP \fBmakeflags\fP .RS 4 السماح باستخدام رايات make الخاصة بالمستخدم أثناء build() كما هو محدد في \fBmakepkg.conf\fP(5)\&. أكثر فائدة في شكلها السلبي !makeflags مع حزم معينة تواجه مشاكل في البناء باستخدام رايات make مخصصة مثل \-j2 (أو أعلى)\&. .RE .PP \fBdebug\fP .RS 4 إضافة رايات تنقيح المخصصة من قبل المستخدم (DEBUG_CFLAGS، DEBUG_CXXFLAGS) إلى نظيراتها من رايات البناء كما هو محدد في \fBmakepkg.conf\fP(5)\&. عند استخدامها بالاقتران مع خيار \(oqstrip\(cq، تُنشأ حزمة منفصلة تحتوي على رموز تنقيح\&. .RE .PP \fBlto\fP .RS 4 تمكين بناء الحزم باستخدام تحسين وقت الربط (link time optimization)\&. يضيف \fI\-flto\fP إلى كل من CFLAGS و CXXFLAGS\&. .RE .RE .sp يمكن إضافة خيارات إضافية خاصة ببنية معينة عن طريق إلحاق شرطة سفلية واسم البنية على سبيل المثال، \fIoptions_x86_64=()\fP\&. .PP \fBxdata (array)\fP .RS 4 تتيح لك هذه المصفوفة إضافة بيانات وصفية إضافية إلى الحزمة\&. لا تُستخدم هذه البيانات بواسطة pacman ولا بواسطة makepkg؛ بل لها غرض معلوماتي بحت، أو قد تفسرها أدوات خارجية\&. .sp يجب أن تكون جميع المدخلات في تلك المصفوفة على الصيغة \fIkey=value\fP، حيث \fIkey\fP هي سلسلة نصية اختيارية غير فارغة ويجب ألا تحتوي \fIvalue\fP على علامة يساوي\&. علاوة على ذلك، فإن المفتاح \(lqpkgtype\(rq محجوز لبرنامج makepkg\&. .RE .SH "دوال الحزم" .sp بالإضافة إلى التوجيهات المذكورة أعلاه، تتطلب ملفات PKGBUILD مجموعة من الدوال التي توفر تعليمات لبناء الحزمة وتثبيتها\&. كحد أدنى، يجب أن يحتوي ملف PKGBUILD على دالة ()package التي تثبت جميع ملفات الحزمة في دليل الحزم، مع استخدام الدوال الاختيارية ()prepare و ()build و ()check لإنشاء تلك الملفات من المصدر\&. .sp يُجلب هذا ويُنفذ مباشرة بواسطة makepkg، لذا فإن أي شيء متاح في Bash أو في النظام يكون متاحًا للاستخدام هنا\&. تأكد من أن أي أوامر غريبة مستخدمة مغطاة في مصفوفة makedepends\&. .sp إذا أنشأت أي متغيرات خاصة بك في أي من هذه الدوال، فيُوصى باستخدام الكلمة المفتاحية local الخاصة بـ Bash لقصر نطاق المتغير على داخل الدالة\&. .PP \fBدالة ()package\fP .RS 4 تُستخدم دالة ()package لتثبيت الملفات في الدليل الذي سيصبح الدليل الجذر للحزمة المبنية وتُشغل بعد جميع الدوال الاختيارية المذكورة أدناه\&. تُشغل مرحلة الحزم باستخدام fakeroot لضمان أذونات الملفات الصحيحة في الحزمة الناتجة\&. جميع الدوال الأخرى ستُشغل كالمستخدم الذي يستدعي makepkg\&. تُشغل هذه الدالة داخل srcdir$\&. .RE .PP \fBدالة ()verify\fP .RS 4 يمكن تحديد دالة ()verify اختيارية لتنفيذ استيثاق اختياري للمصدر\&. يجب أن تعيد الدالة رمز خروج غير صفري عند فشل التحقق\&. تُشغل هذه الدالة قبل استخراج المصادر\&. تُشغل هذه الدالة داخل startdir$\&. .RE .PP \fBدالة ()prepare\fP .RS 4 يمكن تحديد دالة ()prepare اختيارية تُنفذ فيها عمليات تحضير المصادر للبناء، مثل تطبيق الرقع\&. تُشغل هذه الدالة بعد استخراج المصدر وقبل دالة ()build\&. تُتخطى دالة ()prepare عند تخطي استخراج المصدر\&. تُشغل هذه الدالة داخل srcdir$\&. .RE .PP \fBدالة ()build\fP .RS 4 تُستخدم دالة ()build الاختيارية لتصريف و/أو ضبط ملفات المصدر استعدادًا لتثبيتها بواسطة دالة ()package\&. تُشغل هذه الدالة داخل srcdir$\&. .RE .PP \fBدالة ()check\fP .RS 4 يمكن تحديد دالة ()check اختيارية يمكن فيها تشغيل طقم اختبارات الحزمة\&. تُشغل هذه الدالة بين دالتي ()build و ()package\&. تأكد من أن أي أوامر غريبة مستخدمة مغطاة في مصفوفة checkdepends\&. تُشغل هذه الدالة داخل srcdir$\&. .RE .sp جميع المتغيرات المذكورة أعلاه مثل pkgname$ و pkgver$ متاحة للاستخدام في دوال الحزم\&. بالإضافة إلى ذلك، يعرّف makepkg المتغيرات التالية: .PP \fBsrcdir\fP .RS 4 يحتوي هذا على الدليل الذي يستخرج فيه makepkg، أو ينسخ إليه، جميع ملفات المصدر\&. .RE .PP \fBpkgdir\fP .RS 4 يحتوي هذا على الدليل الذي يربط فيه makepkg الحزمة المثبتة\&. سيصبح هذا الدليل هو الدليل الجذر لحزمتك المبنية\&. ينبغي استخدام هذا المتغير فقط في دالة ()package\&. .RE .PP \fBstartdir\fP .RS 4 يحتوي هذا على المسار المطلق للدليل الذي يقع فيه ملف PKGBUILD، وهو عادة يكون مخرجات (pwd)$ عند بدء تشغيل makepkg\&. استخدام هذا المتغير مهجور ومستنكر بشدة\&. .RE .SH "تقسيم الحزم" .sp يدعم makepkg بناء حزم متعددة من ملف PKGBUILD واحد\&. يتحقق ذلك عن طريق تعيين مصفوفة من أسماء الحزم لتوجيه pkgname\&. تستخدم كل حزمة مقسمة دالة حزم مقابلة باسم ()package_foo، حيث foo هو اسم الحزمة المقسمة\&. .sp تأخذ جميع الخيارات والتوجيهات للحزم المقسمة القيم الشاملة المعطاة في ملف PKGBUILD مبدئيًا\&. ومع ذلك، يمكن تخطي الخيارات التالية داخل دالة الحزم الخاصة بكل حزمة مقسمة: pkgdesc و arch و url و license و groups و depends و optdepends و provides و conflicts و replaces و backup و options و install و changelog\&. .sp لاحظ أن makepkg لا يأخذ في الحسبان اعتماديات الحزم المقسمة عند التحقق مما إذا كانت الاعتماديات مثبتة قبل بناء الحزمة ومع الخيار syncdeps\-\-\&. يجب تحديد جميع الحزم المطلوبة لصنع الحزمة في مصفوفتي depends و makedepends الشاملتين\&. .sp يتوفر توجيه شامل اختياري عند بناء حزمة مقسمة: .PP \fBpkgbase\fP .RS 4 الاسم المستخدم للإشارة إلى مجموعة الحزم في مخرجات makepkg وفي تسمية أرشيفات التار (tarballs) الخاصة بالمصدر فقط\&. إذا لم يُحدد، يُستخدم العنصر الأول في مصفوفة pkgname\&. المحارف الصالحة لهذا المتغير هي المحارف الأبجدية الرقمية، وأي من المحارف التالية: \(lq@ \&. _ + \-\(rq\&. بالإضافة إلى ذلك، لا يُسمح بأن يبدأ المتغير بشرطات أو نقاط\&. .RE .SH "برمجة التثبيت/الترقية/الإزالة" .sp لدى Pacman القدرة على تخزين وتنفيذ سكربت خاص بالحزمة عندما يثبت حزمة، أو يزيلها، أو يرقيها\&. يتيح هذا للحزمة ضبط نفسها بعد التثبيت وإجراء عمل معاكس عند الإزالة\&. .sp يختلف الوقت الدقيق لتشغيل السكربت مع كل عملية، وينبغي أن يكون غنيًا عن البيان\&. لاحظ أنه أثناء عملية الترقية، لن تُستدعى أي من دوال التثبيت أو الإزالة\&. .sp تُمرر السكربتات إما سلسلة نصية واحدة أو سلسلتين لـ \(lqfull version strings\(rq، حيث تكون سلسلة الإصدار الكاملة إما \fIpkgver\-pkgrel\fP أو \fIepoch:pkgver\-pkgrel\fP، إذا كانت قيمة epoch غير صفرية\&. .PP \fBpre_install\fP .RS 4 يُشغل مباشرة قبل استخراج الملفات\&. يُمرر وسيط واحد: السلسلة النصية للإصدار الكامل للحزمة الجديدة\&. .RE .PP \fBpost_install\fP .RS 4 يُشغل مباشرة بعد استخراج الملفات\&. يُمرر وسيط واحد: السلسلة النصية للإصدار الكامل للحزمة الجديدة\&. .RE .PP \fBpre_upgrade\fP .RS 4 يُشغل مباشرة قبل استخراج الملفات\&. يُمرر وسيطان بهذا الترتيب: السلسلة النصية للإصدار الكامل للحزمة الجديدة، والسلسلة النصية للإصدار الكامل للحزمة القديمة\&. .RE .PP \fBpost_upgrade\fP .RS 4 يُشغل بعد استخراج الملفات\&. يُمرر وسيطان بهذا الترتيب: السلسلة النصية للإصدار الكامل للحزمة الجديدة، والسلسلة النصية للإصدار الكامل للحزمة القديمة\&. .RE .PP \fBpre_remove\fP .RS 4 يُشغل مباشرة قبل إزالة الملفات\&. يُمرر وسيط واحد: السلسلة النصية للإصدار الكامل للحزمة القديمة\&. .RE .PP \fBpost_remove\fP .RS 4 يُشغل مباشرة بعد إزالة الملفات\&. يُمرر وسيط واحد: السلسلة النصية للإصدار الكامل للحزمة القديمة\&. .RE .sp لاستخدام هذه الميزة، أنشئ ملفًا مثل \fIpkgname\&.install\fP وضعه في نفس الدليل الذي يحتوي على سكربت PKGBUILD\&. ثم استخدم توجيه التثبيت: .sp .if n \{\ .RS 4 .\} .nf install=pkgname\&.install .fi .if n \{\ .RE .\} .sp لا يلزم تحديد سكربت التثبيت في مصفوفة المصدر\&. يتوفر قالب ملف تثبيت في \fI/usr/share/pacman\fP باسم \fIproto\&.install\fP كمرجع مع تعريف جميع الدوال المتاحة\&. .SH "استخدام مصادر نظام التحكم في الإصدارات (VCS)" .sp يُتاح بناء نسخة تطويرية من حزمة باستخدام مصادر من نظام التحكم في الإصدارات (VCS) عن طريق تحديد المصدر على الصيغة: .sp .if n \{\ .RS 4 .\} .nf source=(\*(Aqdirectory::url#fragment?query\*(Aq) .fi .if n \{\ .RE .\} .sp يدعم makepkg حاليًا أنظمة التحكم في الإصدارات التالية: Bazaar و Git و Subversion و Fossil و Mercurial\&. بالنسبة لأنظمة التحكم في الإصدارات الأخرى، يجب إجراء الاستنساخ اليدوي لمستودعات المنبع في دالة ()prepare\&. .sp تدعم بعض مصادر نظام التحكم في الإصدارات (VCS) مثل Git تثبيت عملية السحب عن طريق المجموع الفحصي لمحتواها باستخدام وظيفة تصدير حتمية مثل \(lqgit archive\(rq\&. .sp ينقسم عنوان URL للمصدر إلى أربعة مكونات: .PP \fBdirectory\fP .RS 4 (اختياري) يحدد اسم دليل بديل ليقوم makepkg بتنزيل مصدر نظام التحكم في الإصدارات (VCS) إليه\&. .RE .PP \fBurl\fP .RS 4 عنوان URL لمستودع نظام التحكم في الإصدارات (VCS)\&. يجب أن يتضمن هذا نظام التحكم في الإصدارات (VCS) في بروتوكول عنوان URL لكي يتعرف عليه makepkg كمصدر نظام تحكم في الإصدارات (VCS)\&. إذا لم يتضمن البروتوكول اسم نظام التحكم في الإصدارات (VCS)، فيمكن إضافته عن طريق إسباق عنوان URL بـ +vcs\&. على سبيل المثال، استخدام مستودع Git عبر HTTPS سيكون له عنوان URL للمصدر على الصيغة: git+https://\&.\&.\&.\&. .RE .PP \fBfragment\fP .RS 4 (اختياري) يتيح تحديد رقم مراجعة أو فرع ليقوم makepkg بسحبه من نظام التحكم في الإصدارات (VCS)\&. تكون الشظية على الصيغة type=value، على سبيل المثال لسحب مراجعة معينة سيكون سطر المصدر هو (source=(url#revision=123\&. تعتمد الأنواع المتاحة على نظام التحكم في الإصدارات (VCS) المستخدم: .PP \fBbzr\fP .RS 4 المراجعة (انظر \*(Aqbzr help revisionspec\*(Aq للتفاصيل) .RE .PP \fBfossil\fP .RS 4 الفرع، الإيداع، الوسم .RE .PP \fBgit\fP .RS 4 الفرع، الإيداع، الوسم .RE .PP \fBhg\fP .RS 4 الفرع، المراجعة، الوسم .RE .PP \fBsvn\fP .RS 4 المراجعة .RE .RE .PP \fBquery\fP .RS 4 (اختياري) يتيح تحديد ما إذا كان ينبغي فحص سحب نظام التحكم في الإصدارات (VCS) بحثًا عن مراجعات موقعة بـ PGP\&. ينبغي أن يكون سطر المصدر على الصيغة (source=(url#fragment?signed أو (source=(url?signed#fragment\&. مدعوم حالياً بواسطة Git فقط\&. .RE .SH مثال .sp التالي هو مثال لملف PKGBUILD الخاص بحزمة \fIpatch\fP\&. لمزيد من الأمثلة، ابحث في ملفات البناء الخاصة بحزم توزيعتك\&. .sp .if n \{\ .RS 4 .\} .nf # Maintainer: Joe User pkgname=patch pkgver=2\&.7\&.1 pkgrel=1 pkgdesc="A utility to apply patch files to original sources" arch=(\*(Aqi686\*(Aq \*(Aqx86_64\*(Aq) url="https://www\&.gnu\&.org/software/patch/patch\&.html" license=(\*(AqGPL\*(Aq) groups=(\*(Aqbase\-devel\*(Aq) depends=(\*(Aqglibc\*(Aq) makedepends=(\*(Aqed\*(Aq) optdepends=(\*(Aqed: for "patch \-e" functionality\*(Aq) source=("ftp://ftp\&.gnu\&.org/gnu/$pkgname/$pkgname\-$pkgver\&.tar\&.xz"{,\&.sig}) sha256sums=(\*(Aq9124ba46db0abd873d0995c2ca880e81252676bb6c03e0a37dfc5f608a9b0ceb\*(Aq \*(AqSKIP\*(Aq) build() { cd "$srcdir/$pkgname\-$pkgver" \&./configure \-\-prefix=/usr make } package() { cd "$srcdir/$pkgname\-$pkgver" make DESTDIR="$pkgdir/" install } .fi .if n \{\ .RE .\} .SH "انظر أيضًا" .sp \fBmakepkg\fP(8)، \fBpacman\fP(8)، \fBmakepkg.conf\fP(5) .sp راجع موقع pacman الإلكتروني على https://archlinux\&.org/pacman/ للحصول على معلومات حديثة حول pacman والأدوات المرتبطة به\&. .SH العلل .sp علل؟ لا بد أنك تمزح؛ لا توجد علل في هذا البرنامج\&. ولكن إذا صدف وكنا مخطئين، فيُرجى الإبلاغ عنها في متتبع المشكلات في https://gitlab\&.archlinux\&.org/pacman/pacman/\-/issues مع معلومات محددة مثل سطر الأوامر الخاص بك، وطبيعة العلة، وحتى قاعدة بيانات الحزمة إذا كان ذلك يساعد\&. .SH المؤلفون .sp المصينون الحاليون: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} آلان مكراي .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} أندرو غريغوري .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Morgan Adamiec .RE .sp المساهمون الرئيسون السابقون: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Judd Vinet .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} أوريليان فوريه .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} آرون غريفين .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} دان ماكغي .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Xavier Chantry .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Nagy Gabor .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} ديف رايزنر .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} إيلي شوارتز .RE .sp للمساهمين الإضافيين، استخدم git shortlog \-s على مستودع pacman\&.git\&. .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .