Bii o ṣe Ṣẹda GNU Hello World RPM Package ni Fedora


eto iṣakoso package fun Lainos. Botilẹjẹpe o ṣẹda ni akọkọ fun lilo ni Red Hat Linux, bayi o ti lo ni ọpọlọpọ awọn pinpin kaakiri Linux bii CentOS, Fedora, ati OpenSuse. Ni pataki, orukọ RPM n tọka si eto oluṣakoso package ati .rpm jẹ ọna kika faili kan.

Ninu àpilẹkọ yii, a yoo ṣalaye lori kikọ awọn faili RPM, fifihan bi o ṣe rọrun lati ṣẹda orisun ti o rọrun ati awọn idii sọfitiwia alakomeji, fun apẹẹrẹ, GNU “Hello World” package RPM ni pinpin Fedora Linux. A ro pe o ti ni diẹ ninu oye oye ti awọn idii RPM ti a ti ṣaju tẹlẹ, ati pẹlu ilana ile Sọfitiwia Open Open Software.

Fi Awọn irinṣẹ Idagbasoke sii ni Fedora

Jẹ ki a bẹrẹ nipa siseto ayika idagbasoke ni Fedora Linux nipa ṣiṣe pipaṣẹ atẹle lati fi sori ẹrọ awọn irinṣẹ pataki fun kikọ awọn RPM.

$ sudo dnf install fedora-packager @development-tools

Nigbamii, ṣafikun akọọlẹ ti ko ni anfani si ẹgbẹ 'ẹlẹya' gẹgẹbi atẹle (rọpo tecmint pẹlu orukọ olumulo rẹ gangan). Eyi yoo jẹ ki o ṣe idanwo ilana ilana kọ ni chroot mimọ.

$ sudo usermod -a -G mock tecmint

Bayi, ṣẹda agbekalẹ RPM ninu itọsọna ~/rpmbuild rẹ ki o ṣayẹwo ile naa nipa lilo awọn ofin wọnyi. Yoo fihan akojọ kan ti awọn ilana-labẹ, eyiti o ni koodu orisun iṣẹ akanṣe, awọn faili iṣeto RPM ati awọn idii alakomeji.

$ rpmdev-setuptree
$ tree ~/rpmbuild/

Eyi ni ohun ti itọsọna kọọkan wa fun:

  1. KỌ - ṣe awọn oriṣiriṣi awọn ilana ilana kọroro% nigba ti a ko awọn idii.
  2. RPMS - yoo ni awọn RPM alakomeji ninu awọn ilana-labẹ-ilana ti Itumọ.
  3. Awọn orisun - awọn ile itaja awọn iwe orisun orisun fisinuirindigbindigbin ati eyikeyi awọn abulẹ, eyi ni ibiti aṣẹ rpmbuild yoo wa fun wọn.
  4. SPECS - tọju awọn faili SPEC.
  5. SRPMS - tọju awọn RPM Orisun dipo RPM Alakomeji kan.

Ilé "Hello World" RPM

Ni igbesẹ yii, o nilo lati ṣe igbasilẹ koodu orisun (ti a tun mọ ni orisun “ilodisi”) ti iṣẹ agbaye Hello World ti a n ṣe apoti, sinu itọsọna ~/rpmbuild/SOURCE pẹlu aṣẹ wget atẹle.

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

Nigbamii ti, jẹ ki a tunto package RPM nipa lilo faili .spec (jẹ ki a lorukọ rẹ hello.spec ninu ọran yii) ninu itọsọna ~/rpmbuild/SPECS, ni lilo rpmdev- eto newspec.

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

Lẹhinna ṣii hello.spec faili nipa lilo olootu ayanfẹ rẹ.

$ vim hello.spec

Awoṣe aiyipada yẹ ki o dabi eleyi:

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

Jẹ ki a ṣalaye ni kukuru awọn ipilẹ aiyipada ninu faili .spec :

  • Orukọ - lo lati ṣeto orukọ fun package.
  • Ẹya - yẹ ki o digi ilosoke.
  • Tu silẹ - awọn nọmba ti o ṣiṣẹ laarin Fedora.
  • Lakotan - jẹ ṣoki kukuru laini kan ti package, lẹta akọkọ yẹ ki o jẹ oke lati yago fun awọn ẹdun rpmlint.
  • Iwe-aṣẹ - ṣayẹwo ipo Iwe-aṣẹ ti sọfitiwia nipasẹ ṣiṣe ayẹwo awọn faili orisun ati/tabi awọn faili Iwe-aṣẹ wọn, ati/tabi nipa sisọrọ si awọn onkọwe naa.
  • URL - ṣalaye oju-iwe ile ti package sọfitiwia naa.
  • Source0 - ṣalaye awọn faili orisun. O le jẹ URL taara tabi ọna ti koodu orisun fisinuirindigbindigbin ti sọfitiwia naa.
  • BuildRequires - ṣalaye awọn igbẹkẹle ti o nilo lati kọ sọfitiwia naa.
  • Beere - ṣalaye awọn igbẹkẹle ti o nilo lati ṣiṣẹ sọfitiwia naa.
  • % imura - ti lo lati ṣẹda ayika fun kikọ package rpm.
  • % kọ - ni a lo lati ṣajọ ati lati kọ awọn koodu orisun.
  • % fi sori ẹrọ - eyi ni a lo lati fi awọn eto sii. O ṣe akojọ awọn aṣẹ (s) lati nilo lati daakọ faili abajade lati ilana kikọ si itọsọna BUILDROOT.
  • % awọn faili - apakan yii ṣe atokọ awọn faili ti a pese nipasẹ package, eyi ti yoo fi sori ẹrọ lori eto naa.
  • % changelog - yẹ ki o tọju iṣẹ lori mura silẹ RPM, paapaa ti aabo ba wa ati awọn abulẹ kokoro ti o wa lori oke orisun orisun ita. O n ṣe ipilẹṣẹ laifọwọyi lakoko ṣiṣẹda faili hello.spec. Awọn data iyipada ni igbagbogbo han nipasẹ rpm --changelog -q .

Bayi ṣatunkọ faili .spec rẹ ki o ṣe awọn ayipada bi o ṣe han.

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

Iwọ yoo ṣe akiyesi pe a ti lo diẹ ninu awọn aye tuntun ninu faili loke ti a ko ti ṣalaye. Iwọnyi ni a pe ni macros, ti a lo lati kọ awọn epe eto ti asọye nipasẹ RPM lati ṣeto awọn ọna fifi sori ẹrọ fun awọn idii. Nitorinaa, o dara julọ nigbagbogbo lati ma ṣe koodu-lile awọn ọna wọnyi ni awọn faili alaye boya, ṣugbọn lo awọn macros kanna fun aitasera.

Atẹle ni agbele RPM ati awọn macros liana papọ pẹlu awọn itumọ wọn ati awọn iye aiyipada:

  • % {make_build} - ti lo ni apakan% kọ ti faili alaye lẹkunrẹrẹ, o n ṣe aṣẹ ṣiṣe.
  • % {orukọ} - ṣalaye package tabi orukọ itọsọna.
  • % {buildroot} -% {_ buildrootdir} /% {orukọ} -% {version} -% {release}.% {_ arch}, bakanna bi $BUILDROOT
  • % {_ infodir} -% {_ datarootdir}/info, aiyipada:/usr/share/info
  • % {_ mandir} -% {_ datarootdir}/ọkunrin, aiyipada:/usr/share/man
  • % {_ bindir} -% {_ exec_prefix}/bin, aiyipada:/usr/bin

Akiyesi pe o le wa awọn iye fun awọn macro wọnyi ni/usr/lib/rpm/pẹpẹ/*/macros tabi tọka si Awọn Itọsọna Apoti: RPM Macros.

Ilé Package RPM

Lati kọ orisun, alakomeji ati n ṣatunṣe awọn idii, ṣiṣe aṣẹ rpmbuild atẹle.

$ rpmbuild -ba hello.spec

Lẹhin ilana kikọ, awọn RPM orisun ati awọn ifẹ RPMs alakomeji ni a ṣẹda ni ../SRPMS/ ati ../RPMS/ awọn ilana lẹsẹsẹ. O le lo eto rpmlint lati ṣayẹwo ati rii daju pe faili alaye ati awọn faili RPM ti o ṣẹda baamu si awọn ofin apẹrẹ RPM:

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

Ti awọn aṣiṣe eyikeyi wa bi o ṣe han ninu sikirinifoto ti o wa loke, ṣatunṣe wọn ṣaaju ki o to tẹsiwaju.

Ni ikẹhin ṣugbọn ko kere ju, lo eto ẹlẹya lati ṣayẹwo pe kikọ package yoo ṣaṣeyọri ni agbegbe kọ ihamọ Fedora.

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

Fun alaye diẹ sii, kan si iwe Fedora: Ṣiṣẹda Awọn idii RPM.

Gbogbo ẹ niyẹn! Ninu àpilẹkọ yii, a ti ṣalaye bii o ṣe le ṣe igbesẹ eto Fedora rẹ lati ṣẹda orisun ti o rọrun ati package software alakomeji. A tun fihan bi a ṣe le ṣẹda package GUN Hello Ọrọ RPM. Lo fọọmu esi ni isalẹ lati de ọdọ wa fun eyikeyi awọn ibeere tabi awọn asọye.