موتور - ماهو rpm




ما هو الحد الأدنى الذي يجب القيام به لإنشاء ملف RPM؟ (6)

للحصول على مبنى RPM السريع ، تحقق من Togo:

https://github.com/genereese/togo-rpm

يحتوي المشروع على دليل البدء السريع وقد تمكنت من إنشاء RPM أساسي في أقل من 3 دقائق.

مثال باستخدام البيانات المقدمة في السؤال الأصلي:

1) إنشاء دليل المشروع باستخدام البرنامج النصي:

$ togo project create foobar; cd foobar

2) جعل هيكل الدليل المطلوب تحت ./root ونسخ ملفاتك فيه:

$ mkdir -p root/etc; cp /path/to/foobar.conf root/etc/
$ mkdir -p root/usr/bin; cp /path/to/foobar root/usr/bin/

3) استبعاد الدلائل المملوكة للنظام من ملكية RPM الخاصة بك:

$ togo file exclude root/etc root/usr/bin

4) (اختياري) قم بتعديل المواصفات التي تم توليدها لتغيير وصف الحزمة / التبعيات / الإصدار / أيا كان ، الخ:

$ vi spec/header

5) بناء RPM:

$ togo build package

- و يبصق RPM الخاص بك في الدليل. / rpms.

أريد فقط إنشاء ملف RPM لتوزيع ثنائي Linux الخاص بي "foobar" ، مع اثنين فقط من التبعيات. يحتوي على ملف config ، /etc/foobar.conf ويجب تثبيته في / usr / bin / foobar.

لسوء الحظ ، فإن وثائق دورة RPM هي 27 فصلاً ، ولدي حقاً ليس لديّ يوم للجلوس والقراءة ، لأنني مشغول أيضًا في إنشاء برامج تثبيت .deb و EXE لمنصات أخرى.

ما هو الحد الأدنى المطلق الذي يتعين علي القيام به لإنشاء RPM؟ افترض أن foobar الثنائي و foobar.conf في دليل العمل الحالي.


أنا أفعل في الغالب ثنائي دورة في الدقيقة لكل تطبيقات التعبئة والتغليف الملكية - أيضا أكثر مثل websphere - على لينكس. لذا يمكن أن تكون خبرتي مفيدة أيضًا ، بالإضافة إلى أنه من الأفضل أن تقوم بعائد RPM صحيح إذا استطعت. لكنني استطرادا.

لذا فإن الخطوة الأساسية لتعبئة برنامج (ثنائي) الخاص بك هي على النحو التالي - أعتقد أن البرنامج هو toybinprog مع الإصدار 1.0 ، يجب تثبيت conf في /etc/toybinprog/toybinprog.conf ولديك بن لتركيبها في / usr / bin دعا tobinprog:

1. قم بإنشاء rpm build env لـ RPM <4.6،4.7

mkdir -p ~/rpmbuild/{RPMS,SRPMS,BUILD,SOURCES,SPECS,tmp}

cat <<EOF >~/.rpmmacros
%_topdir   %(echo $HOME)/rpmbuild
%_tmppath  %{_topdir}/tmp
EOF

cd ~/rpmbuild

2. إنشاء tarball من المشروع الخاص بك

mkdir toybinprog-1.0
mkdir -p toybinprog-1.0/usr/bin
mkdir -p toybinprog-1.0/etc/toybinprog
install -m 755 toybinprog toybinprog-1.0/usr/bin
install -m 644 toybinprog.conf toybinprog-1.0/etc/toybinprog/

tar -zcvf toybinprog-1.0.tar.gz toybinprog-1.0/

3. نسخ إلى المصادر دير

cp toybinprog-1.0.tar.gz SOURCES/

cat <<EOF > SPECS/toybinprog.spec
# Don't try fancy stuff like debuginfo, which is useless on binary-only
# packages. Don't strip binary too
# Be sure buildpolicy set to do nothing
%define        __spec_install_post %{nil}
%define          debug_package %{nil}
%define        __os_install_post %{_dbpath}/brp-compress

Summary: A very simple toy bin rpm package
Name: toybinprog
Version: 1.0
Release: 1
License: GPL+
Group: Development/Tools
SOURCE0 : %{name}-%{version}.tar.gz
URL: http://toybinprog.company.com/

BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root

%description
%{summary}

%prep
%setup -q

%build
# Empty section.

%install
rm -rf %{buildroot}
mkdir -p  %{buildroot}

# in builddir
cp -a * %{buildroot}


%clean
rm -rf %{buildroot}


%files
%defattr(-,root,root,-)
%config(noreplace) %{_sysconfdir}/%{name}/%{name}.conf
%{_bindir}/*

%changelog
* Thu Apr 24 2009  Elia Pinto <[email protected]> 1.0-1
- First Build

EOF

4. بناء المصدر و rpm الثنائي

rpmbuild -ba SPECS/toybinprog.spec

و هذا كل شيء.

نأمل أن تكون هذه المساعدة


إذا كنت معتادًا على Maven ، فهناك أيضًا rpm-maven-plugin الذي يبسّط عملية إنشاء RPM: عليك كتابة pom.xml فقط والتي سيتم استخدامها بعد ذلك لإنشاء RPM. يتم إنشاء بيئة إنشاء RPM ضمنيًا بواسطة المكون الإضافي.


طريقة سهلة لبناء حزمة rpm من ثنائي (تم اختبار هذه الخطوات مع Fedora 18):

1) أولاً يجب عليك تثبيت rpmdevtools ، لذلك قم بتشغيل هذه الأوامر (الانتباه: تشغيل كمستخدم عادي)

$ sudo yum install rpmdevtools rpmlint
$ rpmdev-setuptree

2) في المجلد ~ / rpmbuild / SPECS إنشاء ملف جديد: package_name.spec

3) فتحه مع محرر (مثل gedit) وكتابة هذا:

Name:           package_name
Version:        1.0
Release:        1
Summary:        Short description (first char has to be uppercase)

License:        GPL
URL:            www. your_website/

BuildRequires:  package_required >= (or ==, or <=) 1.0.3 (for example)

%description
Description with almost 79 characters (first char has to be uppercase)

#This is a comment (just as example)

%files
/usr/bin/binary_file.bin
/usr/share/applications/package_name.desktop
/usr/share/pixmaps/package_name.png

%changelog
* date Packager's Name <packager's_email> version-revision
- Summary of changes

#For more details see: docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/html/Packagers_Guide/sect-Packagers_Guide-Creating_a_Basic_Spec_File.html

4) جعل ~ / rpmbuild / BUILDROOT / package_name-version-release.i386 وإعادة إنتاج المسارات حيث سيتم وضع الملفات في هذه الحالة على سبيل المثال إنشاء:

  • ~ / rpmbuild / BUILDROOT / PACKAGE_NAME-الإصدار release.i386 / البيرة / بن /
  • ~ / rpmbuild / BUILDROOT / PACKAGE_NAME-الإصدار release.i386 / البيرة / مشاركة / تطبيقات /
  • ~ / rpmbuild / BUILDROOT / PACKAGE_NAME-الإصدار release.i386 / البيرة / حصة / pixmaps /

5) ضع في هذه المجلدات الملفات التي تريد إدراجها في الحزمة:

  • ~ / rpmbuild / BUILDROOT / PACKAGE_NAME-الإصدار release.i386 / البيرة / بن / binary_file.bin
  • ~ / rpmbuild / BUILDROOT / PACKAGE_NAME-الإصدار release.i386 / البيرة / مشاركة / تطبيقات / package_name.desktop
  • ~ / rpmbuild / BUILDROOT / PACKAGE_NAME-الإصدار release.i386 / البيرة / حصة / pixmaps / package_name.png

usr / share / pixmaps / package_name.png هو رمز ثنائي usr / share / applications / package_name.desktop هي قواعد لإدراج البرنامج في إدخالات القائمة

6) يجب أن يكون package_name.desktop كالتالي:

[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=example
GenericName=Short description
Comment=Comment of the application
Exec=package_name
Icon=package_name
Terminal=false
Categories=System;

الفئات هي التالية: standards.freedesktop.org/menu-spec/latest/apa.html

7) تشغيل $ rpmbuild -bb ~/rpmbuild/SPECS/package_name.spec

8) بنيت الحزمة الخاصة بك في مجلد ~ / rpmbuild / RPMS

إذا قمت بتثبيت هذه الحزمة ، يتم تثبيت:

  • /usr/bin/binary_file.bin
  • /usr/share/applications/package_name.desktop
  • /usr/share/pixmaps/package_name.png

شكرا ل: losurs.org/docs/tips/redhat/binary-rpms

لمزيد من التفاصيل لبناء rpm إلقاء نظرة على هذا الرابط .

برنامج جافا جافا لبناء rpm: https://sourceforge.net/projects/javarpmbuilder/


عملية توليد RPM من الملف المصدر:

  1. تنزيل ملف المصدر مع.
  2. تثبيت rpm-build و rpmdevtools من yum install. (سيتم إنشاء مجلد rpmbuild ... يجب إنشاء مجلدات ومصدر و RPMS .. داخل المجلد rpmbuild).
  3. نسخ المصدر code.gz إلى مجلد المصادر. (rpmbuild / SOURCES)
  4. قم بإزالة الكرة القطران باستخدام الأمر التالي. انتقل إلى مجلد المصادر: rpmbuild / SOURCES حيث يوجد ملف tar. الأمر: على سبيل المثال ، سيتم إنشاء مجلد httpd-2.22.tar.gz httpd-2.22 tar -xvzf في نفس المسار.
  5. انتقل إلى المجلد الذي تم استخراجه ثم اكتب الأمر أدناه: ./configure --prefix = / usr / local / apache2 - مع تضمين - apr - قابل للتطبيق - الوكيل - تمكين - الوكيل - الموازن - مع - mpm = worker - -sable-mods-static = all (قد يختلف التكوين وفقًا للمصدر الذي يجب أن تقوم RPM ببنائه-- لقد قمت بعمله مع apache HTTPD الذي يحتاج إلى حزمة التبعية apr-apr).
  6. قم بتشغيل الأمر أدناه بمجرد نجاح التكوين: make
  7. بعد تنفيذ successfull od جعل الأمر تشغيل: تحقق في هذا المجلد نفسه. (إذا لم يكن لديك برنامج التحقق قم بتنزيل أحدث إصدار من الموقع) كما أن برنامج التحقق من البرنامج لديه علة يمكن حلها بالطريقة التالية ::::: حدد موقع checkinstallrc ثم استبدل TRANSLATE = 1 إلى TRANSLATE = 0 باستخدام الأمر vim. تحقق أيضًا من استثناء الحزمة: EXCLUDE = "/ selinux"
  8. سوف يطلب منك خيار التثبيت (اكتب R إذا كنت تريد tp build rpm للملف المصدر)
  9. سوف يتم إنشاء ملف .rpm Done في مجلد RPMS داخل ملف rpmbuild / RPMS ... ALL BEST ....