.\" -*- 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 .