ফেডোরায় কীভাবে জিএনইউ হ্যালো ওয়ার্ল্ড আরপিএম প্যাকেজ তৈরি করবেন


লিনাক্সের জন্য প্যাকেজ পরিচালনা সিস্টেম যদিও এটি প্রাথমিকভাবে রেড হ্যাট লিনাক্সে ব্যবহারের জন্য তৈরি করা হয়েছিল, এখন এটি অনেকগুলি লিনাক্স বিতরণে যেমন সেন্টস, ফেডোরা এবং ওপেনসুজে ব্যবহৃত হয়। গুরুত্বপূর্ণভাবে, নামটি RPM প্যাকেজ ম্যানেজার প্রোগ্রামকে বোঝায় এবং .rpm ফাইল ফর্ম্যাট।

এই নিবন্ধে, আমরা আরপিএম ফাইলগুলি লেখার বিষয়ে ব্যাখ্যা করব, কীভাবে সহজেই একটি সাধারণ উত্স এবং বাইনারি সফ্টওয়্যার প্যাকেজ তৈরি করা যায় তা উদাহরণস্বরূপ, ফেডোরা লিনাক্স বিতরণে জিএনইউ "হ্যালো ওয়ার্ল্ড" আরপিএম প্যাকেজ। আমরা ধরে নিয়েছি যে আপনি প্রাক-তৈরি RPM প্যাকেজগুলি সম্পর্কে এবং ফ্রি ওপেন সোর্স সফ্টওয়্যার বিল্ডিং প্রক্রিয়া সম্পর্কে কিছু প্রাথমিক ধারণা পেয়েছেন।

ফেডোরায় উন্নয়নের সরঞ্জাম ইনস্টল করুন

আসুন আরপিএম তৈরির জন্য প্রয়োজনীয় সরঞ্জামগুলি ইনস্টল করার জন্য নিম্নলিখিত কমান্ডটি চালিয়ে ফেডোরা লিনাক্সে বিকাশের পরিবেশ স্থাপন করে শুরু করি।

$ sudo dnf install fedora-packager @development-tools

এরপরে, আপনার মর্যাদাপূর্ণ অ্যাকাউন্টটি নীচে ‘মক’ গোষ্ঠীতে যুক্ত করুন (আপনার প্রকৃত ব্যবহারকারীর নাম দিয়ে টেকমিন্ট প্রতিস্থাপন করুন)। এটি আপনাকে একটি পরিষ্কার ক্রুটে বিল্ড পদ্ধতিটি পরীক্ষা করতে সক্ষম করবে।

$ sudo usermod -a -G mock tecmint

এখন, আপনার r/rpmbuild ডিরেক্টরিতে একটি RPM বিল্ড তৈরি করুন এবং নিম্নলিখিত আদেশগুলি ব্যবহার করে বিল্ডটি যাচাই করুন। এটি উপ-ডিরেক্টরিগুলির একটি তালিকা প্রদর্শন করবে, এতে প্রজেক্ট সোর্স কোড, আরপিএম কনফিগারেশন ফাইল এবং বাইনারি প্যাকেজ রয়েছে।

$ rpmdev-setuptree
$ tree ~/rpmbuild/

এখানে প্রতিটি ডিরেক্টরি যা বোঝায় তা এখানে:

  1. বিল্ড - প্যাকেজগুলি তৈরি হওয়ার সময় বিভিন্ন% বিল্ড্রুট ডিরেক্টরি সংরক্ষণ করে।
  2. আরপিএমএস - আর্কিটেকচারের উপ ডিরেক্টরিতে বাইনারি RPM থাকবে will
  3. উত্স - সংক্রামিত উত্স সংরক্ষণাগার এবং কোনও প্যাচ সঞ্চয় করে, এইখানেই rpmbuild আদেশ তাদের সন্ধান করবে
  4. স্পেস - স্পেক ফাইলগুলি সঞ্চয় করে
  5. এসআরপিএমএস - বাইনারি আরপিএমের পরিবর্তে উত্স আরপিএম সঞ্চয় করে।

একটি “হ্যালো ওয়ার্ল্ড” আরপিএম তৈরি করছে

এই পদক্ষেপে, নীচের উইজেট কমান্ডের সাহায্যে আপনাকে হ্যালো ওয়ার্ল্ড প্রকল্পের প্যাকেজিংয়ের সোর্স কোড ("আপস্ট্রিম" উত্স হিসাবে পরিচিত) আপনাকে ডাউনলোড করতে হবে।/আরপিএমবাইল্ড/উত্স ডিরেক্টরিতে w

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

এর পরে, আরপিএমদেব- ব্যবহার করে .spec ফাইলটি (এই ক্ষেত্রে হ্যালো.স্পেক নামটি লিখুন) ব্যবহার করে আরপিএম প্যাকেজটি কনফিগার করুন- নিউজিক প্রোগ্রাম।

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

তারপরে আপনার প্রিয় সম্পাদক ব্যবহার করে হ্যালো.স্পেক ফাইলটি খুলুন।

$ 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 ফাইলে ডিফল্ট পরামিতিগুলি সংক্ষেপে ব্যাখ্যা করি:

  • নাম - প্যাকেজটির জন্য একটি নাম সেট করতে ব্যবহৃত হয়েছিল
  • সংস্করণ - অবশ্যই প্রবাহিত হওয়া উচিত
  • মুক্তি - সংখ্যাগুলি আপনি ফেডোরার মধ্যে কাজ করেন
  • সংক্ষিপ্ত বিবরণ - প্যাকেজের সংক্ষিপ্ত এক-লাইন বিবরণ, আরপিএমলিন্টের অভিযোগ এড়াতে প্রথম অক্ষরটি বড় হাতের হওয়া উচিত লাইসেন্স - উত্স ফাইলগুলি এবং/অথবা তাদের LICENSE ফাইলগুলি পরীক্ষা করে এবং/অথবা লেখকদের সাথে কথা বলে সফ্টওয়্যারটির লাইসেন্সের স্থিতি পরীক্ষা করুন check
  • URL - সফ্টওয়্যার প্যাকেজের হোম পৃষ্ঠা নির্দিষ্ট করে।
  • Source0 - উত্স ফাইলগুলি নির্দিষ্ট করে। এটি সরাসরি ইউআরএল বা সফ্টওয়্যার সংক্ষেপিত উত্স কোডের পথ হতে পারে li
  • বিল্ডআরকিয়ারস - সফ্টওয়্যারটি তৈরি করতে প্রয়োজনীয়তা নির্ভর করে।
  • প্রয়োজনীয় - সফ্টওয়্যারটি চালানোর জন্য প্রয়োজনীয়তা নির্ভর করে ies
  • % প্রস্তুতি - আরপিএম প্যাকেজ তৈরির জন্য পরিবেশ তৈরি করতে ব্যবহৃত হয়
  • % বিল্ড - উত্স কোডগুলি সংকলন করতে এবং তৈরি করতে ব্যবহৃত হয়
  • % ইনস্টল - এটি প্রোগ্রাম ইনস্টল করতে ব্যবহৃত হয়। এটি বিল্ড প্রক্রিয়া থেকে বিল্ড্রোট ডিরেক্টরিতে ফলাফল ফাইলটি অনুলিপি করতে প্রয়োজনীয় কমান্ড (গুলি) তালিকাভুক্ত করে
  • % ফাইল - এই বিভাগে প্যাকেজটি সরবরাহ করা ফাইলগুলি তালিকাভুক্ত করে, যা সিস্টেমে ইনস্টল করা হবে
  • % চেঞ্জলগ - আরপিএম প্রস্তুত করার কাজটি সঞ্চয় করে রাখা উচিত, বিশেষত যদি বেস আপস্ট্রিম উত্সের উপরে সুরক্ষা এবং বাগ প্যাচগুলি অন্তর্ভুক্ত থাকে। হ্যালো.স্পেক ফাইল তৈরি করার সময় এটি স্বয়ংক্রিয়ভাবে উত্পন্ন হয়। চেঞ্জলগ ডেটা সাধারণত আরপিএম - বিনিময় -ক্লু <প্যাকেজ নাম দ্বারা প্রদর্শিত হয়

এখন আপনার .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 দ্বারা সংজ্ঞায়িত সিস্টেম আহ্বানগুলি তৈরি করতে ব্যবহৃত হয়। অতএব, সাধারণত ফাইলে ফাইলগুলিতে এই পাথগুলিকে হার্ড-কোড না করাই ভাল but তবে একই ধারাবাহিকতার জন্য একই ম্যাক্রোগুলি ব্যবহার করুন।

নিম্নলিখিতগুলি তাদের সংজ্ঞা এবং ডিফল্ট মানগুলির সাথে একত্রে RPM বিল্ড এবং ডিরেক্টরি ম্যাক্রোগুলি রয়েছে:

  • % {make_build} - স্পেক ফাইলের% বিল্ড বিভাগে ব্যবহৃত হয়, এটি মেক কমান্ড চালায়
  • % {নাম} - প্যাকেজ বা ডিরেক্টরিটির নাম সংজ্ঞায়িত করে
  • % {buildroot} -% {_ buildrootdir} /% {নাম} -% {সংস্করণ} -% {রিলিজ}।% {_ আর্ক}, U বিল্ড্রুট
  • হিসাবে সমান
  • % {_ infodir} -% {_ datarootdir}/তথ্য, ডিফল্ট:/usr/শেয়ার/তথ্য
  • % {_ মন্দির} -% {_ দাতারূতদির man/ম্যান, ডিফল্ট:/usr/share/man
  • % {_ বিন্দির} -% {_ এক্সিকিউটিউফিক্স}/বিন, ডিফল্ট:/ইউএসআর/বিন

নোট করুন যে আপনি এই ম্যাক্রোগুলির জন্য/usr/lib/rpm/প্ল্যাটফর্ম/*/ম্যাক্রোগুলিতে মানগুলি খুঁজে পেতে পারেন বা প্যাকেজিং গাইডলাইনগুলি: RPM ম্যাক্রোগুলি দেখুন।

আরপিএম প্যাকেজ নির্মাণ

উত্স, বাইনারি এবং ডিবাগিং প্যাকেজ তৈরি করতে নিম্নলিখিত rpmbuild কমান্ডটি চালান।

$ rpmbuild -ba hello.spec

বিল্ড প্রক্রিয়াটির পরে, উত্স RPM এবং বাইনারি RPM গুলি যথাক্রমে ../SRPMS/ এবং ../RPMS/ ডিরেক্টরিতে তৈরি করা হবে। আপনি আরপিএমলিন্ট প্রোগ্রামটি পরীক্ষা করে নিশ্চিত করতে পারেন যে তৈরি করা স্পেক ফাইল এবং আরপিএম ফাইলগুলি আরপিএম ডিজাইনের নিয়ম মেনে চলে:

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

উপরের স্ক্রিনশটে প্রদর্শিত হিসাবে যদি কোনও ত্রুটি থাকে তবে আপনি এগিয়ে যাওয়ার আগে এগুলি ঠিক করুন।

সর্বশেষে তবে সর্বনিম্ন নয়, প্যাকেজ বিল্ডটি ফেডোরা সীমাবদ্ধ বিল্ড পরিবেশে সফল হবে কিনা তা পরীক্ষা করতে মক প্রোগ্রামটি ব্যবহার করুন।

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

আরও তথ্যের জন্য, ফেডোরা ডকুমেন্টেশন: RPM প্যাকেজ তৈরির পরামর্শ নিন।

এখানেই শেষ! এই নিবন্ধে, আমরা একটি সহজ উত্স এবং বাইনারি সফ্টওয়্যার প্যাকেজ তৈরি করতে আপনার ফেডোরা সিস্টেমকে কীভাবে বাড়িয়ে তুলতে হবে তা ব্যাখ্যা করেছি। আমরা কীভাবে একটি জিএনএন হ্যালো ওয়ার্ড আরপিএম প্যাকেজ তৈরি করব তাও দেখিয়েছি। যে কোনও প্রশ্ন বা মন্তব্যের জন্য আমাদের কাছে পৌঁছাতে নীচের প্রতিক্রিয়া ফর্মটি ব্যবহার করুন।