ஃபெடோராவில் குனு ஹலோ வேர்ல்ட் ஆர்.பி.எம் தொகுப்பை உருவாக்குவது எப்படி


லினக்ஸிற்கான தொகுப்பு மேலாண்மை அமைப்பு. இது முதலில் Red Hat Linux இல் பயன்படுத்த உருவாக்கப்பட்டது என்றாலும், இப்போது இது CentOS, Fedora மற்றும் OpenSuse போன்ற பல லினக்ஸ் விநியோகங்களில் பயன்படுத்தப்படுகிறது. முக்கியமாக, RPM என்ற பெயர் தொகுப்பு மேலாளர் நிரலைக் குறிக்கிறது மற்றும் .rpm ஒரு கோப்பு வடிவமாகும்.

இந்த கட்டுரையில், ஆர்.பி.எம் கோப்புகளை எழுதுவது குறித்து விளக்குவோம், எளிமையான மூல மற்றும் பைனரி மென்பொருள் தொகுப்புகளை எவ்வாறு எளிதாக உருவாக்குவது என்பதைக் காண்பிப்போம், எடுத்துக்காட்டாக, ஃபெடோரா லினக்ஸ் விநியோகத்தில் குனு “ஹலோ வேர்ல்ட்” ஆர்.பி.எம் தொகுப்பு. முன்பே தயாரிக்கப்பட்ட RPM தொகுப்புகள் மற்றும் இலவச திறந்த மூல மென்பொருள் உருவாக்கும் செயல்முறையைப் பற்றி உங்களுக்கு சில அடிப்படை புரிதல் இருப்பதாக நாங்கள் கருதுகிறோம்.

ஃபெடோராவில் மேம்பாட்டு கருவிகளை நிறுவவும்

RPM களை உருவாக்குவதற்கு தேவையான கருவிகளை நிறுவ பின்வரும் கட்டளையை இயக்குவதன் மூலம் ஃபெடோரா லினக்ஸில் மேம்பாட்டு சூழலை அமைப்பதன் மூலம் ஆரம்பிக்கலாம்.

$ sudo dnf install fedora-packager @development-tools

அடுத்து, உங்கள் சலுகை இல்லாத கணக்கை ‘போலி’ குழுவில் பின்வருமாறு சேர்க்கவும் (டெக்மிண்டை உங்கள் உண்மையான பயனர்பெயருடன் மாற்றவும்). இது ஒரு சுத்தமான க்ரூட்டில் உருவாக்க நடைமுறையை சோதிக்க உதவும்.

$ sudo usermod -a -G mock tecmint

இப்போது, உங்கள் ~/rpmbuild கோப்பகத்தில் ஒரு RPM உருவாக்கத்தை உருவாக்கி பின்வரும் கட்டளைகளைப் பயன்படுத்தி உருவாக்கத்தை சரிபார்க்கவும். இது துணை அடைவுகளின் பட்டியலைக் காண்பிக்கும், அதில் திட்ட மூலக் குறியீடு, ஆர்.பி.எம் உள்ளமைவு கோப்புகள் மற்றும் பைனரி தொகுப்புகள் உள்ளன.

$ rpmdev-setuptree
$ tree ~/rpmbuild/

ஒவ்வொரு கோப்பகமும் எதைக் குறிக்கிறது என்பது இங்கே:

  1. பில்ட் - தொகுப்புகள் கட்டப்படும்போது பல்வேறு% பில்ட்ரூட் கோப்பகங்களை சேமிக்கிறது.
  2. RPMS - கட்டிடக்கலை துணை அடைவுகளில் பைனரி RPM களைக் கொண்டிருக்கும்.
  3. ஆதாரங்கள் - சுருக்கப்பட்ட மூல காப்பகங்கள் மற்றும் எந்த திட்டுகளையும் சேமிக்கிறது, இங்குதான் rpmbuild கட்டளை அவற்றைத் தேடும்.
  4. SPECS - SPEC கோப்புகளை சேமிக்கிறது.
  5. SRPMS - பைனரி RPM க்கு பதிலாக மூல RPM ஐ சேமிக்கிறது.

“ஹலோ வேர்ல்ட்” ஆர்.பி.எம்

இந்த கட்டத்தில், நாங்கள் பேக்கேஜிங் செய்யும் ஹலோ வேர்ல்ட் திட்டத்தின் மூலக் குறியீட்டை (“அப்ஸ்ட்ரீம்” மூலமாகவும் அழைக்கப்படுகிறது) பின்வரும் wget கட்டளையுடன் ~/rpmbuild/SOURCE கோப்பகத்தில் பதிவிறக்கம் செய்ய வேண்டும்.

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

அடுத்து, p/rpmbuild/SPECS கோப்பகத்தில், rpmdev- ஐப் பயன்படுத்தி .spec கோப்பைப் பயன்படுத்தி (இந்த வழக்கில் hello.spec என்று பெயரிடுவோம்) RPM தொகுப்பை உள்ளமைப்போம். செய்திமடல் திட்டம்.

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

உங்களுக்கு பிடித்த எடிட்டரைப் பயன்படுத்தி hello.spec கோப்பைத் திறக்கவும்.

$ 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 கோப்பில் இயல்புநிலை அளவுருக்களை சுருக்கமாக விளக்குவோம்:

  • பெயர் - தொகுப்புக்கு ஒரு பெயரை அமைக்க பயன்படுகிறது.
  • பதிப்பு - அப்ஸ்ட்ரீமை பிரதிபலிக்க வேண்டும்.
  • வெளியீடு - ஃபெடோராவுக்குள் நீங்கள் பணிபுரியும் எண்கள்.
  • சுருக்கம் - தொகுப்பின் சுருக்கமான ஒரு வரி விளக்கமாகும், rpmlint புகார்களைத் தவிர்க்க முதல் கடிதம் பெரிய எழுமாக இருக்க வேண்டும்.
  • உரிமம் - மூல கோப்புகள் மற்றும்/அல்லது அவற்றின் லைசென்ஸ் கோப்புகளை ஆய்வு செய்வதன் மூலம் மற்றும்/அல்லது ஆசிரியர்களுடன் பேசுவதன் மூலம் மென்பொருளின் உரிம நிலையை சரிபார்க்கவும்.
  • URL - மென்பொருள் தொகுப்பின் முகப்புப் பக்கத்தைக் குறிப்பிடுகிறது.
  • மூல 0 - மூல கோப்புகளைக் குறிப்பிடுகிறது. இது நேரடி URL அல்லது மென்பொருளின் சுருக்கப்பட்ட மூலக் குறியீட்டின் பாதையாக இருக்கலாம்.
  • BuildRequires - மென்பொருளை உருவாக்க தேவையான சார்புகளை குறிப்பிடுகிறது.
  • தேவை - மென்பொருளை இயக்கத் தேவையான சார்புகளைக் குறிப்பிடுகிறது.
  • % prep - rpm தொகுப்பை உருவாக்குவதற்கான சூழலை உருவாக்க பயன்படுகிறது.
  • % கட்டமைத்தல் - மூலக் குறியீடுகளை தொகுக்க மற்றும் உருவாக்க பயன்படுகிறது.
  • % install - இது நிரல்களை நிறுவ பயன்படுகிறது. இதன் விளைவாக வரும் கோப்பை உருவாக்க செயல்முறையிலிருந்து BUILDROOT கோப்பகத்திற்கு நகலெடுக்க தேவையான கட்டளை (களை) இது பட்டியலிடுகிறது.
  • % கோப்புகள் - இந்த பிரிவு தொகுப்பால் வழங்கப்பட்ட கோப்புகளை பட்டியலிடுகிறது, அவை கணினியில் நிறுவப்படும்.
  • % சேஞ்ச்லாக் - ஆர்.பி.எம் தயாரிப்பதற்கான வேலையைச் சேமிக்க வேண்டும், குறிப்பாக அடிப்படை அப்ஸ்ட்ரீம் மூலத்தின் மேல் பாதுகாப்பு மற்றும் பிழை இணைப்புகள் இருந்தால். Hello.spec கோப்பை உருவாக்கும் போது இது தானாகவே உருவாக்கப்படும். சேஞ்ச்லாக் தரவு பொதுவாக rpm --changelog -q ஆல் காட்டப்படும்.

இப்போது உங்கள் .spec கோப்பைத் திருத்தி, காட்டப்பட்டுள்ளபடி மாற்றங்களைச் செய்யுங்கள்.

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

மேலே குறிப்பிடப்பட்ட கோப்பில் சில புதிய அளவுருக்களை நாங்கள் பயன்படுத்தியிருப்பதை நீங்கள் கவனிப்பீர்கள். இவை மேக்ரோக்கள் என அழைக்கப்படுகின்றன, அவை தொகுப்புகளுக்கான நிறுவல் பாதைகளை அமைக்க RPM ஆல் வரையறுக்கப்பட்ட கணினி அழைப்புகளை உருவாக்கப் பயன்படுகின்றன. எனவே, இந்த பாதைகளை ஸ்பெக் கோப்புகளில் கடின குறியீடு செய்யாமல் இருப்பது பொதுவாக விரும்பத்தக்கது, ஆனால் அதே மேக்ரோக்களை நிலைத்தன்மைக்கு பயன்படுத்துங்கள்.

பின்வருபவை RPM உருவாக்க மற்றும் அடைவு மேக்ரோக்கள் அவற்றின் வரையறைகள் மற்றும் இயல்புநிலை மதிப்புகள்:

  • % {make_build} - ஸ்பெக் கோப்பின்% உருவாக்க பிரிவில் பயன்படுத்தப்படுகிறது, இது மேக் கட்டளையை இயக்குகிறது.
  • % {name} - தொகுப்பு அல்லது அடைவு பெயரை வரையறுக்கிறது.
  • % {பில்ட்ரூட்} -% {_ பில்ட்ரூட் டிர்} /% {பெயர்} -% {பதிப்பு} -% {வெளியீடு}.% {_ வளைவு}, $பில்ட்ரூட்
  • % {_ infodir} -% {_ datarootdir}/info, இயல்புநிலை:/usr/share/info
  • % {_ மந்திர்} -% {_ டேட்டரூட்டிர் man/மனிதன், இயல்புநிலை:/usr/share/man
  • % {_ bindir} -% {_ exec_prefix}/bin, இயல்புநிலை:/usr/bin

இந்த மேக்ரோக்களுக்கான மதிப்புகளை/usr/lib/rpm/platform/*/macros இல் காணலாம் அல்லது பேக்கேஜிங் வழிகாட்டுதல்களைப் பார்க்கவும்: RPM Macros.

RPM தொகுப்பை உருவாக்குதல்

மூல, பைனரி மற்றும் பிழைத்திருத்த தொகுப்புகளை உருவாக்க, பின்வரும் rpmbuild கட்டளையை இயக்கவும்.

$ rpmbuild -ba hello.spec

உருவாக்க செயல்முறைக்குப் பிறகு, முறையே ../SRPMS/ மற்றும் ../RPMS/ கோப்பகங்களில் மூல RPM கள் மற்றும் பைனரி RPM கள் உருவாக்கப்படும். உருவாக்கப்பட்ட ஸ்பெக் கோப்பு மற்றும் ஆர்.பி.எம் கோப்புகள் ஆர்.பி.எம் வடிவமைப்பு விதிகளுக்கு இணங்குகின்றன என்பதை சரிபார்க்க மற்றும் உறுதிப்படுத்த நீங்கள் rpmlint நிரலைப் பயன்படுத்தலாம்:

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

மேலே உள்ள ஸ்கிரீன்ஷாட்டில் காட்டப்பட்டுள்ளபடி ஏதேனும் பிழைகள் இருந்தால், நீங்கள் தொடர முன் அவற்றை சரிசெய்யவும்.

கடைசியாக, குறைந்தது அல்ல, ஃபெடோரா தடைசெய்யப்பட்ட உருவாக்க சூழலில் தொகுப்பு உருவாக்கம் வெற்றிபெறும் என்பதை சரிபார்க்க போலி நிரலைப் பயன்படுத்தவும்.

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

மேலும் தகவலுக்கு, ஃபெடோரா ஆவணங்களை அணுகவும்: RPM தொகுப்புகளை உருவாக்குதல்.

அவ்வளவுதான்! இந்த கட்டுரையில், ஒரு எளிய மூல மற்றும் பைனரி மென்பொருள் தொகுப்பை உருவாக்க உங்கள் ஃபெடோரா அமைப்பை எவ்வாறு மேம்படுத்துவது என்பதை நாங்கள் விளக்கினோம். GUN ஹலோ வேர்ட் RPM தொகுப்பை எவ்வாறு உருவாக்குவது என்பதையும் காண்பித்தோம். ஏதேனும் கேள்விகள் அல்லது கருத்துகளுக்கு எங்களை அணுக கீழேயுள்ள கருத்து படிவத்தைப் பயன்படுத்தவும்.