Giunsa Paghimo ang usa ka GNU Hello World RPM Package sa Fedora
sistema sa pagdumala sa package alang sa Linux. Bisan kung kini orihinal nga gihimo aron magamit sa Red Hat Linux, karon gigamit kini sa daghang mga distribusyon sa Linux sama sa CentOS, Fedora, ug OpenSuse. Importante, ang ngalan nga RPM nagtumong sa package manager program ug ang .rpm
usa ka file format.
Niini nga artikulo, among ipasabut sa pagsulat sa RPM files, nga nagpakita kon sa unsang paagi sayon nga paghimo sa usa ka yano nga tinubdan ug binary software packages, pananglitan, GNU Hello World RPM package sa Fedora Linux distribution. Nagtuo kami nga ikaw adunay pipila ka sukaranan nga pagsabut sa mga pre-made nga RPM nga mga pakete, ug sa proseso sa pagtukod sa Libre nga Open Source Software.
I-install ang Mga Gamit sa Pag-uswag sa Fedora
Magsugod kita pinaagi sa pag-set up sa development environment sa Fedora Linux pinaagi sa pagpadagan sa mosunod nga command aron i-install ang gikinahanglan nga mga himan alang sa pagtukod sa mga RPM.
$ sudo dnf install fedora-packager @development-tools
Sunod, idugang ang imong dili pribilihiyo nga account sa grupo nga 'mock' ingon sa mosunod (ilisan ang tecmint sa imong aktwal nga username). Makapahimo kini kanimo sa pagsulay sa proseso sa pagtukod sa usa ka limpyo nga chroot.
$ sudo usermod -a -G mock tecmint
Karon, paghimo ug RPM build sa imong ~/rpmbuild
directory ug pamatud-i ang build gamit ang mosunod nga mga command. Kini magpakita sa usa ka lista sa mga sub-direktoryo, nga naglangkob sa project source code, RPM configuration files ug binary packages.
$ rpmdev-setuptree $ tree ~/rpmbuild/
Ania kung unsa ang gipasabut sa matag direktoryo:
- BUILD – nagtipig lainlain nga %buildroot nga mga direktoryo kung ang mga pakete gihimo.
- RPMS – maglangkob ug binary RPM sa mga sub-direktoryo sa Arkitektura.
- SOURCES – nagtipig sa mga compressed source archive ug bisan unsang mga patch, dinhi pangitaon sila sa rpmbuild command.
- SPECS – nagtipig sa mga file sa SPEC.
- SRPMS – nagtipig sa Source RPM imbes sa Binary RPM.
Pagtukod ug “Hello World” RPM
Niini nga lakang, kinahanglan nimo nga i-download ang source code (nailhan usab nga upstream nga tinubdan) sa Hello World nga proyekto nga among giputos, ngadto sa ~/rpmbuild/SOURCE nga direktoryo nga adunay mosunod nga wget command.
$ cd ~/rpmbuild/SOURCES $ wget http://ftp.gnu.org/gnu/hello/hello-2.10.tar.gz -P ~/rpmbuild/SOURCES
Sunod, atong i-configure ang RPM package gamit ang .spec
file (atong nganlan kini og hello.spec
niini nga kaso) sa ~/rpmbuild/SPECS directory, gamit ang rpmdev- programa sa newspec.
$ cd ~/rpmbuild/SPECS $ rpmdev-newspec hello $ ls
Unya ablihi ang hello.spec
file gamit ang imong paborito nga editor.
$ vim hello.spec
Ang default nga template kinahanglan nga tan-awon sama niini:
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
Atong ipasabut sa daklit ang default nga mga parameter sa usa ka .spec
file:
- Ngalan – gigamit para magbutang ug ngalan para sa package.
- Bersyon – kinahanglang magsalamin sa upstream.
- Pagpagawas – mga numero nga imong gigamit sulod sa Fedora.
- Summary – usa ka mubo nga usa ka linya nga deskripsyon sa package, ang unang letra kinahanglan nga uppercase aron malikayan ang mga reklamo sa rpmlint.
- Lisensya – susiha ang License status sa software pinaagi sa pagsusi sa source files ug/o sa ilang LICENSE files, ug/o pinaagi sa pagpakigsulti sa mga author.
- URL – nagpiho sa home page sa software package.
- Source0 – nagtino sa tinubdan nga mga file. Mahimo kini nga direktang URL o agianan sa compressed source code sa software.
- BuildRequires – nagtino sa mga dependency nga gikinahanglan sa paghimo sa software.
- Kinahanglan – nagtino sa mga dependency nga gikinahanglan sa pagpadagan sa software.
- %prep – gigamit sa paghimo sa palibot para sa paghimo sa rpm package.
- %build – gigamit sa pag-compile ug paghimo sa source codes.
- %install – kini gigamit sa pag-instalar sa mga programa. Naglista kini og (mga) sugo nga gikinahanglan aron kopyahon ang resulta nga file gikan sa proseso sa pagtukod ngadto sa direktoryo sa BUILDROOT.
- %files – kini nga seksyon naglista sa mga file nga gihatag sa package, nga i-install sa sistema.
- %changelog – kinahanglan magtipig sa trabaho sa pag-andam sa RPM, labi na kung adunay seguridad ug mga bug patch nga gilakip sa ibabaw sa base sa upstream nga gigikanan. Kini awtomatik nga namugna samtang nagmugna sa hello.spec file. Ang data sa changelog kasagarang gipakita sa
rpm --changelog -q
.
Karon usba ang imong .spec
file ug paghimo og mga kausaban sama sa gipakita.
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
Mamatikdan nimo nga gigamit namon ang pipila ka bag-ong mga parameter sa ibabaw nga file nga wala pa gipatin-aw. Gitawag kini nga mga macro, nga gigamit sa paghimo sa mga invocation sa sistema nga gihubit sa RPM aron magbutang mga agianan sa pag-install alang sa mga pakete. Busa, kasagarang mas maayo nga dili i-hard-code kini nga mga agianan sa mga spec file, apan gamita ang parehas nga mga macro alang sa pagkamakanunayon.
Ang mosunod mao ang RPM build ug directory macros uban sa ilang mga kahulugan ug default values:
- %{make_build} – gigamit sa %build nga seksyon sa spec file, kini nagpadagan sa make command.
- %{name} – naghubit sa ngalan sa pakete o direktoryo.
- %{buildroot} – %{_buildrootdir}/%{name}-%{bersyon}-%{release}.%{_arch}, pareho sa $BUILDROOT
- %{_infodir} – %{_datarootdir}/info, default: /usr/share/info
- %{_mandir} – %{_datarootdir}/man, default: /usr/share/man
- %{_bindir} – %{_exec_prefix}/bin, default: /usr/bin
Timan-i nga makit-an nimo ang mga kantidad alang niini nga mga macro sa /usr/lib/rpm/platform/*/macros o tan-awa ang Mga Giya sa Packaging: RPM Macros.
Pagtukod sa RPM Package
Aron matukod ang gigikanan, binary ug debugging nga mga pakete, padagana ang mosunod nga rpmbuild nga mando.
$ rpmbuild -ba hello.spec
Human sa proseso sa pagtukod, ang tinubdan nga RPMs ug binary RPMs himoon sa ../SRPMS/
ug ../RPMS/
directory matag usa. Mahimo nimong gamiton ang rpmlint nga programa aron masusi ug masiguro nga ang spec file ug RPM file nga gihimo nahiuyon sa mga lagda sa disenyo sa RPM:
$ rpmlint hello.spec ../SRPMS/hello* ../RPMS/*/hello*
Kung adunay bisan unsang mga sayup sama sa gipakita sa screenshot sa ibabaw, ayoha kini sa dili ka pa makapadayon.
Katapusan apan dili labing gamay, gamita ang programa sa pagbiaybiay aron masusi nga ang pagtukod sa pakete magmalampuson sa gipugngan nga palibot sa pagtukod sa Fedora.
$ mock --verbose ../SRPMS/hello-2.10-1.fc29.src.rpm
Alang sa dugang nga kasayuran, konsultaha ang dokumentasyon sa Fedora: Paghimo RPM Packages.
Kana lang! Sa kini nga artikulo, among gipasabut kung giunsa ang pagpataas sa imong Fedora system aron makahimo usa ka yano nga gigikanan ug binary software package. Gipakita usab namo kung giunsa paghimo ang usa ka GUN Hello Word RPM nga pakete. Gamita ang porma sa feedback sa ubos aron maabot kami alang sa bisan unsang mga pangutana o komento.