Fedora-da GNU Salam World RPM paketini nädip döretmeli


Linux üçin paket dolandyryş ulgamy. Ilki Red Hat Linux-da ulanmak üçin döredilen bolsa-da, indi CentOS, Fedora we OpenSuse ýaly köp Linux paýlanyşynda ulanylýar. Möhümi, RPM ady paket dolandyryjy programmasyna we .rpm faýl formatyna degişlidir.

Bu makalada, ýönekeý çeşme we ikilik programma üpjünçilik paketlerini nädip döredip boljakdygyny görkezýän RPM faýllaryny ýazmak barada düşündireris, mysal üçin Fedora Linux paýlanyşynda GNU “Salam World” RPM bukjasy. Öň taýýarlanan RPM paketleri we Mugt Açyk Çeşme Programma üpjünçiligini gurmak prosesi barada birneme düşünýärsiňiz öýdýäris.

Fedora ösüş gurallaryny guruň

Fedora Linux-da ösüş gurşawyny gurmak bilen, RPM gurmak üçin zerur gurallary gurmak üçin aşakdaky buýrugy işledip başlalyň.

$ sudo dnf install fedora-packager @development-tools

Ondan soň, artykmaç däl hasabyňyzy “masgaralamak” toparyna aşakdaky ýaly goşuň (tekminti hakyky ulanyjy adyňyz bilen çalşyň). Bu, gurluşyk prosedurasyny arassa görnüşde barlamaga mümkinçilik berer.

$ sudo usermod -a -G mock tecmint

Indi, ~/rpmbuild katalogyňyzda RPM gurluşyny dörediň we aşakdaky buýruklary ulanyp gurluşy barlaň. Taslamanyň deslapky kody, RPM konfigurasiýa faýllary we ikilik paketleri öz içine alýan kiçi kataloglaryň sanawyny görkezer.

$ rpmdev-setuptree
$ tree ~/rpmbuild/

Ine, her bir katalog üçin niýetlenen:

  1. BUILD - paketler gurlanda dürli% gurluşyk kataloglaryny saklaýar.
  2. RPMS - Arhitekturanyň kiçi kataloglarynda ikilik RPM-leri öz içine alar.
  3. GÖRNÜŞLER - gysylan çeşme arhiwlerini we islendik ýamalary saklaýar, rpmbuild buýrugy şu ýerden gözlär.
  4. SPECS - SPEC faýllaryny saklaýar.
  5. SRPMS - Ikilik RPM ýerine çeşme RPM saklaýar.

“Salam dünýä” RPM gurmak

Bu ädimde, gaplaýan “Salam World” taslamasynyň deslapky kody (“ýokarky akym” diýlip hem atlandyrylýar) aşakdaky wget buýrugy bilen ~/rpmbuild/SOURCE katalogyna göçürip almaly.

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

Ondan soň, rpmdev- ulanyp, r/rpmbuild/SPECS katalogynda .spec faýly (bu ýagdaýda hello.spec adyny göreliň) RPM paketini düzeliň. habarlar programmasy.

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

Soňra halaýan redaktoryňyzy ulanyp hello.spec faýly açyň.

$ vim hello.spec

Adaty şablon şeýle bolmaly:

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

Geliň, .spec faýlyndaky esasy parametrleri gysgaça düşündireliň:

  • Name - bukjanyň adyny bellemek üçin ulanylýar.
  • Wersiýa - ýokarky aýna aýna bolmaly.
  • Release - Fedora-da işleýän sanlar.
  • Gysgaça mazmun - bukjanyň gysga bir setirli beýany, birinji harp rpmlint şikaýatlaryndan gaça durmak üçin baş harp bolmaly.
  • Ygtyýarnama - çeşme faýllaryny we/ýa-da YGTY .ARNAMA faýllaryny barlamak we/ýa-da awtorlar bilen gürleşmek arkaly programma üpjünçiliginiň Ygtyýarnamasynyň ýagdaýyny barlaň.
  • URL - programma üpjünçiligi bukjasynyň baş sahypasyny görkezýär.
  • Source0 - çeşme faýllaryny kesgitleýär. Göni URL ýa-da programma üpjünçiliginiň gysylan çeşme kody bolup biler.
  • BuildRequires - programma üpjünçiligini gurmak üçin zerur baglylyklary kesgitleýär.
  • Talap - programma üpjünçiligini işletmek üçin zerur baglylyklary kesgitleýär.
  • % prep - rpm paketini gurmak üçin gurşaw döretmek üçin ulanylýar.
  • % build - deslapky kodlary düzmek we gurmak üçin ulanylýar.
  • % install - bu programmalary gurmak üçin ulanylýar. Gurluş prosesinden BUILDROOT bukjasyna göçürmek üçin zerur bolan buýruklary görkezýär.
  • % faýllar - bu bölümde ulgamda gurnalan paket bilen üpjün edilen faýllaryň sanawy görkezilýär.
  • % changelog - esasanam esasy çeşmäniň üstünde howpsuzlyk we näsazlyklar bar bolsa, RPM-ni taýýarlamak boýunça işleri saklamaly. Salam.spec faýly döredilende awtomatiki usulda döredilýär. Çangelog maglumatlary adatça rpm --changelog -q bilen görkezilýär.

Indi .spec faýlyňyzy redaktirläň we görkezilişi ýaly üýtgeşmeler giriziň.

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

Aboveokardaky faýlda düşündirilmedik käbir täze parametrleri ulanandygymyzy görersiňiz. Bulara makroslar diýilýär, paketler üçin gurnama ýollaryny kesgitlemek üçin RPM tarapyndan kesgitlenen ulgam çakylyklaryny gurmak üçin ulanylýar. Şonuň üçin bu ýollary aýratyn faýllarda gaty kodlamazlyk, yzygiderlilik üçin şol bir makroslary ulanmak makul bilner.

Aşakdakylar kesgitlemeleri we deslapky bahalary bilen bilelikde RPM gurmak we katalog makroslary:

  • % {make_build} - spes faýlyň% gurmak bölüminde ulanylýar, make buýrugyny işledýär.
  • % {name} - bukjany ýa-da katalogyň adyny kesgitleýär.
  • % {buildroot} -% {_ buildrootdir} /% {name} -% {wersiýa} -% {goýberiliş}.% {_ arch}, $BUILDROOT bilen birmeňzeş
  • % {_ infodir} -% {_ datarootdir}/maglumat, default:/usr/share/info
  • % {_ mandir} -% {_ datarootdir}/man, default:/usr/share/man
  • % {_ bindir} -% {_ exec_prefix}/bin, deslapky:/usr/bin

Bu makrolar üçin bahalary/usr/lib/rpm/platform/*/makroslardan tapyp bilersiňiz ýa-da gaplama görkezmelerine serediň: RPM Makros.

RPM paketini gurmak

Çeşmäni, ikilik we düzediş paketlerini gurmak üçin aşakdaky rpmbuild buýrugyny işlediň.

$ rpmbuild -ba hello.spec

Gurluşykdan soň, çeşme RPM we ikilik RPM islegleri degişlilikde ../SRPMS/ we ../RPMS/ kataloglarynda dörediler. Rpmlint programmasyny ulanyp, döredilen aýratyn faýl we RPM faýllarynyň RPM dizaýn düzgünlerine laýyk gelýändigini barlamak we ulanyp bilersiňiz:

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

Aboveokardaky skrinshotda görkezilişi ýaly ýalňyşlyklar bar bolsa, dowam etmezden ozal düzediň.

Iň soňkusy, paket gurluşynyň Fedora çäklendirilen gurluşyk gurşawynda üstünlik gazanjakdygyny barlamak üçin maska programmasyny ulanyň.

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

Has giňişleýin maglumat üçin Fedora resminamalaryna serediň: RPM paketlerini döretmek.

Bu hemmesi! Bu makalada ýönekeý çeşme we ikilik programma üpjünçiligi bukjasyny döretmek üçin Fedora ulgamyňyzy nädip ýokarlandyrmalydygyny düşündirdik. Şeýle hem, GUN Salam Word RPM paketini nädip döretmelidigini görkezdik. Islendik sorag ýa-da teswir üçin bize ýetmek üçin aşakdaky seslenme formasyny ulanyň.