Kā izveidot Fedora GNU Hello World RPM paketi


pakotņu pārvaldības sistēma Linux. Lai gan sākotnēji tas tika izveidots lietošanai Red Hat Linux, tagad to izmanto daudzos Linux izplatījumos, piemēram, CentOS, Fedora un OpenSuse. Svarīgi ir tas, ka nosaukums RPM attiecas uz pakotņu pārvaldnieka programmu, un .rpm ir faila formāts.

Šajā rakstā mēs paskaidrosim, kā rakstīt RPM failus, parādot, kā viegli izveidot vienkāršu avota un bināru programmatūras pakotnes, piemēram, GNU “Hello World” RPM pakotni Fedora Linux izplatīšanā. Mēs pieņemam, ka jums ir pamatzināšanas par iepriekš sagatavotām RPM pakotnēm un bezmaksas atvērtā pirmkoda programmatūras veidošanas procesu.

Instalējiet izstrādes rīkus Fedora

Sāksim ar Fedora Linux izstrādes vides iestatīšanu, izpildot šādu komandu, lai instalētu nepieciešamos rīkus RPM izveidei.

$ sudo dnf install fedora-packager @development-tools

Pēc tam pievienojiet savu privileģēto kontu grupai “izspēles” šādi (aizstājiet tecmint ar savu faktisko lietotājvārdu). Tas ļaus jums pārbaudīt būvēšanas procedūru tīrā saknē.

$ sudo usermod -a -G mock tecmint

Tagad izveidojiet RPM būvējumu direktorijā ~/rpmbuild un pārbaudiet būvējumu, izmantojot šādas komandas. Tajā tiks parādīts apakšdirektoriju saraksts, kurā ir projekta avota kods, RPM konfigurācijas faili un binārās paketes.

$ rpmdev-setuptree
$ tree ~/rpmbuild/

Katrs katalogs ir domāts šādi:

  1. BUILD - tiek saglabāti dažādi% buildroot direktoriji, kad tiek veidotas paketes.
  2. RPMS - saturēs binārus RPM arhitektūras apakšdirektorijos.
  3. AVOTI - glabā saspiestos avotu arhīvus un visus ielāpus, šeit komanda tos meklēs rpmbuild.
  4. SPECS - glabā SPEC failus.
  5. SRPMS - binārā RPM vietā saglabā avota RPM.
B14

“Hello World” RPM izveide

Šajā solī jums ir jālejupielādē Hello World projekta, kuru mēs iesaiņojam, avota kods (pazīstams arī kā “augšupējais avots”) direktorijā ~/rpmbuild/SOURCE ar šādu komandu wget.

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

Pēc tam konfigurēsim RPM pakotni, izmantojot .spec failu (šajā gadījumā nosauksim to hello.spec ) direktorijā ~/rpmbuild/SPECS, izmantojot rpmdev- laikrakstu programma.

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

Pēc tam atveriet failu hello.spec , izmantojot iecienīto redaktoru.

$ vim hello.spec

Noklusējuma veidnei vajadzētu izskatīties šādi:

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

Īsumā paskaidrosim noklusējuma parametrus failā .spec :

  • Nosaukums - tiek izmantots paketes nosaukuma iestatīšanai.
  • Versija - tai jāatspoguļojas augšpus straumes.
  • Izlaidums - numuri, kurus strādājat Fedora.
  • Kopsavilkums - īss iepakojuma vienas rindas apraksts. Pirmajam burtam jābūt lielajam, lai izvairītos no sūdzībām par rpmlint.
  • Licence - pārbaudiet programmatūras licences statusu, pārbaudot avota failus un/vai to LICENCES failus un/vai runājot ar autoriem.
  • URL - norāda programmat B14 ūras pakotnes sākumlapu.
  • Source0 - norāda avota failus. Tas var būt tiešs URL vai programmatūras saspiesta avota koda ceļš.
  • BuildRequires - norāda programmatūras izveidei nepieciešamās atkarības.
  • Nepieciešams - norāda programmatūras darbībai nepieciešamās atkarības.
  • % prep - tiek izmantots, lai izveidotu vidi paketes rpm izveidei.
  • % build - tiek izmantots avotu kodu apkopošanai un veidošanai.
  • % install - tas tiek izmantots programmu instalēšanai. Tajā ir norādītas komandas (-as), kas nepieciešamas, lai kopētu iegūto failu no būvēšanas procesa direktorijā BUILDROOT.
  • % files - šajā sadaļā ir norādīti pakotnes nodrošinātie faili, kas tiks instalēti sistēmā.
  • % changelog - jāglabā darbs pie RPM sagatavošanas, it īpaši, ja augšpus avota esošajā avotā ir iekļauti drošības un kļūdu ielāpi. Tas tiek automātiski ģenerēts, izveidojot hello.spec failu. Mainīšanas žurnāla datus parasti parāda rpm --changelog -q .

Tagad rediģējiet failu .spec un veiciet izmaiņas, kā parādīts.

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

Jūs ievērosiet, ka iepriekš minētajā failā esam izmantojuši dažus jaunus parametrus, kas nav izskaidroti. Tos sauc par makro, ko izmanto, lai izveidotu RPM noteiktus sistēmas izsaukumus, lai iestatītu pakotņu instalēšanas ceļus. Tāpēc parasti ir vēlams šos ceļus arī nepārkodēt spec failos, bet konsekvences labad izmantojiet tos pašus makro.

Tālāk ir RPM veidošanas un direktoriju makro, kā arī to definīcijas un noklusējuma vērtības:

  • % {make_build} - tiek izmantots spec faila% build sadaļā, tas izpilda komandu make.
  • % {name} - nosaka paketes vai direktorija nosaukumu.
  • % {buildroot} -% {_ buildrootdir} /% {name} -% {version} -% {release}.% {_ arch}, tāds pats kā $BUILDROOT
  • % {_ infodir} -% {_ datarootdir}/info, noklusējums:/usr/share/info
  • % {_ mandir} -% {_ datarootdir}/man, noklusējums:/usr/share/man
  • % {_ bindir} -% {_ exec_prefix}/bin, noklusējums:/usr/bin

Ņemiet vērā, ka šo makro vērtības varat atrast mapē/usr/lib/rpm/platform/*/makro vai skatiet sadaļu Iepakojuma vadlīnijas: RPM makro.

RPM paketes veidošana

Lai izveidotu avota, binārā un atkļūdošanas pakotnes, palaidiet šādu komandu rpmbuild.

$ rpmbuild -ba hello.spec

Pēc izveides procesa avota RPM un bināros RPM tiks izveidoti attiecīgi direktorijās ../SRPMS/ un ../RPMS/ . Varat izmantot programmu rpmlint, lai pārbaudītu un pārliecinātos, vai izveidotie spec faili un RPM faili atbilst RPM noformēšanas noteikumiem:

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

Ja ir kādas kļūdas, kā parādīts iepriekš redzamajā ekrānuzņēmumā, novērsiet tās, pirms varat turpināt.

Visbeidzot, izmantojiet izspēles programmu, lai pārbaudītu, vai pakotņu izveide izdosies Fedora ierobežotās būvēšanas vidē.

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

Lai iegūtu papildinformāciju, skatiet Fedora dokumentāciju: RPM pakotņu izveide.

Tas ir viss! Šajā rakstā mēs esam paskaidrojuši, kā uzlabot Fedora sistēmu, lai izveidotu vienkāršu avota un bināro programmatūras pakotni. Mēs arī parādījām, kā izveidot GUN Hello Word RPM pakotni. Izmantojiet zemāk esošo atsauksmju veidlapu, lai sazinātos ar mums par jautājumiem vai komentāriem.