ఫెడోరాలో గ్నూ హలో వరల్డ్ RPM ప్యాకేజీని ఎలా సృష్టించాలి


Linux కోసం ప్యాకేజీ నిర్వహణ వ్యవస్థ. ఇది మొదట Red Hat Linux లో ఉపయోగం కోసం సృష్టించబడినప్పటికీ, ఇప్పుడు దీనిని CentOS, Fedora మరియు OpenSuse వంటి అనేక Linux పంపిణీలలో ఉపయోగిస్తున్నారు. ముఖ్యముగా, RPM పేరు ప్యాకేజీ మేనేజర్ ప్రోగ్రామ్uను సూచిస్తుంది మరియు .rpm ఒక ఫైల్ ఫార్మాట్.

ఈ వ్యాసంలో, మేము RPM ఫైళ్ళను వ్రాయడం గురించి వివరిస్తాము, సరళమైన మూలం మరియు బైనరీ సాఫ్ట్uవేర్ ప్యాకేజీలను ఎలా సులభంగా సృష్టించాలో చూపిస్తాము, ఉదాహరణకు, ఫెడోరా లైనక్స్ పంపిణీలో GNU “హలో వరల్డ్” RPM ప్యాకేజీ. ముందే తయారుచేసిన RPM ప్యాకేజీల గురించి మరియు ఉచిత ఓపెన్ సోర్స్ సాఫ్ట్uవేర్ నిర్మాణ ప్రక్రియతో మీకు కొంత ప్రాథమిక అవగాహన ఉందని మేము అనుకుంటాము.

ఫెడోరాలో అభివృద్ధి సాధనాలను వ్యవస్థాపించండి

RPM లను నిర్మించడానికి అవసరమైన సాధనాలను వ్యవస్థాపించడానికి కింది ఆదేశాన్ని అమలు చేయడం ద్వారా ఫెడోరా లైనక్స్uలో అభివృద్ధి వాతావరణాన్ని ఏర్పాటు చేయడం ద్వారా ప్రారంభిద్దాం.

$ sudo dnf install fedora-packager @development-tools

తరువాత, మీ ప్రత్యేకత లేని ఖాతాను ‘మాక్’ సమూహానికి ఈ క్రింది విధంగా జోడించండి (టెక్మింట్uను మీ అసలు వినియోగదారు పేరుతో భర్తీ చేయండి). ఇది బిల్డ్ విధానాన్ని క్లీన్ క్రూట్uలో పరీక్షించడానికి మిమ్మల్ని అనుమతిస్తుంది.

$ sudo usermod -a -G mock tecmint

ఇప్పుడు, మీ ~/rpmbuild డైరెక్టరీలో RPM బిల్డ్uను సృష్టించండి మరియు కింది ఆదేశాలను ఉపయోగించి బిల్డ్uను ధృవీకరించండి. ఇది ప్రాజెక్ట్ సోర్స్ కోడ్, RPM కాన్ఫిగరేషన్ ఫైల్స్ మరియు బైనరీ ప్యాకేజీలను కలిగి ఉన్న ఉప డైరెక్టరీల జాబితాను చూపుతుంది.

$ rpmdev-setuptree
$ tree ~/rpmbuild/

ప్రతి డైరెక్టరీ దీని కోసం ఉద్దేశించినది ఇక్కడ ఉంది:

  1. బిల్డ్ - ప్యాకేజీలు నిర్మించినప్పుడు వివిధ% బిల్డ్రూట్ డైరెక్టరీలను నిల్వ చేస్తుంది.
  2. RPMS - ఆర్కిటెక్చర్ యొక్క ఉప-డైరెక్టరీలలో బైనరీ RPM లను కలిగి ఉంటుంది.
  3. మూలాలు - కంప్రెస్డ్ సోర్స్ ఆర్కైవ్uలు మరియు ఏదైనా పాచెస్uను నిల్వ చేస్తుంది, ఇక్కడే rpmbuild ఆదేశం వాటి కోసం చూస్తుంది.
  4. SPECS - SPEC ఫైళ్ళను నిల్వ చేస్తుంది.
  5. SRPMS - బైనరీ RPM కు బదులుగా మూల RPM ని నిల్వ చేస్తుంది.

“హలో వరల్డ్” RPM ని నిర్మించడం

ఈ దశలో, మేము ప్యాకేజింగ్ చేస్తున్న హలో వరల్డ్ ప్రాజెక్ట్ యొక్క సోర్స్ కోడ్uను (“అప్uస్ట్రీమ్” సోర్స్ అని కూడా పిలుస్తారు), ఈ క్రింది wget ఆదేశంతో ~/rpmbuild/SOURCE డైరెక్టరీలోకి డౌన్uలోడ్ చేసుకోవాలి.

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

తరువాత, p/rpmbuild/SPECS డైరెక్టరీలో rpmdev- ను ఉపయోగించి .spec ఫైల్uను (ఈ సందర్భంలో దీనికి hello.spec పేరు పెట్టండి) ఉపయోగించి RPM ప్యాకేజీని కాన్ఫిగర్ చేద్దాం. న్యూస్uపెక్ ప్రోగ్రామ్.

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

మీకు ఇష్టమైన ఎడిటర్uను ఉపయోగించి hello.spec ఫైల్uను తెరవండి.

$ vim hello.spec

డిఫాల్ట్ టెంప్లేట్ ఇలా ఉండాలి:

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

.spec ఫైల్uలో డిఫాల్ట్ పారామితులను క్లుప్తంగా వివరిద్దాం:

  • పేరు - ప్యాకేజీకి పేరు సెట్ చేయడానికి ఉపయోగిస్తారు.
  • సంస్కరణ - అప్uస్ట్రీమ్uకు అద్దం పట్టాలి.
  • విడుదల - మీరు ఫెడోరాలో పనిచేసే సంఖ్యలు.
  • సారాంశం - ప్యాకేజీ యొక్క సంక్షిప్త వన్-లైన్ వివరణ, rpmlint ఫిర్యాదులను నివారించడానికి మొదటి అక్షరం పెద్దదిగా ఉండాలి.
  • లైసెన్స్ - సోర్స్ ఫైల్స్ మరియు/లేదా వారి లైసెన్స్ ఫైళ్ళను మరియు/లేదా రచయితలతో మాట్లాడటం ద్వారా సాఫ్ట్uవేర్ యొక్క లైసెన్స్ స్థితిని తనిఖీ చేయండి.
  • URL - సాఫ్ట్uవేర్ ప్యాకేజీ యొక్క హోమ్ పేజీని నిర్దేశిస్తుంది.
  • మూలం 0 - మూల ఫైళ్ళను నిర్దేశిస్తుంది. ఇది ప్రత్యక్ష URL లేదా సాఫ్ట్uవేర్ యొక్క కంప్రెస్డ్ సోర్స్ కోడ్ యొక్క మార్గం కావచ్చు.
  • బిల్డ్ రిక్వైర్స్ - సాఫ్ట్uవేర్uను రూపొందించడానికి అవసరమైన డిపెండెన్సీలను నిర్దేశిస్తుంది.
  • అవసరం - సాఫ్ట్uవేర్uను అమలు చేయడానికి అవసరమైన డిపెండెన్సీలను నిర్దేశిస్తుంది.
  • % ప్రిపరేషన్ - rpm ప్యాకేజీని నిర్మించడానికి వాతావరణాన్ని సృష్టించడానికి ఉపయోగించబడుతుంది.
  • % బిల్డ్ - సోర్స్ కోడ్uలను కంపైల్ చేయడానికి మరియు నిర్మించడానికి ఉపయోగిస్తారు.
  • % ఇన్uస్టాల్ - ప్రోగ్రామ్uలను ఇన్uస్టాల్ చేయడానికి ఇది ఉపయోగించబడుతుంది. ఫలిత ఫైల్uను బిల్డ్ ప్రాసెస్ నుండి BUILDROOT డైరెక్టరీకి కాపీ చేయడానికి అవసరమైన కమాండ్ (ల) ను ఇది జాబితా చేస్తుంది.
  • % ఫైళ్ళు - ఈ విభాగం ప్యాకేజీ అందించిన ఫైళ్ళను జాబితా చేస్తుంది, అవి సిస్టమ్uలో ఇన్uస్టాల్ చేయబడతాయి.
  • % చేంజ్లాగ్ - RPM ను తయారుచేసే పనిని నిల్వ చేయాలి, ప్రత్యేకించి బేస్ అప్uస్ట్రీమ్ సోర్స్ పైన భద్రత మరియు బగ్ పాచెస్ ఉంటే. Hello.spec ఫైల్uను సృష్టించేటప్పుడు ఇది స్వయంచాలకంగా ఉత్పత్తి అవుతుంది. చేంజ్లాగ్ డేటా సాధారణంగా rpm --changelog -q ద్వారా ప్రదర్శించబడుతుంది.

ఇప్పుడు మీ .spec ఫైల్uను సవరించండి మరియు చూపిన విధంగా మార్పులు చేయండి.

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

పై ఫైల్uలో మేము వివరించని కొన్ని కొత్త పారామితులను ఉపయోగించామని మీరు గమనించవచ్చు. వీటిని మాక్రోస్ అని పిలుస్తారు, ప్యాకేజీల కోసం సంస్థాపనా మార్గాలను సెట్ చేయడానికి RPM చేత నిర్వచించబడిన సిస్టమ్ ఇన్వొకేషన్లను నిర్మించడానికి ఉపయోగిస్తారు. అందువల్ల, స్పెక్ ఫైళ్ళలో ఈ మార్గాలను హార్డ్-కోడ్ చేయకుండా ఉండటం మంచిది, కాని స్థిరత్వం కోసం అదే మాక్రోలను ఉపయోగించండి.

కిందివి RPM బిల్డ్ మరియు డైరెక్టరీ మాక్రోలు వాటి నిర్వచనాలు మరియు డిఫాల్ట్ విలువలతో కలిపి:

  • % {make_build} - స్పెక్ ఫైల్ యొక్క% బిల్డ్ విభాగంలో ఉపయోగించబడుతుంది, ఇది మేక్ కమాండ్uను నడుపుతుంది.
  • % {name} - ప్యాకేజీ లేదా డైరెక్టరీ పేరును నిర్వచిస్తుంది.
  • % {బిల్డ్రూట్} -% {_ బిల్డ్రూట్డిర్} /% {పేరు} -% {వెర్షన్} -% {విడుదల}.% {_ వంపు}, $BUILDROOT
  • % {_ ఇన్ఫోడిర్} -% {_ డేటారూట్డిర్}/సమాచారం, డిఫాల్ట్:/usr/share/info
  • % {_ మందిర్} -% {_ డేటారూట్డిర్ man/మనిషి, డిఫాల్ట్:/usr/share/man
  • % {_ బైండిర్} -% {_ exec_prefix}/బిన్, డిఫాల్ట్:/usr/bin

మీరు ఈ మాక్రోల యొక్క విలువలను/usr/lib/rpm/platform/*/macros లో కనుగొనవచ్చని గమనించండి లేదా ప్యాకేజింగ్ మార్గదర్శకాలను చూడండి: RPM మాక్రోస్.

RPM ప్యాకేజీని నిర్మించడం

మూలం, బైనరీ మరియు డీబగ్గింగ్ ప్యాకేజీలను నిర్మించడానికి, కింది rpmbuild ఆదేశాన్ని అమలు చేయండి.

$ rpmbuild -ba hello.spec

బిల్డ్ ప్రాసెస్ తరువాత, సోర్స్ RPM లు మరియు బైనరీ RPM లు వీలు ../SRPMS/ మరియు ../RPMS/ డైరెక్టరీలలో వరుసగా సృష్టించబడతాయి. సృష్టించిన స్పెక్ ఫైల్ మరియు RPM ఫైల్స్ RPM డిజైన్ నియమాలకు అనుగుణంగా ఉన్నాయో లేదో తనిఖీ చేయడానికి మరియు నిర్ధారించడానికి మీరు rpmlint ప్రోగ్రామ్uను ఉపయోగించవచ్చు:

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

పై స్క్రీన్uషాట్uలో చూపిన విధంగా ఏదైనా లోపాలు ఉంటే, మీరు కొనసాగడానికి ముందు వాటిని పరిష్కరించండి.

చివరిది కాని, ఫెడోరా పరిమితం చేయబడిన నిర్మాణ వాతావరణంలో ప్యాకేజీ బిల్డ్ విజయవంతమవుతుందో లేదో తనిఖీ చేయడానికి మాక్ ప్రోగ్రామ్uను ఉపయోగించండి.

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

మరింత సమాచారం కోసం, ఫెడోరా డాక్యుమెంటేషన్uను సంప్రదించండి: RPM ప్యాకేజీలను సృష్టిస్తోంది.

అంతే! ఈ వ్యాసంలో, సరళమైన మూలం మరియు బైనరీ సాఫ్ట్uవేర్ ప్యాకేజీని సృష్టించడానికి మీ ఫెడోరా వ్యవస్థను ఎలా పెంచాలో మేము వివరించాము. GUN హలో వర్డ్ RPM ప్యాకేజీని ఎలా సృష్టించాలో కూడా మేము చూపించాము. ఏవైనా ప్రశ్నలు లేదా వ్యాఖ్యల కోసం మమ్మల్ని చేరుకోవడానికి క్రింది అభిప్రాయ ఫారమ్uను ఉపయోగించండి.