Yadda ake ƙirƙirar GNU Sannu RPM na Duniya a Fedora


tsarin kula da kunshin na Linux. Kodayake asali an ƙirƙira shi don amfani a cikin Red Hat Linux, yanzu ana amfani dashi a yawancin rarraba Linux kamar CentOS, Fedora, da OpenSuse. Mahimmanci, sunan RPM yana nufin shirin manajan kunshin kuma .rpm tsarin fayil ne.

A cikin wannan labarin, zamuyi bayani akan rubuta fayilolin RPM, da nuna yadda za a sauƙaƙe ƙirƙirar tushe mai sauƙi da kunshin kayan software, alal misali, kunshin RPM na GNU “Hello World” a cikin rarraba Fedora Linux. Muna ɗauka cewa kuna da ɗan fahimtar abubuwan fakitin RPM da aka riga aka yi, kuma tare da tsarin ginin Software na Open Open Source.

Sanya Kayan Aiki a Fedora

Bari mu fara da kafa yanayin haɓakawa a cikin Fedora Linux ta gudanar da umarni mai zuwa don shigar da kayan aikin da ake buƙata don gina RPMs.

$ sudo dnf install fedora-packager @development-tools

Na gaba, ƙara asusunka marasa gata ga ƙungiyar 'izgili' kamar haka (maye gurbin tecmint da ainihin sunan mai amfaninka). Wannan zai baka damar gwada tsarin ginawa a cikin chroot mai tsabta.

$ sudo usermod -a -G mock tecmint

Yanzu, ƙirƙirar ginin RPM a cikin adireshin ~/rpmbuild kuma tabbatar da ginin ta amfani da umarni masu zuwa. Zai nuna jerin ƙananan kundin adireshi, wanda ya ƙunshi lambar asalin aikin, fayilolin sanyi RPM da fakitin binary.

$ rpmdev-setuptree
$ tree ~/rpmbuild/

Ga abin da kowane kundin adireshi yake nufi:

  1. GINA - yana adana kundayen adireshin% lokacin da aka gina fakiti.
  2. RPMS - zai ƙunshi RPM guda biyu a cikin ƙananan kundin adireshi na Gine-gine.
  3. SOURCES - yana adana manyan wuraren adana bayanai da kuma kowane faci, anan ne umarnin rpmbuild zai neme su.
  4. SPECS - adana fayilolin SPEC.
  5. SRPMS - adana Tushen RPM maimakon Binary RPM.

Gina RPM "Barka da Duniya"

A wannan matakin, kuna buƙatar saukar da lambar tushe (wanda kuma aka sani da tushen "zuwa sama") na aikin Duniyar Barka da sannu da muke ɗauke da shi, a cikin adireshin ~/rpmbuild/SOURCE tare da umarnin wget mai zuwa.

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

Na gaba, bari mu saita kunshin RPM ta amfani da fayil .spec (bari mu sa masa suna hello.spec a wannan yanayin) a cikin ~/rpmbuild/SPECS shugabanci, ta amfani da rpmdev- shirin newspec.

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

Sannan buɗe fayil hello.spec ta amfani da editan da kuka fi so.

$ vim hello.spec

Samfurin tsoho yakamata yayi kama da wannan:

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

Bari mu taƙaita bayanin tsoffin sigogi a cikin fayil .spec :

  • Suna - ana amfani dashi don saita suna don kunshin.
  • Sigogi - yakamata ya yi sama-sama.
  • Saki - lambobin da kuke aiki a cikin Fedora.
  • Takaitawa - shine taƙaitaccen bayanin layi guda ɗaya na kunshin, harafin farko ya zama babba don kaucewa gunaguni na rpmlint.
  • Lasisi - bincika matsayin lasisin software ɗin ta hanyar bincika fayilolin tushe da/ko fayilolin LIISAN, da/ko ta hanyar magana da marubutan.
  • URL - yana ƙayyade shafin gida na kunshin software.
  • Source0 - yana ƙayyade fayilolin tushe. Zai iya zama URL kai tsaye ko hanyar lambar matattarar matattarar software ɗin.
  • BuildRequires - yana ƙayyade masu dogaro da ake buƙata don gina software.
  • Yana buƙata - yana ƙayyade abubuwan dogaro da ake buƙata don gudanar da software.
  • % prep - ana amfani dashi don ƙirƙirar yanayi don gina kunshin rpm.
  • % gina - ana amfani dashi don tattarawa da kuma gina lambobin tushe.
  • % shigar - ana amfani da wannan don shigar da shirye-shiryen. Yana lissafin umarni (umarni) da ake buƙata don kwafin fayil ɗin sakamako sakamakon tsarin ginin zuwa kundin adireshin BUILDROOT.
  • % fayiloli - wannan ɓangaren yana lissafin fayilolin da aka bayar ta hanyar kunshin, wanda za'a girka akan tsarin.
  • % canji - ya kamata ya adana aikin akan shirya RPM, musamman idan akwai tsaro da kuma alamun ɓarayin da aka haɗa a saman tushe mai tushe. Ana ƙirƙirar ta atomatik yayin ƙirƙirar fayil ɗin hello.spec. Ana canza bayanan canji ta rpm --changelog -q .

Yanzu shirya fayilolin .spec kuma yin canje-canje kamar yadda aka nuna.

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

Za ku lura cewa mun yi amfani da wasu sababbin sigogi a cikin fayil ɗin da ke sama waɗanda ba a bayyana su ba. Wadannan ana kiran su macros, ana amfani dasu don gina kiraye-kirayen da RPM ya bayyana don saita hanyoyin shigarwa don fakiti. Sabili da haka, galibi an fi so don ba da wuya-lambar waɗannan hanyoyi a cikin fayilolin tabarau ko dai, amma amfani da macros ɗaya don daidaito.

Abubuwan da ke gaba sune ginin RPM da kundin adiresoshin macros tare da ma'anar su da ƙimar ladabi:

  • % {make_build} - ana amfani da shi a cikin% gina sashi na takaddun fayil, yana gudanar da umarnin yin.
  • % {suna} - yana bayyana kunshin ko sunan kundin adireshi.
  • % {buildroot} -% {_ buildrootdir} /% {name} -% {version} -% {release}.% {_ arch}, daidai yake da $BUILDROOT
  • % {_ infodir} -% {_ datarootdir}/info, tsoho:/usr/share/info
  • % {_ mandir} -% {_ datarootdir}/mutum, tsoho:/usr/share/mutum
  • % {_ bindir} -% {_ exec_prefix}/bin, tsoho:/usr/bin

Lura cewa zaku iya samun ƙimar waɗannan macros ɗin a cikin/usr/lib/rpm/dandamali/*/macros ko koma zuwa Sharuɗɗan Marufi: RPM Macros.

Gina Kunshin RPM

Don gina tushen, binary da debugging packages, gudanar da bin rpmbuild umurnin.

$ rpmbuild -ba hello.spec

Bayan tsarin ginin, asalin RPMs da binary RPMs ana son ƙirƙirar su a cikin ../SRPMS/ da ../RPMS/ kundin adireshi bi da bi. Kuna iya amfani da shirin rpmlint don bincika da kuma tabbatar da cewa takamaiman fayil ɗin da fayilolin RPM da aka kirkira sun dace da dokokin ƙirar RPM:

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

Idan akwai wasu kurakurai kamar yadda aka nuna a cikin sikirin da ke sama, gyara su kafin ku ci gaba.

A ƙarshe amma ba mafi ƙaranci ba, yi amfani da shirin izgili don bincika cewa ƙirar kunshin za ta yi nasara a cikin ƙuntataccen yanayin ginin Fedora.

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

Don ƙarin bayani, nemi bayanan Fedora: Creatirƙirar RPM Pakete.

Shi ke nan! A cikin wannan labarin, mun bayyana yadda za a haɓaka tsarin Fedora ɗinku don ƙirƙirar tushe mai sauƙi da kunshin software na binary. Mun kuma nuna yadda ake ƙirƙirar kunshin GUN Hello Word RPM. Yi amfani da fom din da ke ƙasa don isa gare mu don kowane tambayoyi ko tsokaci.