Kif toħloq Pakkett GNU Hello World RPM f'Fedora
sistema ta 'ġestjoni ta' pakketti għal Linux. Għalkemm oriġinarjament inħoloq għall-użu fir-Red Hat Linux, issa huwa użat f'ħafna distribuzzjonijiet Linux bħal CentOS, Fedora u OpenSuse. Importanti, l-isem RPM jirreferi għall-programm tal-maniġer tal-pakketti u l-.rpm
huwa format ta 'fajl.
F'dan l-artikolu, se nispjegaw dwar il-kitba ta 'fajls RPM, li turi kif faċilment toħloq sors sempliċi u pakketti ta' softwer binarju, pereżempju, pakkett RPM GNU Hello World fid-distribuzzjoni Fedora Linux. Aħna nassumu li għandek xi fehim bażiku ta 'pakketti RPM magħmula minn qabel, u bil-proċess ta' bini ta 'Software Miftuħ Ħieles.
Installa Għodod għall-Iżvilupp f'Fedora
Nibdew billi nwaqqfu l-ambjent ta 'żvilupp f'Fedora Linux billi tħaddem il-kmand li ġej biex tinstalla l-għodda meħtieġa għall-bini ta' RPMs.
$ sudo dnf install fedora-packager @development-tools
Sussegwentement, żid il-kont mhux privileġġjat tiegħek mal-grupp 'mock' kif ġej (issostitwixxi tecmint bl-isem tal-utent attwali tiegħek). Dan jippermettilek tittestja l-proċedura tal-bini f'chroot nadif.
$ sudo usermod -a -G mock tecmint
Issa, oħloq RPM build fid-direttorju ~/rpmbuild
tiegħek u vverifika l-bini billi tuża l-kmandi li ġejjin. Se turi lista ta 'sub-direttorji, li fiha kodiċi tas-sors tal-proġett, fajls ta' konfigurazzjoni RPM u pakketti binarji.
$ rpmdev-setuptree $ tree ~/rpmbuild/
Hawn hu għal xiex huwa maħsub kull direttorju:
- BUILD – jaħżen diversi direttorji %buildroot meta jinbnew pakketti.
- RPMS – se jkun fih RPMs binarji fis-sottodirettorji tal-Arkitettura.
- SORSI – jaħżnu arkivji tas-sors ikkompressati u kwalunkwe garża, dan huwa fejn il-kmand rpmbuild se jfittexhom.
- SPECS – jaħżen il-fajls SPEC.
- SRPMS – jaħżen is-Sors RPM minflok Binary RPM.
Nibnu RPM Hello World.
F'dan il-pass, għandek bżonn tniżżel il-kodiċi tas-sors (magħruf ukoll bħala s-sors upstream) tal-proġett Hello World li qed nippakkjaw, fid-direttorju ~/rpmbuild/SOURCE bil-kmand wget li ġej.
$ cd ~/rpmbuild/SOURCES $ wget http://ftp.gnu.org/gnu/hello/hello-2.10.tar.gz -P ~/rpmbuild/SOURCES
Sussegwentement, ejja kkonfigurat il-pakkett RPM billi tuża fajl .spec
(ejja nsemmuh hello.spec
f'dan il-każ) fid-direttorju ~/rpmbuild/SPECS, billi tuża l-rpmdev- programm newspec.
$ cd ~/rpmbuild/SPECS $ rpmdev-newspec hello $ ls
Imbagħad iftaħ il-fajl hello.spec
billi tuża l-editur favorit tiegħek.
$ vim hello.spec
Il-mudell default għandu jidher bħal dan:
Name: hello Version: Release: 1%{?dist} Summary: License: URL: Source0: BuildRequires: Requires: %description %prep %autosetup %build %configure %make_build %install rm -rf $RPM_BUILD_ROOT %make_install %files %license add-license-file-here %doc add-docs-here %changelog * Tue May 28 2019 Aaron Kili
Ejja nispjegaw fil-qosor il-parametri default f'fajl .spec
:
- Isem – użat biex jiġi stabbilit isem għall-pakkett.
- Verżjoni – għandha tirrifletti upstream.
- Rilaxx – numri li taħdem fi ħdan Fedora.
- Sommarju - hija deskrizzjoni qasira b'linja waħda tal-pakkett, l-ewwel ittra għandha tkun b'ittri kbar biex jiġu evitati lmenti rpmlint.
- Liċenzja – iċċekkja l-istatus tal-Liċenzja tas-softwer billi tispezzjona l-fajls tas-sors u/jew il-fajls tal-LIĊENZJA tagħhom, u/jew billi tkellem lill-awturi.
- URL – jispeċifika l-paġna ewlenija tal-pakkett tas-softwer.
- Source0 – jispeċifika l-fajls tas-sors. Jista' jkun URL dirett jew mogħdija tal-kodiċi tas-sors kompressat tas-softwer.
- BuildRequires – jispeċifika d-dipendenzi meħtieġa biex jinbena s-softwer.
- Jeħtieġ – jispeċifika d-dipendenzi meħtieġa biex jitħaddem is-softwer.
- %prep – jintuża biex jinħoloq l-ambjent għall-bini tal-pakkett rpm.
- %build – jintuża biex jikkompila u jibni l-kodiċi tas-sors.
- %install – dan jintuża biex jiġu installati l-programmi. Hija telenka kmand(i) meħtieġa biex tikkopja l-fajl li jirriżulta mill-proċess tal-bini għad-direttorju BUILDROOT.
- %files – din it-taqsima telenka l-fajls ipprovduti mill-pakkett, li se jiġu installati fis-sistema.
- %changelog - għandu jaħżen ix-xogħol fuq il-preparazzjoni tal-RPM, speċjalment jekk hemm irqajja tas-sigurtà u tal-bug inklużi fuq is-sors bażi upstream. Huwa ġġenerat awtomatikament waqt il-ħolqien tal-fajl hello.spec. Id-dejta tal-changelog normalment tintwera minn
rpm --changelog -q
.
Issa editja l-fajl .spec
tiegħek u agħmel bidliet kif muri.
Name: hello Version: 2.10 Release: 1%{?dist} Summary: The "Hello World" program from GNU License: GPLv3+ URL: http://ftp.gnu.org/gnu/%{name} Source0: http://ftp.gnu.org/gnu/%{name}/%{name}-%{version}.tar.gz BuildRequires: gettext Requires(post): info Requires(preun): info %description The "Hello World" program package %prep %autosetup %build %configure make %{make_build} %install %make_install %find_lang %{name} rm -f %{buildroot}/%{_infodir}/dir %post /sbin/install-info %{_infodir}/%{name}.info %{_infodir}/dir || : %preun if [ $1 = 0 ] ; then /sbin/install-info --delete %{_infodir}/%{name}.info %{_infodir}/dir || : fi %files -f %{name}.lang %{_mandir}/man1/hello.1.* %{_infodir}/hello.info.* %{_bindir}/hello %doc AUTHORS ChangeLog NEWS README THANKS TODO %license COPYING %changelog * Tue May 28 2019 Aaron Kili
Tinduna li użajna xi parametri ġodda fil-fajl ta' hawn fuq li ma ġewx spjegati. Dawn jissejħu macros, użati biex jinbnew invokazzjonijiet tas-sistema definiti mill-RPM biex jiġu stabbiliti mogħdijiet ta 'installazzjoni għall-pakketti. Għalhekk, ġeneralment ikun preferibbli li dawn il-mogħdijiet ma jiġux kodifikati b'mod iebes lanqas f'fajls spec, iżda tuża l-istess macros għall-konsistenza.
Dawn li ġejjin huma makro tal-bini tal-RPM u tad-direttorju flimkien mad-definizzjonijiet u l-valuri awtomatiċi tagħhom:
- %{make_build} – jintuża fit-taqsima %build tal-fajl spec, imexxi l-kmand make.
- %{name} – jiddefinixxi l-isem tal-pakkett jew tad-direttorju.
- %{buildroot} – %{_buildrootdir}/%{name}-%{version}-%{release}.%{_arch}, l-istess bħal $BUILDROOT
- %{_infodir} – %{_datarootdir}/info, default: /usr/share/info
- %{_mandir} – %{_datarootdir}/man, default: /usr/share/man
- %{_bindir} – %{_exec_prefix}/bin, default: /usr/bin
Innota li tista' ssib il-valuri għal dawn il-makros fil-/usr/lib/rpm/platform/*/macros jew irreferi għal Linji Gwida dwar l-Imballaġġ: RPM Macros.
Bini tal-Pakkett RPM
Biex tibni s-sors, il-pakketti binarji u d-debugging, mexxi l-kmand rpmbuild li ġej.
$ rpmbuild -ba hello.spec
Wara l-proċess tal-bini, l-RPMs tas-sors u t-testmenti tal-RPMs binarji jinħolqu fid-direttorji ../SRPMS/
u ../RPMS/
rispettivament. Tista' tuża l-programm rpmlint biex tiċċekkja u tiżgura li l-fajl spec u l-fajls RPM maħluqa jikkonformaw mar-regoli tad-disinn RPM:
$ rpmlint hello.spec ../SRPMS/hello* ../RPMS/*/hello*
Jekk hemm xi żbalji kif muri fil-screenshot ta 'hawn fuq, waħħalhom qabel ma tkun tista' tipproċedi.
Fl-aħħar iżda mhux l-inqas, uża programm mock biex tivverifika li l-bini tal-pakkett jirnexxi fl-ambjent tal-bini ristrett Fedora.
$ mock --verbose ../SRPMS/hello-2.10-1.fc29.src.rpm
Għal aktar informazzjoni, ikkonsulta d-dokumentazzjoni ta' Fedora: Ħolqien ta' Pakketti RPM.
Dak kollox! F'dan l-artikolu, spjegajna kif issaħħaħ is-sistema Fedora tiegħek biex toħloq sors sempliċi u pakkett tas-softwer binarju. Aħna wrejna wkoll kif toħloq pakkett GUN Hello Word RPM. Uża l-formola ta' feedback hawn taħt biex tilħaqna għal kwalunkwe mistoqsija jew kumment.