Jinsi ya Kuunda Kifurushi cha GNU Hello World RPM katika Fedora


mfumo wa usimamizi wa kifurushi cha Linux. Ingawa iliundwa awali kwa matumizi katika Red Hat Linux, sasa inatumika katika usambazaji wengi wa Linux kama vile CentOS, Fedora, na OpenSuse. Muhimu, jina RPM linarejelea programu ya kidhibiti kifurushi na .rpm ni umbizo la faili.

Katika makala hii, tutaelezea juu ya kuandika faili za RPM, kuonyesha jinsi ya kuunda kwa urahisi chanzo rahisi na vifurushi vya programu za binary, kwa mfano, mfuko wa GNU Hello World RPM katika usambazaji wa Fedora Linux. Tunadhania kwamba una ufahamu wa kimsingi wa vifurushi vya RPM vilivyotengenezwa awali, na kwa mchakato wa ujenzi wa Programu Huria ya Bila Malipo.

Sakinisha Zana za Maendeleo katika Fedora

Hebu tuanze kwa kuanzisha mazingira ya maendeleo katika Fedora Linux kwa kuendesha amri ifuatayo ya kufunga zana muhimu za kujenga RPMs.

$ sudo dnf install fedora-packager @development-tools

Kisha, ongeza akaunti yako isiyo ya upendeleo kwenye kikundi cha 'mock' kama ifuatavyo (badilisha tecmint na jina lako la mtumiaji halisi). Hii itawawezesha kupima utaratibu wa kujenga katika chroot safi.

$ sudo usermod -a -G mock tecmint

Sasa, unda muundo wa RPM katika saraka yako ya ~/rpmbuild na uthibitishe muundo huo kwa kutumia amri zifuatazo. Itaonyesha orodha ya saraka ndogo, ambayo ina msimbo wa chanzo cha mradi, faili za usanidi wa RPM na vifurushi vya binary.

$ rpmdev-setuptree
$ tree ~/rpmbuild/

Hivi ndivyo kila saraka inakusudiwa:

  1. JENGA - huhifadhi saraka mbalimbali za %buidroot wakati vifurushi vinapoundwa.
  2. RPMS - itakuwa na RPM za binary katika saraka ndogo za Usanifu.
  3. SOURCES - huhifadhi kumbukumbu za vyanzo vilivyobanwa na viraka vyovyote, hapa ndipo amri ya rpmbuild itazitafuta.
  4. SPECS - huhifadhi faili za SPEC.
  5. SRPMS - huhifadhi Chanzo RPM badala ya RPM ya Upande Mmoja.

Kuunda RPM ya Hujambo Ulimwenguni.

Katika hatua hii, unahitaji kupakua msimbo wa chanzo (pia unajulikana kama chanzo cha mkondo wa juu) wa mradi wa Hello World tunaopakia, kwenye saraka ya ~/rpmbuild/SOURCE kwa amri ifuatayo ya wget.

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

Kisha, hebu tusanidi kifurushi cha RPM kwa kutumia .spec faili (tuitaje hello.spec katika hali hii) katika saraka ya ~/rpmbuild/SPECS, kwa kutumia rpmdev- mpango wa newspec.

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

Kisha ufungue faili ya hello.spec ukitumia kihariri chako unachokipenda.

$ vim hello.spec

Kiolezo chaguo-msingi kinapaswa kuonekana kama hii:

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

Hebu tueleze kwa ufupi vigezo chaguo-msingi katika faili ya .spec:

  • Jina - hutumika kuweka jina la kifurushi.
  • Toleo - linapaswa kuakisi mkondo wa juu.
  • Toleo - nambari unazofanya kazi ndani ya Fedora.
  • Muhtasari - ni maelezo mafupi ya mstari mmoja wa kifurushi, herufi ya kwanza inapaswa kuwa kubwa ili kuepuka malalamiko ya rpmlint.
  • Leseni - angalia hali ya Leseni ya programu kwa kukagua faili chanzo na/au faili zao za LESENI, na/au kwa kuzungumza na waandishi.
  • URL - hubainisha ukurasa wa nyumbani wa kifurushi cha programu.
  • Chanzo0 - hubainisha faili chanzo. Inaweza kuwa URL ya moja kwa moja au njia ya msimbo wa chanzo uliobanwa wa programu.
  • BuildRequires - hubainisha mambo tegemezi yanayohitajika ili kuunda programu.
  • Inahitaji - inabainisha vitegemezi vinavyohitajika ili kuendesha programu.
  • %prep - inatumika kuunda mazingira ya kuunda kifurushi cha rpm.
  • %build - inatumika kukusanya na kuunda misimbo ya chanzo.
  • %sakinisha - hii inatumika kusakinisha programu. Inaorodhesha amri zinazohitajika ili kunakili faili tokeo kutoka kwa mchakato wa ujenzi hadi saraka ya BUILDROOT.
  • %faili - sehemu hii inaorodhesha faili zinazotolewa na kifurushi, ambazo zitasakinishwa kwenye mfumo.
  • %changelog - inapaswa kuhifadhi kazi ya kuandaa RPM, haswa ikiwa kuna alama za usalama na hitilafu zilizojumuishwa juu ya chanzo cha msingi cha mkondo. Inatolewa kiotomatiki wakati wa kuunda faili ya hello.spec. Data ya logi ya mabadiliko kawaida huonyeshwa na rpm --changelog -q .

Sasa hariri faili yako ya .spec na ufanye mabadiliko kama inavyoonyeshwa.

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

Utagundua kuwa tumetumia vigezo vipya kwenye faili iliyo hapo juu ambavyo havijaelezewa. Hizi huitwa macros, zinazotumiwa kuunda maombi ya mfumo yaliyofafanuliwa na RPM kuweka njia za usakinishaji wa vifurushi. Kwa hivyo, kawaida ni vyema kutoweka msimbo kwa bidii njia hizi katika faili maalum, lakini tumia macros sawa kwa uthabiti.

Ifuatayo ni ujenzi wa RPM na saraka ya macros pamoja na ufafanuzi wao na maadili ya chaguo-msingi:

  • %{make_build} - inatumika katika sehemu ya %build ya faili maalum, inaendesha amri ya kutengeneza.
  • %{name} - inafafanua jina la kifurushi au saraka.
  • %{buildroot} – %{_buildrootdir}/%{name}-%{version}-%{release}.%{_arch}, sawa na $BUILDROOT
  • %{_infodir} – %{_datarootdir}/info, chaguomsingi: /usr/share/info
  • %{_mandir} – %{_datarootdir}/man, chaguomsingi: /usr/share/man
  • %{_bindir} – %{_exec_prefix}/bin, chaguomsingi: /usr/bin

Kumbuka kuwa unaweza kupata thamani za macros hizi kwenye /usr/lib/rpm/platform/*/macros au rejelea Miongozo ya Ufungaji:RPM Macros.

Kuunda Kifurushi cha RPM

Ili kuunda chanzo, vifurushi vya binary na utatuzi, endesha amri ifuatayo ya rpmbuild.

$ rpmbuild -ba hello.spec

Baada ya mchakato wa uundaji, chanzo cha RPM na RPM jozi zitaundwa katika saraka za ../SRPMS/ na ../RPMS/ mtawalia. Unaweza kutumia programu ya rpmlint kuangalia na kuhakikisha kuwa faili maalum na faili za RPM zilizoundwa zinapatana na sheria za muundo wa RPM:

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

Ikiwa kuna hitilafu zozote kama inavyoonyeshwa kwenye picha ya skrini iliyo hapo juu, zirekebishe kabla ya kuendelea.

Mwishowe, tumia programu ya dhihaka ili kuangalia kuwa kifurushi kitafaulu katika mazingira ya ujenzi yenye vikwazo vya Fedora.

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

Kwa habari zaidi, wasiliana na hati za Fedora: Kuunda Vifurushi vya RPM.

Ni hayo tu! Katika makala hii, tumeelezea jinsi ya kuongeza mfumo wako wa Fedora ili kuunda chanzo rahisi na mfuko wa programu ya binary. Pia tulionyesha jinsi ya kuunda kifurushi cha GUN Hello Word RPM. Tumia fomu ya maoni iliyo hapa chini ili kuwasiliana nasi kwa maswali au maoni yoyote.