Kuinka luoda GNU Hello World RPM-paketti Fedorassa
RPM (rekursiivinen lyhenne sanoista RPM Package Manager) on ilmainen ja avoimen lähdekoodin paketinhallintajärjestelmä Linuxille. Vaikka se luotiin alun perin Red Hat Linuxissa, sitä käytetään nyt monissa Linux-jakeluissa, kuten CentOS, Fedora ja >OpenSuse. Tärkeää on, että nimi RPM viittaa paketinhallintaohjelmaan ja .rpm
on tiedostomuoto.
Tässä artikkelissa kerromme RPM-tiedostojen kirjoittamisesta ja osoitamme, kuinka helposti luodaan yksinkertainen lähde- ja binääriohjelmistopaketti, esimerkiksi GNU “Hello World” RPM-paketti Fedora Linuxissa. vahva> jakelu. Oletamme, että sinulla on perustiedot valmiista RPM-paketeista ja ilmaisen avoimen lähdekoodin ohjelmistojen rakennusprosessista.
Asenna kehitystyökalut Fedoraan
Aloitetaan määrittämällä kehitysympäristö Fedora Linuxissa suorittamalla seuraava komento asentaaksesi tarvittavat työkalut RPM:iden rakentamiseen.
sudo dnf install fedora-packager @development-tools
Lisää seuraavaksi tilisi, jolla ei ole etuoikeuksia, vale-ryhmään seuraavasti (korvaa tecmint todellisella käyttäjänimelläsi). Tämän avulla voit testata rakennusprosessia puhtaalla chrootilla.
sudo usermod -a -G mock tecmint
Luo nyt RPM-koonnos ~/rpmbuild
-hakemistoosi ja tarkista koontiversio seuraavilla komennoilla. Se näyttää luettelon alihakemistoista, jotka sisältävät projektin lähdekoodin, RPM-määritystiedostot ja binaaripaketit.
rpmdev-setuptree
tree ~/rpmbuild/
Tässä on mitä kukin hakemisto on tarkoitettu:
- BUILD – tallentaa erilaisia %buildroot-hakemistoja, kun paketteja rakennetaan.
- RPMS – sisältää binaariset RPM:t arkkitehtuurin alihakemistoissa.
- LÄHTEET – tallentaa pakatut lähdearkistot ja mahdolliset korjaustiedostot, täältä rpmbuild-komento etsii ne.
- SPECS – tallentaa SPEC-tiedostot.
- SRPMS – tallentaa lähteen RPM:n binaarisen RPM:n sijaan.
"Hello World" RPM:n rakentaminen
Tässä vaiheessa sinun on ladattava pakkaamamme Hello World -projektin lähdekoodi (tunnetaan myös nimellä "ylävirtalähde") hakemistoon ~/rpmbuild/SOURCE. > hakemistoon seuraavalla wget-komennolla.
cd ~/rpmbuild/SOURCES
wget http://ftp.gnu.org/gnu/hello/hello-2.10.tar.gz -P ~/rpmbuild/SOURCES
Määritetään seuraavaksi RPM-paketti käyttämällä .spec
-tiedostoa (nimetään sille tässä tapauksessa hello.spec
) tiedostossa ~/rpmbuild/SPECS > hakemistosta rpmdev-newspec-ohjelman avulla.
cd ~/rpmbuild/SPECS
rpmdev-newspec hello
ls
Avaa sitten hello.spec
-tiedosto suosikkieditorillasi.
vim hello.spec
Oletusmallin pitäisi näyttää tältä:
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
Selitetään lyhyesti .spec
-tiedoston oletusparametrit:
- Nimi – käytetään paketin nimen asettamiseen.
- Versio – pitäisi peilata ylävirtaan.
- Release – numerot, joita käytät Fedorassa.
- Yhteenveto – on lyhyt yksirivinen kuvaus paketista, ensimmäisen kirjaimen tulee olla iso, jotta vältytään rpmlint-valituksista.
- Lisenssi – tarkista ohjelmiston lisenssitila tarkastamalla lähdetiedostot ja/tai niiden LISENSSitiedostot ja/tai keskustelemalla tekijöiden kanssa.
- URL – määrittää ohjelmistopaketin kotisivun.
- Source0 – määrittää lähdetiedostot. Se voi olla suora URL-osoite tai ohjelmiston pakatun lähdekoodin polku.
- BuildRequires – määrittää ohjelmiston rakentamiseen tarvittavat riippuvuudet.
- Edellyttää – määrittää ohjelmiston suorittamiseen tarvittavat riippuvuudet.
- %prep – käytetään ympäristön luomiseen rpm-paketin rakentamiseen.
- %build – käytetään lähdekoodien kääntämiseen ja rakentamiseen.
- %install – tätä käytetään ohjelmien asentamiseen. Siinä luetellaan komennot, joita tarvitaan tulostiedoston kopioimiseen rakennusprosessista BUILDROOT-hakemistoon.
- %files – tässä osiossa luetellaan paketin toimittamat tiedostot, jotka asennetaan järjestelmään.
- %changelog – pitäisi tallentaa RPM:n valmistelutyöt, varsinkin jos ylävirran peruslähteen päälle on sisällytetty tietoturva- ja virhekorjauksia. Se luodaan automaattisesti luotaessa hello.spec-tiedostoa. Muutoslokin tiedot näytetään yleensä muodossa
rpm --changelog -q
.
Muokkaa nyt .spec
-tiedostoa ja tee muutokset kuvan mukaisesti.
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
Huomaat, että olemme käyttäneet joitain uusia parametreja yllä olevassa tiedostossa, joita ei ole selitetty. Näitä kutsutaan makroiksi, joita käytetään RPM:n määrittämien järjestelmäkutsujen luomiseen pakettien asennuspolkujen määrittämiseksi. Siksi on yleensä parempi olla myös koodaamatta näitä polkuja teknisissä tiedostoissa, vaan käyttää samoja makroja johdonmukaisuuden vuoksi.
Seuraavat ovat RPM-koonti- ja hakemistomakrot sekä niiden määritelmät ja oletusarvot:
- %{make_build} – käytetään määritystiedoston %build-osiossa, se suorittaa make-komennon.
- %{name} – määrittää paketin tai hakemiston nimen.
- %{buildroot} – %{_buildrootdir}/%{name}-%{version}-%{release}.%{_arch}, sama kuin $BUILDROOT
- %{_infodir} – %{_datarootdir}/info, oletus: /usr/share/info
- %{_mandir} – %{_datarootdir}/mies, oletus: /usr/share/man
- %{_bindir} – %{_exec_prefix}/bin, oletus: /usr/bin
Huomaa, että löydät arvot näille makroille osoitteesta /usr/lib/rpm/platform/*/macros tai katso Packaging Guidelines:RPM-makrot.
RPM-paketin rakentaminen
Luodaksesi lähde-, binaari- ja virheenkorjauspaketit, suorita seuraava rpmbuild-komento.
rpmbuild -ba hello.spec
Rakennusprosessin jälkeen lähde-RPM:t ja binaariset RPM:t luodaan hakemistoihin ../SRPMS/
ja ../RPMS/
. Voit käyttää rpmlint-ohjelmaa tarkistaaksesi ja varmistaaksesi, että luodut spesifikaatiotiedostot ja RPM-tiedostot ovat RPM-suunnittelusääntöjen mukaisia:
rpmlint hello.spec ../SRPMS/hello* ../RPMS/*/hello*
Jos yllä olevassa kuvakaappauksessa on virheitä, korjaa ne ennen kuin voit jatkaa.
Viimeisenä mutta ei vähäisimpänä, käytä mock-ohjelmaa tarkistaaksesi, että paketin koontiversio onnistuu Fedoran rajoitetussa rakennusympäristössä.
mock --verbose ../SRPMS/hello-2.10-1.fc29.src.rpm
Lisätietoja on Fedoran dokumentaatiossa: RPM-pakettien luominen.
Siinä kaikki! Tässä artikkelissa olemme selittäneet, kuinka voit tehostaa Fedora-järjestelmääsi yksinkertaisen lähde- ja binaariohjelmistopaketin luomiseksi. Näimme myös, kuinka luodaan GUN Hello Word RPM -paketti. Alla olevalla palautelomakkeella voit ottaa meihin yhteyttä, jos sinulla on kysyttävää tai kommentteja.