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:

  1. BUILD – jaħżen diversi direttorji %buildroot meta jinbnew pakketti.
  2. RPMS – se jkun fih RPMs binarji fis-sottodirettorji tal-Arkitettura.
  3. SORSI – jaħżnu arkivji tas-sors ikkompressati u kwalunkwe garża, dan huwa fejn il-kmand rpmbuild se jfittexhom.
  4. SPECS – jaħżen il-fajls SPEC.
  5. 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.