إذا كنت تستخدم نظام التشغيل Linux لفترة طويلة وحتى تعرف القليل عن البرمجة ، فقد تحتاج عاجلاً أم آجلاً إلى ترجمة البرنامج من التعليمات البرمجية المصدر. ربما لن يكون البرنامج المطلوب في مستودعات التوزيع. أو يحتوي البرنامج على إصدار قديم في هذه المستودعات ، وتحتاج إلى الأحدث. أو ربما قمت بإنشاء برنامج جديد وتريد مشاركته مع مستخدمين آخرين.
بالطبع ، يمكنك تثبيت البرنامج وفقًا للتعليمات المرفقة مع الكود المصدري. ولكن بعد ذلك ستحتاج إلى إدارة ملفات البرنامج يدويًا ومراقبة التبعيات الخاصة بها. من الأفضل بكثير إنشاء حزمة مع البرنامج واستخدام مدير التطبيقات المضمن في نظام التشغيل.
آمل أن يساعدك هذا المقال سريعًا في التعرف على كيفية إنشاء حزمة RPM لـ Rosa Linux أو توزيع آخر يستخدم مدير حزم RPM (Mandriva ، RedHat). أو على الأقل أخبرني أين أبحث عن المعلومات.
سأعرض هنا كيفية إنشاء حزم RPM على جهاز الكمبيوتر المحلي ، باستخدام مثال بسيط. سنقوم ببناء برنامج xkb-switch في نظام التشغيل Rosa Linux . سنأخذ الكود المصدري للبرنامج من جيثب .
المقالة مقسمة إلى أجزاء قصيرة كثيرة ، لذلك جدول المحتويات تحت المفسد قليلا عن روزا لينكس
Rosa Linux هو توزيع تم إنشاؤه ودعمه بواسطة المطورين الروس . يعتمد على ماندريفا ، ولكن مع بعض الميزات. أستخدم الإصدار 32 بت من Rosa Fresh R8 ، الذي تم إصداره في عام 2014. الآن لم يعد إصدار R8 مدعومًا من قِبل المطورين (لم يتم تحديث مستودعات التخزين الخاصة به) ، ولكنه يعمل جيدًا على جهاز الكمبيوتر المحمول ، لذلك لا أريد تثبيت إصدار جديد.
Rosa Fresh R8 يستخدم سطح مكتب KDE4 . تستخدم جميع إصدارات حزمة التوزيع مديري rpm
و urpm
لإدارة الحزم مع التطبيقات ، والأوامر المقابلة هي rpm
، urpmi
، urpme
، urpmq
، urpmf
.
غالبًا ما يتم تغيير مبادئ إنشاء حزم البرامج داخل عائلة توزيع Linux نفسها. لذلك ، ما هو موصوف في هذه المقالة يجب أن يعمل في جميع إصدارات توزيعات روزا .
يعد بناء الحزم على Rosa Linux أبسط قليلاً من بعض التوزيعات الأخرى المستندة إلى RPM . بعض النقاط تلقائية ولا تحتاج إلى تكوين.
قليلا عن إكسب التبديل
أعجبتني فكرة استخدام المكوّن الإضافي لمحرر نص Vim - xkbswitch ، والذي توجد مقالة حول Habré . يقوم تلقائيًا بتحويل تخطيط لوحة المفاتيح إلى اللغة الإنجليزية عند الخروج من وضع الإدخال ، والعكس بالعكس - إلى الذي تم إدخال النص عليه في المرة الأخيرة - إذا قمت بإدخال وضع الإدخال مرة أخرى. لكي يعمل هذا المكون الإضافي ، فأنت بحاجة إلى برنامج التبديل xkb ، والذي يسمح لك بتبديل تخطيط لوحة المفاتيح من سطر الأوامر ومن المكونات الإضافية لمحرر Vim . لم يكن هذا البرنامج موجودًا في مستودعات Rosa Linux R8 (وعلى الأرجح لن يضيفه أحد ، لأن التوزيع قديم بالفعل ، وبرنامج xkb-switch ليس شائعًا للغاية).
إعداد ، وضع اللمسات الأخيرة ، والتحقق من البرنامج
غالبًا ما يكون من الضروري تكوين التحويل البرمجي للبرنامج للعمل بشكل صحيح في توزيع معين أو حتى لنظام معين. يحدث أن البرنامج يحتاج إلى أن يبنى بخيارات أخرى أو بدعم من برنامج تشغيل خاص. أو ربما تريد إصلاح الأخطاء في رمز البرنامج أو فقط تحقق مما إذا كان يعمل. للقيام بذلك ، من الأفضل نسخ التعليمات البرمجية المصدر إلى جهاز الكمبيوتر الخاص بك قبل إنشاء حزمة RPM ومحاولة تجميعها والتحقق من كيفية عمل البرنامج المترجم.
إذا كنت متأكدًا من أنك لن تحتاج إلى تعديل ملفات المشروع ، فيمكنك استخدام التعليمات البرمجية المصدر الأصلية من موقع المشروع والمتابعة الفورية لإنشاء الحزمة. ولكن إذا كنت بحاجة إلى تغيير إعدادات التحويل البرمجي ، فعادة ما يكون تغيير الملف في المجلد المصدر (الملف المسمى makefile ) أسهل كثيرًا من التعامل مع خيارات أوامر الترجمة وجهاز الماكرو الداخلي لملف المواصفات.
التحقق من الكود المصدري بدون ملفك الشخصي على جيثب
إذا قررت العمل مع الكود المصدري أو إعدادات تجميع المشروع ، لكن ليس لديك ملفك الشخصي على GitHub أو لا تريد استخدامه ، يمكنك ببساطة تنزيل الكود المصدر وفك ضغطه. في حالتنا ، قد يبدو هذا (استخدم مجلد ~/Projects/cpp
لرمز مصدر C ++ ):
cd ~/Projects/cpp git clone https://github.com/ierton/xkb-switch.git
سيؤدي هذا إلى إنشاء مجلد ~/Projects/cpp/xkb-switch
يحتوي على الكود المصدري. بالطبع ، بدلاً من استخدام git
يمكنك تنزيل الأرشيف باستخدام البرنامج وفك ضغطه.
من ملف README.md
في مجلد المشروع ، من السهل تخمين cmake
الأداة المساعدة cmake
لإنشاء البرنامج. لذلك ، إذا كنت بحاجة إلى تغيير إعدادات CMakeLists.txt
فهي في CMakeLists.txt
ملف CMakeLists.txt
. ونحن نحاول فقط ترجمة البرنامج ومعرفة ما إذا كان يعمل. ما الأوامر التي تحتاج إلى استخدامها لهذا هو مكتوب في نفس الملف README.md
في جذر المشروع.
cd xkb-switch mkdir build && cd build cmake .. make ./xkb-switch
بعد ذلك ، من أجل استخدام المشروع الذي تم تغييره ، سيكون عليك مسح أو حذف مجلد البنية من المشروع وحزم الكود المصدر في الأرشيف. قد يبدو مثل هذا:
cd ~/Projects/cpp/xkb-switch rm -rf ./build cd ~/Projects/cpp zip -r xkb-switch.zip xkb-switch
xkb-switch.zip
ملف xkb-switch.zip
بعد ذلك إلى استخدامه لإنشاء الحزمة.
تحقق مع حفظ المشروع إلى ملف التعريف الخاص بك في جيثب
أفترض أن أي شخص يقرأ هذا القسم على الأقل على دراية بالعمل مع git وأنشأ بالفعل ملفًا شخصيًا على GitHub . أعتقد أن هذه الطريقة هي الأفضل ، لذا فإن باقي المقالة ستشير إلى أنها مستخدمة ، ما لم ينص على خلاف ذلك.
تحتاج أولاً إلى شق المشروع الأصلي في GitHub الخاص بك. بعد ذلك ، كما في الطريقة السابقة ، قمنا باستنساخ المشروع على جهاز الكمبيوتر الخاص بنا ، ولكن من مستودعنا (في حالتي ، اسم المستخدم هو alexandersolovyov ):
cd ~/Projects/cpp git clone https://github.com/alexandersolovyov/xkb-switch.git
لإضافة أي تغييرات ، من الأفضل استخدام فرع جديد. بعد ذلك ، إذا رغبت في ذلك ، سيكون من الممكن استخدام إصدارات مختلفة من البرنامج. وسيكون من الممكن أيضًا اقتراح تغييرات على مؤلف المشروع باستخدام طلبات السحب. على سبيل المثال ، إذا قررت إصلاح ملف CMakeLists.txt
قليلاً ، فقبل ذلك تحتاج إلى إنشاء فرع جديد باستخدام:
git branch cmake_corrections
بعد إجراء التغييرات ، والتحقق منها وإضافتها إلى الفرع (باستخدام git commit -am " "
) ، يمكنك إضافة فرع جديد إلى GitHub الخاص بك:
git push origin cmake_corrections
بعد ذلك ، يمكنك تقديم طلب سحب ، إذا لزم الأمر.
يمكنك إنشاء رابط إلى المستودع الأصلي:
git remote add ierton https://github.com/ierton/xkb-switch.git
ثم قم بتحديث الفرع الرئيسي لمستودع التخزين الخاص بك بحيث يتطابق مع الأصل:
git pull ierton master
يمكن استخدام رمز البرنامج المقابل للفرع المصحح عند إنشاء دورة في الدقيقة. للقيام بذلك ، ستحتاج إلى تحديد العنوان للأرشيف في النموذج في ملف المواصفات:
Source0: https://github.com/-/-/archive/---.zip
ولكن ، كما طالب مستخدم specblog ، فإن هذا ليس هو الواقع. من الأفضل أن تنقل التغييرات في شكل تصحيحات. للقيام بذلك ، تحتاج إلى إنشاء ملفات تصحيح من التغييرات في فرعك ونسخها إلى المجلد المصدر لإنشاء الحزمة ( ~/rpmbuild/SOURCES/
). بعد ذلك ستحتاج إلى تحديدها في ملف المواصفات. سننظر في الأمر لاحقًا بعض الشيء ، ولكن إذا أردت ، يمكنك قراءته هنا . إذا كنت لا تعرف كيفية إنشاء تصحيحات ، يمكنك أن تبحث تحت المفسد.
كيفية إنشاء بقع باستخدام بوابةخلق بقع
تصحيحات ، فهي تصحيحات - هذه هي الملفات التي يتم فيها تسجيل التغييرات في التعليمات البرمجية المصدر للبرنامج. يتم استخدامها كبديل لأوامر git push
و git push
للتواصل بين مستودعات الكود المحلية إذا لم يكن من المناسب "سحب" التغييرات من مستودع بعيد ، أو يكون تاريخ تغيير المشروع ومبادئ العمل معه من الأفضل استخدام التصحيحات.
دعونا نتخيل أننا بحاجة إلى إجراء تغييرات على ملف CMakeLists.txt
. تحتاج أولاً إلى القيام بكل شيء كما هو موضح أعلاه: يجب أن يتوافق الفرع الرئيسي في مستودع GitHub مع الفرع الرئيسي للمشروع الأصلي ، وبالنسبة للتغييرات التي تحتاج إليها ، يجب استخدام فرع cmake_corrections . ثم تحتاج إلى الذهاب إلى هذا الفرع ، وإجراء التغييرات اللازمة وحفظها في بوابة باستخدام الالتزامات.
أنت الآن بحاجة إلى حفظ التغييرات كملفات تصحيح إلى المجلد ~/rpmbuild/SOURCES
(إذا كنت لا تستخدم Rosa Linux ، فقد يكون المسار إلى مجلد SOURCES
مختلفًا). على سبيل المثال ، هذا (يعني أننا في مجلد المشروع - على سبيل المثال ، ~/Projects/cpp/xkb-switch
- وفي فرع cmake_corrections
):
git format-patch -o ~/rpmbuild/SOURCES origin/master
يقوم الأمر git format-patch
بإنشاء ملف git format-patch
واحد لكل التزام. في هذا النموذج ، ستجعل التصحيحات تبدأ من الالتزام المحدد بواسطة الوسيطة الأخيرة ، وتنتهي بالالتزام الأخير للفرع الحالي. يمكنك تحديد التزام بأي طريقة: في بداية التجزئة ، باستخدام مؤشر HEAD أو اسم الفرع الذي يشير الآن إلى الالتزام المطلوب. الشيء الرئيسي هو أن أحد الالتزامات المرئية عند تنفيذ git log
يتم اعتباره بداية. بمعنى أنه لا يمكنك البدء في عمل تصحيحات من التزام موجود في فرع آخر.
ويمكنك أن تتذكر (أو ترى) عدد عمليات العودة التي تشعبنا منها من الفرع الرئيسي ، وقم بعمل تصحيحات لعدد معين من عمليات العودة. على سبيل المثال ، إذا ارتكبنا التزامين ، فسيكون الأمر:
git format-patch -o ~/rpmbuild/SOURCES -2
هنا يتم تعيين عدد التعيينات باستخدام -2
. يمكنك تحديد أي عدد منهم بدلاً من هذا الرقم.
يمكنك تحديد نطاق عمليات التعيين التي يجب أن يتم إجراء تصحيحات من خلالها عن طريق وضع نقطتين بين ارتباطات الالتزام الأولي والنهائي:
git format-patch -o ~/rpmbuild/SOURCES master..cmake_corrections
يتكون اسم كل ملف تصحيح من رقم تسلسلي والسطر الأول من تعليق الالتزام. لذلك ، من الأفضل إعادة تسمية كل ملف بحيث يصف وصف التصحيح بشكل أكثر وضوحًا وجوهره. على سبيل المثال ، مثل هذا:
mv 0001-Return-memory-allocated-by-XkbRf-getNamesProp()-for-tmp.patch 001-Fix-memory-leak.patch
توصي اصطلاح التسمية للبقع في المقالة الموجودة في بناء جملة ملف المواصفات بإضافة package_name-version-rosa- قبل وصف كل ملف تصحيح. ربما تكون هذه ممارسة جيدة إذا قمت بإرسال تصحيحات عن طريق البريد الإلكتروني ، ولكن ليس لإنشاء حزم. نقوم بإنشاء حزم على جهاز الكمبيوتر الخاص بنا ، لذلك من الأفضل تفريغ المجلد ~/rpmbuild/SOURCES
كل مرة قبل ~/rpmbuild/SOURCES
حزمة مع برنامج آخر أو حزمة إصدار جديدة.
الآن إذا كنت بحاجة إلى تحديث فرع المستودع الرئيسي ( الرئيسي ) لتتناسب مع الأصل ، فحينئذٍ سيحتاج فرع التغيير ( cmake_corrections ) إلى التحديث باستخدام أمر git rebase
. يمكنك معرفة كيفية القيام بذلك هنا . بعد ذلك ، ستحتاج البقع إلى إعادة إنشائها.
قم بإعداد "مكان العمل" لإنشاء حزمة
تحتاج أولاً إلى إنشاء بنية دليل. كل التجميع يحدث في مجلد rpmbuild
في المجلد الرئيسي للمستخدم. قم بإنشاء بنية الدليل الأولي وانتقل إلى المجلد الخاص بملفات المواصفات:
mkdir -p ~/rpmbuild/SPECS && cd ~/rpmbuild/SPECS
بالنسبة إلى Rosa Linux ، هذا يكفي: سيتم إنشاء المجلدات المتبقية تلقائيًا.
قد يستخدم توزيع آخر موقع ملف مختلف لإنشاء الحزمة. وربما يتعين عليك إنشاء التسلسل الهرمي للمجلد بالكامل يدويًا. ابحث عن معلومات لتوزيعها إذا كنت لا تستخدم Rosa Linux. على سبيل المثال ، قد يبدو هذا في Red Hat .
إذا تم إنشاء الحزمة مع وجود أخطاء ، rpmbuild
حذف جميع الملفات التي تم إنشاؤها بواسطة الأمر rpmbuild
- كما هو الحال مع rpmbuild
الناجح. سنحاول تجميع الحزمة عدة مرات ، وسوف تتداخل الملفات المتبقية بعد آخر مرة. لذلك ، من الأفضل عمل برنامج نصي بسيط يساعد على إزالته بسرعة. قم بإنشاء ملف ~/rpmbuild/SPECS
. وهنا محتوياته:
!
بالطبع ، من الأفضل إضافة حقوق التنفيذ له باستخدام الأمر chmod u+x cleanup.sh
.
إذا كنت ترغب في تجميع حزمة من الملفات الموجودة على الكمبيوتر المحلي - إذا كنت لا تستخدم GitHub وقمت بإجراء تغييرات على ملفات المشروع ، أو كنت ترغب في إنشاء حزمة من البرنامج الخاص بك الذي تم تخزينه فقط على جهاز الكمبيوتر الخاص بك - فأنت بحاجة إلى حزم المشروع في أرشيف ( على سبيل المثال .zip
أو .tar.gz
أو .tar.gz
) ووضعها في مجلد SOURCES
. على سبيل المثال ، مثل هذا:
cd ~/Projects/cpp/ zip -r xkb-switch.zip xkb-switch mkdir -p ~/rpmbuild/SOURCES cp xkb-switch.zip ~/rpmbuild/SOURCES/
إذا كنت ترغب في إنشاء برنامج آخر أو آخر ، بعد إنشاء البرنامج ، ولكن مع إصدار مختلف ، فستحتاج إلى حذف جميع الملفات من مجلد ~/rpmbuild/SOURCES
، وبعد ذلك نسخ الأرشيف الخاص بك هناك (إذا لم تقم بتنزيله من GitHub ) و ملفات التصحيح (إذا ما استخدمت). خلاف ذلك ، لن يتم تنزيل ملف الأرشيف ، على الأرجح ، من GitHub (لماذا - انظر لاحقًا) ، وسيكون من الصعب أيضًا معرفة أي ملف تصحيح ينتمي إلى أي برنامج.
لنبدأ بإنشاء ملف المواصفات
أساس إنشاء حزمة RPM هو ملف بقعة ما يسمى. يحتوي هذا الملف على إرشادات برنامج rpmbuild
(أو بالأحرى rpm
) الضرورية لإنشاء الحزمة.
قم xkb-switch.spec
ملف xkb-switch.spec
في المجلد ~/rpmbuild/SPECS/
. أسهل طريقة للبدء هي باستخدام قالب يمكن العثور عليه على موقع Template Spec Files على الويب.
من README
على صفحة مشروع xkb-switch ، من المعروف أن البرنامج يتم تجميعه باستخدام أداة cmake
المساعدة. لذلك ، سنختار ملف المواصفات لبرنامج تم إنشاؤه باستخدام CMake ونسخ القالب بالكامل إلى ملف المواصفات الخاص بنا. بالطبع ، من أجل تجميع حزمة RPM بشكل صحيح ، يجب تغيير هذا القالب كثيرًا ، وهو ما سنفعله.
قليلا عن بناء جملة ملف المواصفات
- يتيح لك بناء جملة ملف المواصفات إضافة تعليقات على نمط bash.
- يمكنك استخدام مسافات كمسافات بين القيم في نفس السطر لإنشاء مظهر الأعمدة الزوجية ، لكن الوثائق توصي بشدة باستخدام حرف علامة التبويب (واحد أو اثنين طالما أن الأعمدة متساوية). ملاحظة: في جميع أمثلة التعليمات البرمجية في هذه المقالة ، يتم استخدام مسافات فقط ، لذلك من الأفضل عدم نسخ النص بأكمله من هنا إلى ملف المواصفات الخاص بك ، ولكن طباعته بنفسك.
- تتكون حقول الخيار من اسم خيار خاص بنقطتين والقيمة التالية من خلال علامات التبويب (أو المسافات). حالة الأحرف في أسماء الحقول لا يهم. على سبيل المثال:
Name: xkb-switch
- إذا كانت الكلمة مسبوقة بالرمز
%
(على سبيل المثال ، %description
) ، فهذه هي الكلمة الأساسية الخاصة. يمكن أن يكون استدعاء أمر أو ماكرو أو برنامج نصي. ثم بعد ذلك يمكن الإشارة إلى المعلمات التي يستخدمها. وهناك كلمات رئيسية تشير إلى بداية مجموعة من الأوامر أو الخيارات. بعد ذلك ، يمكن الإشارة إلى المعلمات بجانبها ، وعلى الأسطر التالية يجب أن تكون هناك أوامر أو قائمة بالخيارات التي وصفتها في الفقرة السابقة. بعد هذه الكتلة ، يجب ترك خط فارغ.
- لاستخدام قيمة الثابت ، تحتاج إلى إدراج إنشاء النموذج
%{_}
. يمكن تحديد قيمتها مسبقًا ، أو يمكن تحديدها بواسطة خيار (على سبيل المثال ، Name: xkb-switch
) أو باستخدام الكلمة الأساسية %define
. جميع هذه الثوابت تعتبر أيضا وحدات ماكرو. ستناقش استخدامها في مزيد من التفاصيل أدناه.
رأس ملف المواصفات
في ملف المواصفات ، يتم دائمًا كتابة العنوان أولاً. هذه قائمة بالخيارات التي تنطبق على حزمة RPM الرئيسية. عندما تكون الحزمة جاهزة ، سيتم عرض كل هذه المعلومات تقريبًا عند عرض وصفها. إليك ما تشير إليه الخطوط الفردية:
خلاصة القول:وصف قصير للحزمة.
README.md
الوصف في ملف
README.md
في مشروع
التبديل بين xkb : قم
README.md
Query and change XKB layout state
.
اسم:اسم الحزمة. في حالتنا ، هذا هو
xkb-switch
.
الإصدار:نسخة البرنامج. لمعرفة ذلك ، من الأفضل إلقاء نظرة على ملف
CMakeLists.txt
في مجلد جذر المشروع. بالطبع ، تحتاج إلى أخذ الملف من نسخة المشروع التي سيتم استخدامها للتجميع. إذا كنت تستخدم المشروع الأصلي ،
يمكنك فتح الملف مباشرة على صفحة جيثب الخاصة به . كما ترى ، يتكون الإصدار من
MAJOR_VERSION
و
MINOR_VERSION
و
RELEASE_VERSION
. لقد استخدمت نسخة البرنامج
1.6.0
.
الافراج عن:رقم إصدار الحزمة نفسها. يعرض الوقت الذي يتم فيه تجميع الحزمة مع برنامج من نفس الإصدار. في حالتنا ، هذا هو "1" ، لأنه لم يقم أي شخص بتجميع برنامج من هذا الإصدار. في الحالة المثالية ، إذا حاولنا بالفعل إنشاء الحزمة ووصلت المجموعة إلى النهاية (حتى لو كانت هناك أخطاء) ، فبعد كل محاولة جديدة تحتاج إلى زيادة هذا الرقم بمقدار 1 وفي نفس الوقت لا تحذف الحزم المجمعة القديمة من
rpmbuild/SRPMS
و
rpmbuild/SRPMS
: بعد ذلك ، سيتم إنشاء حزم جديدة برقم بناء جديد. ربما يجب القيام بذلك إذا كنت تستخدم خادمًا خاصًا للتجميع. نحن نستخدم جهاز الكمبيوتر الخاص بنا وبدلاً من ذلك سنقوم بتنظيف المجلدات. إذا كانت الحزمة التي تحتوي على برنامج من هذا الإصدار موجودة بالفعل في مستودعات توزيع Linux ، ولكنك قمت بالإعداد مع الإعدادات الأخرى ، فمن الأفضل تحديد رقم الإصدار بمقدار 1 أكثر من تلك الحزمة.
الترخيص:الاسم المختصر للرخصة التي يتم بموجبها توزيع البرنامج. وفقًا لقواعد Rosa Linux ، يمكنك فقط إنشاء حزم مع ترخيص يتيح التوزيع المجاني.
README.md
معرفة من ملف
README.md
أن الترخيص هو
GNU GPLv3 . لذلك نكتب:
GPLv3+
.
المجموعة:المجموعة أو الفئة التي ينتمي إليها البرنامج. باستخدام هذه المجموعات ، يتم فرز البرامج في قائمة تشغيل التطبيق وفي مدير برنامج النافذة ("إضافة أو إزالة البرامج").
يمكن العثور على قائمة مجموعات روزا لينكس هنا . أعتقد أن
Development\X11
هو الأفضل بالنسبة لنا ، حيث يرتبط البرنامج بـ X11 وهو ضروري بشكل أساسي لإنشاء برامج نصية ومكونات إضافية لـ Vim.
URL:عنوان الإنترنت ، حيث يمكنك تنزيل شفرة المصدر الأصلية للبرنامج. سيتم تحديده عند عرض معلومات حزمة RPM. هذا العنصر اختياري ، لكننا سنشير إلى:
https://github.com/ierton/xkb-switch
Source0:اسم ملف الأرشيف الذي يحتوي على الكود المصدري ، أو عنوان الإنترنت حيث يمكن تنزيله. إذا حددت عنوانًا على الإنترنت ، فسيتم تنزيل الملف أثناء
~/rpmbuild/SOURCES/
إلى
~/rpmbuild/SOURCES/
. إذا كان هذا الملف موجودًا بالفعل ، فلن يتم تنزيله بعد الآن ، أي أن برنامج
rpmbuild
سيستخدم اسم الملف المحدد فقط في نهاية عنوان URL هذا. يمكنك تحديد اسم الملف فقط ، ولكن بعد ذلك سوف يلزم وضعه في المجلد
~/rpmbuild/SOURCES/
يدويًا. من الأفضل تقديم عنوان نسختك من المشروع على جيثب. لقد استخدمت الملف
https://github.com/alexandersolovyov/xkb-switch/archive/master.zip
. يمكنك تحديد عدة مصادر مختلفة لجمع المصادر من عدة محفوظات بمساعدة ملف بقعة واحدة. ثم ، باسم خيار إضافة كل أرشيف
Source1
، يجب زيادة الرقم (
Source1
،
Source2
، إلخ). عناوين الملفات هذه غير مرئية عند عرض معلومات حزمة RPM.
Patch0:هذا الخيار غير موجود في ملف القالب. قد يكون مفيدًا إذا قررت نقل تغييراتك في ملفات مشروع البرنامج في شكل تصحيحات. بالنسبة لخيار
Source0
، يجب الإشارة إلى كل ملف في سطر منفصل ، ويجب زيادة الرقم في نهاية اسم الخيار في كل مرة. يجب أن تكون ملفات التصحيح موجودة في المجلد
~/rpmbuild/SOURCES
(بجانب أرشيف المصدر الذي تم تنزيله). يجب كتابة اسم كل ملف بدون مسار إليه. ليس من الضروري تحديد جميع ملفات التصحيح هنا - فقط الملفات التي تريد تطبيقها يمكن استخدامها.
BuildRequires:الحزم المطلوبة لبناء البرنامج.
cmake
القالب
cmake
. يشير ملف
CMakeLists.txt
إلى أن الحد الأدنى لإصدار CMake للتجميع يجب ألا يقل عن
2.6 ، لذلك من الأفضل تحديد
cmake >= 2.6
. يمكنك إضافة حزم أخرى ، كل منها في سطر منفصل ، باستخدام خيار
BuildRequires:
المنفصل
BuildRequires:
يمكن العثور على قائمة الحزم اللازمة للتجميع من خلال قراءة
README
الخاص بالمشروع والنظر بعناية في ملف
CMakeLists.txt
(وخاصة
FIND_PACKAGE
و
TARGET_LINK_LIBRARY
و
FIND_PROGRAM
). فأنت بحاجة إلى العثور على اسم الحزمة الصحيح في المستودعات باستخدام الأمر
urpmq -a __
. في حالتنا ، يحتوي ملف إعدادات
CMakeLists.txt
(
CMakeLists.txt
) بالفعل على خطوط تحقق من وجود الحزم اللازمة في النظام. لكن من الأفضل تحديد القائمة بأكملها هنا:
# CMake 2.6 BuildRequires: cmake >= 2.6 # C/C++ BuildRequires: gcc # libxkbfile BuildRequires: libxkbfile-devel # X11 libxkbfile, # libx11-devel . # man: BuildRequires: xz
يتطلب: ، يوفر:هذه الخيارات ليست في العينة ، ولكن في بعض الأحيان يمكن أن تأتي في متناول اليدين. أنها تنشئ التبعيات بين الحزم.
Provides
يحدد الخيار الميزات التي توفرها الحزمة التي يتم إنشاؤها. هذا يمكن أن يكون اسم ملف اللغة رأس C ، أو متحركا اسم مكتبة الارتباط أو أي وظيفة خاصة. Requires
ويشير الخيار إلى إمكانيات الحزم الأخرى التي تعتمد عليها الحزمة. مدير الحزم ( rpm
، urpm
أو الآخرين الذين يستخدمون التوزيع)، عندما تبحث عن تبعيات تسعى هذه الفرص بدلا من الأسماء الحزمة. لذلك ، Provides
من الأفضل الإشارة إلى إصدار الفرصة المتوفرة ، ولأيRequires
إصدارات الفرص المتاحة مناسبة. يشار إلى الإصدار من قبل علامات >=
،=
، أو <=
، محاط بالمساحات. عادةً ما تتم الإشارة إلى جميع الخيارات أولاً Requires
، ثم - Provides
، اسم ميزة واحدة لكل سطر - هو نفسه بالنسبة لـ BuildRequires:
. عادة ، عند إنشاء حزم على Rosa Linux ، يتم التعرف على التبعيات تلقائيًا ، ونادراً ما تحتاج هذه الخيارات إلى تحديد.AutoReq: ، AutoProv:إذا كنت بصدد إنشاء برنامج مكتوب بلغة يكون مدير rpm جديدًا عليها أو خاصًا بها ، ولم يتم اكتشاف التبعيات بشكل صحيح تلقائيًا ، يمكنك تعطيل الاكتشاف التلقائي للقدرات (مع AutoProv: no
) و / أو التبعيات (مع مساعدة AutoReq: no
).وصف ٪لم تعد هذه الكتلة جزءًا من الرأس ، ولكنها مرتبطة بها. سيقوم بإضافة وصف كامل للبرنامج إلى حزمة RPM. يجب ترك خط فارغ بعده. قد يكون الوصف على النحو التالي: %description xkb-switch is a C++ program that allows to query and change the keyboard layout state for X11 Window System (XKB) via command line. It provides a command 'xkb-switch', and bindings for API of the Vim text editor via 'libxkbswitch.so'. It is mainly used by a plugin for Vim text editor, vim-xkbswitch. Originally ruby-based code written by J.Broomley.
خط من قالب، تبدأ مع %files
و %find_lang
، إذا كنت بحاجة فقط لجمع تطبيق مع دعم لغات متعددة، لذلك إزالتها.
علاوة على ذلك ، بعد تقسيم السطر ، متبوعًا بالأوامر ووحدات الماكرو التي يجب إكمالها قبل حزم الملفات. تنقسم كل هذه الأوامر إلى كتل محددة باستخدام كلمات أساسية خاصة.
إعداد المصدر
الأول هو كتلة %prep
تشير إلى الأوامر للتحضير للتجميع. في ذلك هو أمر الماكرو %setup
. تقوم بتشغيل برنامج نصي يقوم بما يلي:
- ,
SourceX:
( — Source0:
). , .
~/rpmbuild/SOURCES/
.
~/rpmbuild/BUILD/
.
- .
-q
, .
, %prep
:
rpmbuild -bp ~/rpmbuild/SPECS/xkb-switch.spec
rpmbuild
. , rpm
: rpmbuild
, . ( root
sudo
). rpmbuild
, man rpmbuild
. , , , — , rpmbuild
.
: xkb-switch-1.6.0: No such file or directory
. , ~/rpmbuild/BUILD/xkb-switch-1.6.0
, .
ls ~/rpmbuild/BUILD/
, xkb-switch-master
. %setup
-n
. %prep
- :
%prep %setup -q -n xkb-switch-master
~/rpmbuild/SPECS/cleanup.sh
, BUILD
, , %prep
. , exit 0
. , .
, . %prep
. , , :
%apply_patches
rpmbuild -bp xkb-switch.spec
. — .
Maximum RPM .
.
%build
. README
, cmake ..
make
, - . : , . , %build
:
~/rpmbuild/SPECS/cleanup.sh rpmbuild -bc ~/rpmbuild/SPECS/xkb-switch.spec
exit 0
: .
, . shell ( bash zsh, ). rpmbuild
, . shell - — . ( .)
- , , , %build
shell .
, , . cmake
, , , %cmake
- , , . ( — CMakeLists.txt
). , .
تركيب
, . %install
, , , ~/rpmbuild/BUILDROOT/__-buildroot/
.
__
, Name:
-, ( Version:
-), ( Release:
-), , .
README
, make install
, build
. - - %makeinstall_std -C build
, . ( , ):
~/rpmbuild/SPECS/cleanup.sh rpmbuild -bi ~/rpmbuild/SPECS/xkb-switch.spec
, RPM. - , .
, - . , ~/rpmbild/BUILDROOT/
. ( , , tree
, - Linux.) , , .debug
. , , : .
, , %files
-. , , . .
%files
-. , . Rosa Linux %prep
( - ). , , , , — . - (, , ).
%files
, RPM. , :
%files %{_bindir}/%{name} %{_libdir}/libxkbswitch.so %{_libdir}/libxkbswitch.so.1 %{_libdir}/libxkbswitch.so.%{version} %{_mandir}/man1/%{name}.1.xz
-. , , /usr/lib/rpm/macros
. , %{_bindir}
, %{_libdir}
— , %{_mandir}
— man. %{name}
%{version}
Name:
Version:
-.
:
~/rpmbuild/SPECS/cleanup.sh rpmbuild -ba ~/rpmbuild/SPECS/xkb-switch.spec
… 2 1 . rpmlint
, . , , Rpmlint Errors , :
`xkb-switch.i586: E: in-in-name in name (Badness: 50) 1`خطأ: لم يتم تحديد الإصدار الموجود في اسم حزمة المكتبة بشكل صحيح.`xkb-switch.i586: E: الحزمة القابلة للتنفيذ في المكتبة (Badness: 1) / usr / bin / xkb-switch`خطأ: تحتوي حزمة المكتبة على ملف قابل للتنفيذ.`xkb-switch.i586: W: devel-file-in-non-devel-package / usr / lib / libxkbswitch.so`تحذير من العثور على ملف حزمة تطوير ( -devel
) في حزمة غير مخصصة للتطوير.هل كل شيء واضح؟ لا أعتقد ذلك. دعونا نلقي نظرة فاحصة على ما يحدث هنا.
ما هو rpmlint
Rosa Linux rpmbuild
rpmlint
, . rpmlint
, , . , Rosa Linux ( , rpmlint
) .
, , . ~/rpmbuild/RPMS/_/
rpmlint -i __
.
, RPM - , , , , Rosa Linux, rpmlint -i __
.
RPM Rosa Linux
Rosa Linux 6 . , .
حزمةقابلة للتنفيذ وهو ثنائي. يحتوي فقط على ملف ثنائي أو برنامج نصي مخصص للتنفيذ مباشرة. غالبًا ما يتم تثبيت ملفات هذه الحزم في مجلد /bin/
أو في /usr/bin
. قد تحتوي أيضًا على روابط - لإمكانية الاتصال بالبرنامج باستخدام عدة أسماء مختلفة. اسم الحزمة يتوافق مع اسم البرنامج. هذه الحزم غالباً ما تعتمد على المكتبة.المكتبةتحتوي على ملفات مجمعة من مكتبات ("مشتركة" ، "مشتركة") متصلة ديناميكيًا تستخدمها البرامج. عادة ما يكون هذا هو ملف المكتبة نفسه ، الذي ينتهي اسمه بالإصدار ، ورابط لهذا الملف ، الذي ينتهي اسمه برقم الإصدار الأول. على سبيل المثال ، بالنسبة libxkbfile
لإصدار المكتبة 1.0.2 ، سيكون ملفًا libxkbfile.so.1.0.2
وارتباطًا به ،libxkbfile.so.1
. ينتهي اسم حزمة المكتبة ، والتي يتم التعرف عليها من خلال مستودع المثبت ، برقم الإصدار الأول ويبدأ بالبادئة lib
. المكتبة لها libxkbfile
الاسم الصحيح - libxkbfile1
. ويرجع ذلك إلى حقيقة أن رقم الإصدار الأول عادة ما يتغير فقط مع تغييرات المكتبة غير المتوافقة ، وبالتالي سيكون من الممكن تثبيت عدة حزم مع مكتبة من إصدارات مختلفة إذا كانت بعض البرامج تستخدم الإصدار القديم من المكتبة والبعض الآخر يستخدم إصدارًا أحدث.حزمة للمطورينالملفات الضرورية لتجميع البرامج التي تستخدم المكتبة ، ولكنها غير ضرورية لعمل البرامج الجاهزة. بالنسبة لبرامج C / C ++ البسيطة ، هذا رابط إلى ملف المكتبة ، ولكن بدون إصدارات بالاسم (على سبيل المثال ،libxkbfile.so
) ، وكذلك ملفات الرأس (مع التمديد .h
). اسم الحزمة ينتهي -devel
، على سبيل المثال: libxkbfile-devel
. أثناء التثبيت ، يعتمد دائمًا على المكتبة المناسبة. على سبيل المثال ، الحزمة libxkbfile-devel
تعتمد على libxkbfile1
.مصدر الكودتحتوي مستودعات Rosa Linux على حزم RPM تحتوي على الكود المصدري لبعض البرامج - خاصة فقط تلك التي تحتاج إلى إعادة بناء. تنتهي أسماء هذه الحزم بـ -src
أو -source
(على سبيل المثال ، apache-source
). rpmbuild
يقوم دائمًا بإنشاء مثل هذه الحزمة تلقائيًا ويضعها في ~/rpmbuild/SRPMS/
.رموز التصحيحهذه هي المعلومات التي يمكن استخدامها لتصحيح البرنامج النهائي. أنه يربط المواقع في الملفات المترجمة مع شفرة المصدر. يتم إنشاء هذه الحزم rpmbuild
تلقائيًا بواسطة الفريق ، ويتم تعيين نهاية لاسمها -debuginfo
. لم أجد مثل هذه الحزم في مستودعات روزا لينكس.الوثائقتحتوي مستودعات Rosa Linux على حزم وثائق لمختلف البرامج والمكتبات. أنا (الآن) لا أعرف ميزات بناء مثل هذه الحزم. وعادة ما تنتهي أسمائهم في doc
: على سبيل المثال libx11-doc
، java-1.7.0-openjdk-javadoc
. بالمناسبة ، يتم إنشاء جميعها تقريبًا على نمط مواقع الويب ، ومن الأفضل مشاهدتها ، ومن الأفضل فتح متصفح والانتقال إلى العنوان file:///usr/share/doc/
وتحديد المجلد والملف المطلوبين.نتيجة لدينا
الآن أصبح كل شيء أكثر وضوحا.
xkb-switch
libxkbswitch.so
, , , . , : xkb-switch.i586: W: devel-file-in-non-devel-package /usr/lib/libxkbswitch.so
.
- ,
/usr/lib/libxkbswitch.so.1
/usr/lib/libxkbswitch.so.1.6.0
. , . : xkb-switch.i586: E: executable-in-library-package (Badness: 1) /usr/bin/xkb-switch
.
- , (1). :
xkb-switch.i586: E: incoherent-version-in-name (Badness: 50) 1
.
, rpmlint
, . . xkb-switch , libxkbswitch.so.1.6.0
, Vim . xkb-switch , C C++ . RPM- .
-:
- xkb-switch Summary: Query and change XKB layout state Name: xkb-switch Version: 1.6.0 Release: 1 License: GPLv3+ Group: Development/X11 URL: https://github.com/ierton/xkb-switch Source0: https://github.com/alexandersolovyov/xkb-switch/archive/master.zip BuildRequires: cmake >= 2.6 BuildRequires: gcc BuildRequires: libxkbfile-devel BuildRequires: xz %description xkb-switch is a C++ program that allows to query and change the keyboard layout state for X11 Window System (XKB) via command line. It provides a command 'xkb-switch', and bindings for API of the Vim text editor via 'libxkbswitch.so'. It is mainly used by a plugin for Vim text editor, vim-xkbswitch. Originally ruby-based code written by J.Broomley. %files %{_bindir}/%{name} %{_libdir}/libxkbswitch.so %{_libdir}/libxkbswitch.so.1 %{_libdir}/libxkbswitch.so.%{version} %{_mandir}/man1/%{name}.1.xz #------------------------------------------------------------------ %prep %setup -q -n xkb-switch-master %build %cmake %make %install %makeinstall_std -C build
— , . , , xkb-switch
3 : , . :
/usr/bin/xkb-switch
/usr/share/man/man1/xkb-switch.1.xz
,
- —
/usr/lib/libxkbswitch.so.1
/usr/lib/libxkbswitch.so.1.6.0
,
- —
/usr/lib/libxkbswitch.so
.
-. , ,
- Maximum RPM . - libxkbfile Rosa Linux .
.
— - libxkbfile . - :
%define major 1 %define libname %mklibname xkbswitch %{major} %define develname %mklibname -d xkbswitch
%define
. , ( ) — , . , %{major}
1
, .
%mklibname
«lib», , — ( ). %{libname}
«lib» + «xkbswitch» + ( %{major}) = libxkbswitch1
— .
-d
%mklibname
-devel
. %{develname}
libxkbswitch-devel
— .
Version:
Version: %{major}.6.0
, -.
- . . :
Name: xkb-switch Version: %{major}.6.0 Release: 1 Summary: Query and change XKB layout state License: GPLv3+ Group: Development/X11 URL: https://github.com/alexandersolovyov/xkb-switch Source0: https://github.com/alexandersolovyov/xkb-switch/archive/master.zip BuildRequires: cmake >= 2.6 BuildRequires: gcc BuildRequires: libxkbfile-devel BuildRequires: xz %description xkb-switch is a C++ program that allows to query and change the keyboard layout state for X11 Window System (XKB) via command line. It provides a command 'xkb-switch', and bindings for API of the Vim text editor, a library 'libxkbswitch'. It is mainly used for some plugins for Vim text editor, such as vim-xkbswitch. Originally ruby-based code written by J.Broomley.
- . - , - ( rpm ). %package
. -. , -. Version
, Summary
, Group
. Provides
Requires
, . Name
: , %package
.
. %description
— , %package
.
Rosa Linux - %description
-. libxkbswitch1
:
%package -n %{libname} Version: %{version} Summary: A library for xkb-switch tool, provides API bindings for Vim text editor Group: Development/X11 %description -n %{libname} libxkbswitch library, required by xkb-switch tool. It provides bindings for API of the Vim text editor, which can be used via 'libxkbswitch.so.1'.
-n
%package
%description
, . - , xkb-switch-libxkbswitch1
. libxkbswitch1
. .
:
%package -n %{develname} Version: %{version} Summary: Development library libxkbswitch, provides API bindings for Vim text editor Group: Development/X11 %description -n %{develname} Development files for libxkbswitch. Provides bindings for API of the Vim text editor via 'libxkbswitch.so'.
, . %files
.
, , %package
, %description
%files
. , %description
- . , , — xkb-switch
.
- Rosa Linux %files
, %prep
. :
%files %{_bindir}/%{name} %{_mandir}/%{name}.1.xz %files -n %{libname} %{_libdir}/libxkbswitch.so.%{major} %{_libdir}/libxkbswitch.so.%{version} %files -n %{develname} %{_libdir}/libxkbswitch.so
, :
xkb-switch
~/usr/bin/xkb-switch
~/usr/share/man/man1/xkb-switch.1
,
libxkbswitch1
~/usr/lib/libxkbswitch.so.1
~/usr/lib/libxkbswitch.so.1.6.0
,
libxkbswitch-devel
~/usr/lib/libxkbswitch.so
.
cleanup.sh
rpmbuild -ba ~/rpmbuild/SPECS/xkb-switch.spec
. 3 :
libxkbswitch1.i586: W: no-documentation libxkbswitch-devel.i586: W: no-documentation libxkbswitch-devel.i586: W: no-dependency-on libxkbswitch/libxkbswitch-libs/liblibxkbswitch
, . , . . دعنا نحاول معرفة ذلك.
, , , README.md
. %files
— %doc
:
%doc README.md
. %doc
— . ~/rpmbuild/BUILD/xkb-switdh-master/README.md
.
: libxkbswitch-devel.i586: W: no-dependency-on libxkbswitch/libxkbswitch-libs/liblibxkbswitch
. , libxkbswitch-devel
libxkbswitch
.
rpm -qp --
. :
[user@pc ~] $ cd ~/rpmbuild/RPMS/i586/ [user@pc ~/rpmbuild/RPMS/i586] $ ls libxkbswitch1-1.6.0-1-rosa2014.1.i586.rpm xkb-switch-1.6.0-1-rosa2014.1.i586.rpm libxkbswitch-devel-1.6.0-1-rosa2014.1.i586.rpm xkb-switch-debuginfo-1.6.0-1-rosa2014.1.i586.rpm [user@pc ~/rpmbuild/RPMS/i586] $ rpm -qp --provides libxkbswitch1-1.6.0-1-rosa2014.1.i586.rpm libxkbswitch.so.1 libxkbswitch1 = 1.6.0-1:2014.1 [user@pc ~/rpmbuild/RPMS/i586] $ rpm -qp --provides libxkbswitch-devel-1.6.0-1-rosa2014.1.i586.rpm devel(libxkbswitch) libxkbswitch-devel = 1.6.0-1:2014.1 [user@pc ~/rpmbuild/RPMS/i586] $ rpm -qp --requires libxkbswitch-devel-1.6.0-1-rosa2014.1.i586.rpm devel(libX11) devel(libgcc_s) devel(libstdc++) devel(libxkbfile) rpmlib(PayloadIsXz) <= 5.2-1 [user@pc ~/rpmbuild/RPMS/i586] $ rpm -qp --requires xkb-switch-1.6.0-1-rosa2014.1.i586.rpm libc.so.6 libc.so.6(GLIBC_2.0) libc.so.6(GLIBC_2.1.3) libgcc_s.so.1 libgcc_s.so.1(GCC_3.0) libstdc++.so.6 libstdc++.so.6(CXXABI_1.3) libstdc++.so.6(GLIBCXX_3.4) libstdc++.so.6(GLIBCXX_3.4.11) libstdc++.so.6(GLIBCXX_3.4.20) libstdc++.so.6(GLIBCXX_3.4.9) libxkbswitch.so.1 rpmlib(PayloadIsXz) <= 5.2-1
, libxkbswitch1
libxkbswitch.so.1
libxkbswitch1
. xkb-switch
libxkbswitch.so.1
, libxkbswitch-devel
libxkbswitch1
. , %package
libxkbswitch-devel
. :
%package -n %{develname} Version: %{version} Summary: Development library libxkbswitch, provides API bindings for Vim text editor Group: Development/X11 Requires: %{libname} >= %{version}
, … . libxkbswitch-devel
, , . , , rpmbuild
.
-, ( README.md
), — :
- %define major 1 %define libname %mklibname xkbswitch %{major} %define develname %mklibname -d xkbswitch # Main package. Automaticaly requires libxkbswitch and libxkbswitch-devel Name: xkb-switch Version: %{major}.6.0 Release: 1 Summary: Query and change XKB layout state License: GPLv3+ Group: Development/X11 URL: https://github.com/alexandersolovyov/xkb-switch Source0: https://github.com/alexandersolovyov/xkb-switch/archive/master.zip BuildRequires: cmake >= 2.6 BuildRequires: gcc BuildRequires: libxkbfile-devel BuildRequires: xz %description xkb-switch is a C++ program that allows to query and change the keyboard layout state for X11 Window System (XKB) via command line. It provides a command 'xkb-switch', and bindings for API of the Vim text editor, a library 'libxkbswitch'. It is mainly used for some plugins for Vim text editor, such as vim-xkbswitch. Originally ruby-based code written by J.Broomley. # libxkbswitch %package -n %{libname} Version: %{version} Summary: A library for xkb-switch tool, provides API bindings for Vim text editor Group: Development/X11 %description -n %{libname} libxkbswitch library, required by xkb-switch tool. It provides bindings for API of the Vim text editor, which can be used via 'libxkbswitch.so.1'. # libxkbswitch-devel %package -n %{develname} Version: %{version} Summary: Development library libxkbswitch, provides API bindings for Vim text editor Group: Development/X11 Requires: %{libname} >= %{version} %description -n %{develname} Development files for libxkbswitch. Provides bindings for API of the Vim text editor via 'libxkbswitch.so'. # xkb-switch %files %{_bindir}/%{name} %{_mandir}/man1/%{name}.1.xz # libxkbswitch1 %files -n %{libname} %{_libdir}/libxkbswitch.so.%{major} %{_libdir}/libxkbswitch.so.%{version} %doc README.md # libxkbswitch-devel %files -n %{develname} %{_libdir}/libxkbswitch.so %doc README.md #------------------------------------------------------------------ %prep %setup -q -n xkb-switch-master %build %cmake %make %install %makeinstall_std -C build
استنتاج
, RPM Rosa Linux ( ). , -. , — , , rpmrc , ABF , — .
— , -, - , — .
rpmbuild -bp specfile.spec قمبتشغيل الإعداد (٪ الإعدادية).rpmbuild -bc specfile.specتشغيل تجميع (٪ بناء) وجميع الإجراءات السابقة.rpmbuild -bi specfile.specتشغيل psevdoustanovku (تثبيت٪) وجميع الإجراءات السابقة.rpmbuild -ba specfile.specبناء الحزم تماما.التحقق من الحزمة النهائية
rpmlint -i package_file_name.rpmفحص عام - مدى جودة الحزمة.rpm -qp - يوفر package_filename.rpmتحقق من "الميزات" التي توفرها الحزمة.rpm -qp - يتطلب package_filename.rpmتحقق من "إمكانيات" الحزم الأخرى التي تعتمد عليها هذه الحزمة.rpm -qpl package_file_name.rpmقائمة الملفات الموجودة في الحزمة.rpm -qpi package-file-name.rpmمعلومات حول الحزمة (من "رأس" ملف المواصفات أو من كتلة الحزمة٪ )., p
. , Rosa Linux, . urpmq
, rpm -q
. , urpmq -l _
, urpmq --requires _
.
( )
- Building RPMs — Quick Start — RPM Rosa Linux.
- RPM — , , . .
- RPM: spec — - Rosa Linux.
- Maximum RPM —
rpm
RPM- RedHat Linux. , Rosa Linux. . - Template Spec Files —
.spec
. , -. - Automatic Build Farm (ABF) — Rosa Linux. , , ,
.spec
. -. - Rpmlint Errors — ,
rpmlint
. - Packaging Group — Rosa Linux.
- Rosa Linux .
- Git — — Git .