الاسم¶
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،
حيث <> هي
واحدة من
خمس
مقارنات: >=
(أكبر من أو
يساوي)، <=
(أقل من أو
يساوي)، =
(يساوي)، >
(أكبر من)، أو
< (أقل من).
يمكن
إضافة
اعتماديات
إضافية
خاصة ببنية
معينة عن
طريق إلحاق
شرطة سفلية
واسم
البنية،
على سبيل
المثال،
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 للحزم
الأخرى.
التموينات
التي تتضمن
المعاملين
> و < غير
صالحة لأنه
لا يمكن
توفير إلا
إصدارات
محددة من
الحزمة.
يمكن
إضافة
توفيرات
إضافية
خاصة ببنية
معينة عن
طريق إلحاق
شرطة سفلية
واسم
البنية،
على سبيل
المثال،
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.
ثم استخدم
توجيه
التثبيت:
لا يلزم
تحديد
سكربت
التثبيت في
مصفوفة
المصدر.
يتوفر قالب
ملف تثبيت
في /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
}
العلل¶
علل؟ لا بد
أنك تمزح؛
لا توجد علل
في هذا
البرنامج.
ولكن إذا
صدف وكنا
مخطئين،
فيُرجى
الإبلاغ
عنها في
متتبع
المشكلات
في 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
أو ما بعده
للاطلاع
على شروط
حقوق النشر.
لا توجد أي
ضمانات.
إذا وجدت
أي أخطاء في
ترجمة صفحة
الدليل
هذه، يرجى
إرسال بريد
إلكتروني
إلى قائمة
بريد
المترجمين:
kde-l10n-ar@kde.org.