Otu esi emepụta ngwugwu GNU Hello World RPM na Fedora


Sistemụ njikwa ngwugwu maka Linux. Ọ bụ ezie na e kere ya na mbụ maka ojiji na Red Hat Linux, ugbu a, a na-eji ya n'ọtụtụ nkesa Linux dị ka CentOS, Fedora, na OpenSuse. N'ụzọ dị mkpa, aha RPM na-ezo aka na mmemme njikwa ngwugwu yana .rpm bụ usoro faịlụ.

N'isiokwu a, anyị ga-akọwa na ịde faịlụ RPM, na-egosi otu esi emepụta ngwa ngwa dị mfe na nchịkọta software ọnụọgụ abụọ, dịka ọmụmaatụ, GNU Hello World RPM ngwugwu na Fedora Linux nkesa. Anyị na-eche na ị nwere nghọta ụfọdụ nke ngwungwu RPM emeburu, yana site na usoro iwulite ngwanrọ mepere emepe efu.

Wụnye ngwa mmepe na Fedora

Ka anyị bido site n'ịtọlite gburugburu mmepe na Fedora Linux site n'ịgba iwu na-esonụ iji wụnye ngwá ọrụ dị mkpa maka iwulite RPM.

$ sudo dnf install fedora-packager @development-tools

Na-esote, tinye akaụntụ gị na-enweghị ihe ùgwù na otu 'mock' dị ka ndị a (dochie tecmint na aha njirimara gị n'ezie). Nke a ga - enyere gị aka ịnwale usoro ihe owuwu na chroot dị ọcha.

$ sudo usermod -a -G mock tecmint

Ugbu a, mepụta ihe nrụpụta RPM n'ime ndekọ ~/rpmbuild gị wee nyochaa ihe owuwu ahụ site na iji iwu ndị a. Ọ ga-egosi ndepụta nke sub-directories, nke nwere koodu isi mmalite ọrụ, faịlụ nhazi RPM na nchịkọta ọnụọgụ abụọ.

$ rpmdev-setuptree
$ tree ~/rpmbuild/

Nke a bụ ihe akwụkwọ ndekọ aha ọ bụla pụtara maka:

  1. BUILD – na-echekwa akwụkwọ ndekọ aha %buildroot dị iche iche mgbe arụrụ ngwugwu.
  2. RPMS - ga-enwe RPM ọnụọgụ abụọ n'ime akwụkwọ ndekọ aha nke Architecture.
  3. ISIYI – na-echekwa ebe nchekwa isi mmalite na patches ọ bụla, nke a bụ ebe iwu rpmbuild ga-achọ ha.
  4. SPECS – na-echekwa faịlụ SPEC.
  5. SRPMS – na-echekwa isi iyi RPM kama ịbụ ọnụọgụ abụọ RPM.

Iwulite RPM Ndewo Ụwa.

N'ime usoro a, ịkwesịrị ibudata koodu iyi (nke a makwaara dị ka isi iyi upstream) nke ọrụ Hello World anyị na-akwakọba, n'ime ~/rpmbuild/SOURCE ndekọ na iwu wget na-esonụ.

$ cd ~/rpmbuild/SOURCES
$ wget http://ftp.gnu.org/gnu/hello/hello-2.10.tar.gz -P ~/rpmbuild/SOURCES

Ọzọ, ka anyị hazie ngwugwu RPM site na iji faịlụ .spec (ka anyị kpọọ ya hello.spec na nke a) na ~/rpmbuild/SPECS ndekọ, na-eji rpmdev- mmemme newspec.

$ cd ~/rpmbuild/SPECS
$ rpmdev-newspec hello
$ ls

Mepee faịlụ hello.spec site na iji nchịkọta akụkọ ọkacha mmasị gị.

$ vim hello.spec

template ndabara kwesịrị ịdị ka nke a:

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

Ka anyị kọwa nkenke nkenke paramita ndabara na faịlụ .spec:

  • Aha – eji edobe aha maka ngwugwu.
  • Ụdị - kwesịrị igosipụta n'elu iyi.
  • Mwepụta – nọmba ị na-arụ ọrụ n'ime Fedora.
  • Nchịkọta - bụ nkọwa nke otu ahịrị dị nkenke nke ngwugwu ahụ, mkpụrụedemede mbụ kwesịrị ịbụ nke ukwu iji zere mkpesa rpmlint.
  • Ikikere – lelee ọkwa ikike nke ngwa ngwa site na inyocha faịlụ isi mmalite na/ma ọ bụ faịlụ ikike ha, na/ma ọ bụ site n'ịgwa ndị odee okwu.
  • URL – ezipụta ibe mbụ nke ngwungwu ngwanrọ.
  • Isi iyi0 - ezipụta faịlụ isi mmalite. Ọ nwere ike ịbụ URL kpọmkwem ma ọ bụ ụzọ koodu isi mmalite nke ngwanro ahụ.
  • BuildRequires – na-akọwapụta ndabere achọrọ iji wuo ngwanro a.
  • Achọrọ – ezipụta ihe ndabere achọrọ iji mee ngwa ngwa.
  • % prep - a na-eji mepụta gburugburu maka iwu ngwugwu rpm.
  • %build – ka eji achịkọta na iji wuo koodu isi mmalite.
  • %wụnye – nke a na-eji wụnye mmemme. Ọ depụtara iwu (s) achọrọ iji detuo faịlụ nsonaazụ sitere na usoro nrụpụta gaa na ndekọ BUILDROOT.
  • % faịlụ - ngalaba a na-edepụta faịlụ ndị ngwugwu ahụ wetara, nke a ga-etinye na sistemụ.
  • % Changelog - kwesịrị ịchekwa ọrụ na ịkwadebe RPM, ọkachasị ma ọ bụrụ na enwere nchekwa na mpe mpe mpe akwa gụnyere n'elu isi iyi elu. A na-emepụta ya na-akpaghị aka mgbe ị na-eke faịlụ hello.spec. A na-egosipụtakarị data mgbanwe site na rpm --changelog -q .

Ugbu a dezie faịlụ .spec gị wee mee mgbanwe dịka egosiri.

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

Ị ga-achọpụta na anyị ejirila ụfọdụ paramita ọhụrụ na faịlụ dị n'elu nke a na-akọwabeghị. A na-akpọ ndị a macros, nke a na-eji wuo oku sistemu nke RPM kọwapụtara iji tọọ ụzọ nwụnye maka ngwugwu. Ya mere, ọ na-akacha mma ka ị ghara koodu siri ike na ụzọ ndị a na faịlụ ndị dị iche iche, mana jiri otu macros maka ịdị n'otu.

Ndị na-esonụ bụ RPM wuru na ndekọ macro yana nkọwa ha na ụkpụrụ ndabara:

  • %{make_build} - a na-eji na %build ngalaba nke faịlụ spec, ọ na-eme iwu ime.
  • %{name} - na-akọwa ngwugwu ma ọ bụ aha ndekọ.
  • %{buildroot} – %{_buildrootdir}/%{name}-%{ụdị}-%{release}.%{_arch}, dị ka $BUILDROOT
  • %{_infodir} – %{_datarootdir}/ozi, ndabara: /usr/share/ozi
  • %{_mandir} – %{_datarootdir}/nwoke, ndabara: /usr/share/man
  • %{_bindir} – %{_exec_prefix}/bin, ndabara: /usr/bin

Mara na ị nwere ike ịchọta ụkpụrụ maka macros ndị a na /usr/lib/rpm/platform/*/macros ma ọ bụ rụtụ aka na ntuziaka nkwakọ ngwaahịa: RPM Macros.

Iwulite ngwugwu RPM

Iji wuo isi mmalite, ngwungwu ọnụọgụ abụọ na nbizi, gbaa iwu rpmbuild a.

$ rpmbuild -ba hello.spec

Mgbe usoro iwu ahụ gasịrị, a ga-emepụta isi iyi RPM na ọnụọgụ abụọ RPM n'ime akwụkwọ ndekọ aha ../SRPMS/ na ../RPMS/ n'otu n'otu. Ị nwere ike iji mmemme rpmlint lelee ma hụ na faịlụ spec na faịlụ RPM emepụtara kwekọrọ n'iwu imewe RPM:

$ rpmlint hello.spec ../SRPMS/hello* ../RPMS/*/hello*

Ọ bụrụ na enwere mperi dị ka egosiri na nseta ihuenyo dị n'elu, dozie ha tupu ị gaa n'ihu.

N'ikpeazụ ma ọ dịghị ihe ọzọ, jiri mmemme ịkwa emo iji lelee na ngwugwu ngwugwu ga-aga nke ọma na gburugburu ebe obibi amachibidoro Fedora.

$ mock --verbose ../SRPMS/hello-2.10-1.fc29.src.rpm

Maka ozi ndị ọzọ, lelee akwụkwọ Fedora: Ịmepụta ngwugwu RPM.

Ọ gwụla! N'isiokwu a, anyị akọwala otu esi agbalite usoro Fedora gị iji mepụta ebe dị mfe na ngwugwu ngwanrọ ọnụọgụ abụọ. Anyị gosikwara otu esi emepụta ngwugwu GUN Ndewo Okwu RPM. Jiri mpempe nzaghachi dị n'okpuru ka iru anyị maka ajụjụ ma ọ bụ ikwu ọ bụla.