আরপিএম ফাইল তৈরি করতে আমার ন্যূনতম কী করতে হবে?


148

আমি কেবল আমার লিনাক্স বাইনারি "ফুবার" বিতরণ করতে একটি আরপিএম ফাইল তৈরি করতে চাই, কেবলমাত্র কয়েকটা নির্ভরতা। এটির একটি কনফিগার ফাইল রয়েছে, /etc/foobar.conf এবং / usr / bin / foobar এ ইনস্টল করা উচিত।

দুর্ভাগ্যক্রমে আরপিএমের জন্য ডকুমেন্টেশনটি ২ cha টি অধ্যায় দীর্ঘ এবং সত্যই এটি বসে পড়ার মতো আমার কোনও দিন নেই, কারণ আমি অন্যান্য প্ল্যাটফর্মের জন্য .deb এবং EXE ইনস্টলার তৈরি করতেও ব্যস্ত।

আরপিএম তৈরি করতে আমাকে নিখুঁত ন্যূনতম কী করতে হবে? ধরুন foobar বাইনারি এবং foobar.conf বর্তমান কার্যনির্বাহী ডিরেক্টরিতে রয়েছে।


1
" কীভাবে একটি আরপিএম প্যাকেজ তৈরি করবেন " এটি RPM এর (ফেডোরা ডক্স) একটি ভাল রচনা-আপ
ওয়েবউইস

6
এটিকে 'লিখন-আপ' বলা একটি সংক্ষিপ্ত বিবরণ
42

উত্তর:


177

লিনাক্সে আমি প্রায়শই প্যাকেজিং মালিকানাধীন অ্যাপ্লিকেশনগুলিতে বাইনারি আরপিএম করি - ওয়েবস্পিয়ার হিসাবে মস্টারও। সুতরাং আমার অভিজ্ঞতা আপনার জন্যও কার্যকর হতে পারে, আপনি যদি পারেন তবে সত্যিকারের আরপিএম করা ভাল। কিন্তু আমার দ্বিমত আছে.

সুতরাং আপনার (বাইনারি) প্রোগ্রামটি প্যাকেজিংয়ের একটি প্রাথমিক পদক্ষেপ অনুসরণীয় - যার মধ্যে আমি মনে করি যে প্রোগ্রামটি টয়বিনপ্রাগের সাথে সংস্করণ 1.0 রয়েছে, /etc/toybinprog/toybinprog.conf এ ইনস্টল করার জন্য একটি কনফিড থাকতে হবে এবং একটি বাক্স ইনস্টল করতে হবে ইন / ইউএসআর / বিনকে টবিনপ্রোগ বলা হয়:

1. আরপিএম <4.6,4.7 এর জন্য আপনার আরপিএম বিল্ড এনটিভি তৈরি করুন

mkdir -p ~/rpmbuild/{RPMS,SRPMS,BUILD,SOURCES,SPECS,tmp}

cat <<EOF >~/.rpmmacros
%_topdir   %(echo $HOME)/rpmbuild
%_tmppath  %{_topdir}/tmp
EOF

cd ~/rpmbuild

২. আপনার প্রকল্পের টার্বল তৈরি করুন

mkdir toybinprog-1.0
mkdir -p toybinprog-1.0/usr/bin
mkdir -p toybinprog-1.0/etc/toybinprog
install -m 755 toybinprog toybinprog-1.0/usr/bin
install -m 644 toybinprog.conf toybinprog-1.0/etc/toybinprog/

tar -zcvf toybinprog-1.0.tar.gz toybinprog-1.0/

৩. সূত্রগুলিতে অনুলিপি করুন দির

cp toybinprog-1.0.tar.gz SOURCES/

cat <<EOF > SPECS/toybinprog.spec
# Don't try fancy stuff like debuginfo, which is useless on binary-only
# packages. Don't strip binary too
# Be sure buildpolicy set to do nothing
%define        __spec_install_post %{nil}
%define          debug_package %{nil}
%define        __os_install_post %{_dbpath}/brp-compress

Summary: A very simple toy bin rpm package
Name: toybinprog
Version: 1.0
Release: 1
License: GPL+
Group: Development/Tools
SOURCE0 : %{name}-%{version}.tar.gz
URL: http://toybinprog.company.com/

BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root

%description
%{summary}

%prep
%setup -q

%build
# Empty section.

%install
rm -rf %{buildroot}
mkdir -p  %{buildroot}

# in builddir
cp -a * %{buildroot}


%clean
rm -rf %{buildroot}


%files
%defattr(-,root,root,-)
%config(noreplace) %{_sysconfdir}/%{name}/%{name}.conf
%{_bindir}/*

%changelog
* Thu Apr 24 2009  Elia Pinto <devzero2000@rpm5.org> 1.0-1
- First Build

EOF

৪. উত্স এবং বাইনারি আরপিএম তৈরি করুন

rpmbuild -ba SPECS/toybinprog.spec

এবং যে সব.

এই সাহায্য আশা করি


6
কেবলমাত্র যদি আপনি "আরপিএমবিল্ড: কমান্ড খুঁজে পান না" এর মুখোমুখি হন , wiki.centos.org/HowTos/SetupRpmBuildEn वातावरण দেখুন । তবে এই গাইডটি
আরপিএমের

4
আপনার উদাহরণে _বিন্দিরটি কী সেট করে? আমি আপনার সমাধানটি অনুসরণ করার চেষ্টা করছি, তবে আমি আমার বাইনারিগুলি বেছে নিতে / বেছে নিতে চাই। আমি সেই অনুযায়ী তারগজ ফাইল তৈরি করেছি। আর আরপিএমবাইল্ড বিল্ডরুট / ইউএসআর / বিনে "ফাইল খুঁজে পাওয়া যায়নি" ব্যর্থ হচ্ছে।
ভিক্টোরিয়া চুম্বন

sudo dnf install rpm-build- rpmbuild v4.13 + ইনস্টল করার জন্য ফেডোরা 23 কমান্ড
রায় ফস

1
@ devzero2000 সত্য আরপিএম বলতে কী বোঝ?
রুবেনলগুনা

@ devzero2000 rpmbuild ফোল্ডারটি / রুট ডিরেক্টরিতে থাকা উচিত বা আমি এটি অন্য কোথাও রাখতে পারি?
ডায়োগো ক্যালাজানস

20

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


2
এফপিএম একটি দুর্দান্ত সরঞ্জাম।
তাকাশি

কাজের সময় আমরা এই সরঞ্জামটি ব্যবহার করি। প্রয়োজন অনুসারে এখন পর্যন্ত সবচেয়ে ব্যবহারিক সরঞ্জাম।
djhaskin987

2
এফপিএমের সেরা সফ্টওয়্যারটিতে থাকা সর্বোত্তম মৌলিক নীতি রয়েছে: যদি এটি সহায়তা না করে তবে একটি বাগ রয়েছে। এটি আমি প্রতিশ্রুতিবদ্ধ এক ধরনের।
ribamar

16

দ্রুত আরপিএম বিল্ডিংয়ের জন্য টোগো পরীক্ষা করে দেখুন:

https://github.com/genereese/togo-rpm

প্রকল্পটির একটি দ্রুত-স্টার্ট গাইড রয়েছে এবং আমি 3 মিনিটেরও কম সময়ে একটি বেসিক আরপিএম তৈরি করতে সক্ষম হয়েছি।

মূল প্রশ্নে প্রদত্ত ডেটা ব্যবহার করে উদাহরণ:

1) স্ক্রিপ্ট ব্যবহার করে প্রকল্প ডিরেক্টরি তৈরি করুন:

$ togo project create foobar; cd foobar

2) আপনার পছন্দসই ডিরেক্টরি কাঠামো। / রুটের অধীনে করুন এবং এতে আপনার ফাইলগুলি অনুলিপি করুন:

$ mkdir -p root/etc; cp /path/to/foobar.conf root/etc/
$ mkdir -p root/usr/bin; cp /path/to/foobar root/usr/bin/

3) আপনার আরপিএমের মালিকানা থেকে সিস্টেম-মালিকানাধীন ডিরেক্টরিগুলি বাদ দিন:

$ togo file exclude root/etc root/usr/bin

4) (বিকল্প) আপনার প্যাকেজের বিবরণ / নির্ভরতা / সংস্করণ / যাই হোক না কেন, ইত্যাদি পরিবর্তন করতে উত্পন্ন উত্স পরিবর্তন করুন .:

$ vi spec/header

5) আরপিএম তৈরি করুন:

$ togo build package

-আর আপনার আরপিএম ./rpms ডিরেক্টরিতে থুতু ফেলা হয়।


মূল প্রশ্নের মধ্যে দেওয়া দৃশ্যের সাথে মিল রেখে উদাহরণ আপডেট করে।
ডাডেলিউস

15

একইভাবে, আমার আরপিএম তৈরির দরকার ছিল মাত্র কয়েকটি ফাইল। যেহেতু এই ফাইলগুলি উত্স নিয়ন্ত্রিত ছিল, এবং এটি নির্বোধ বলে মনে হয়েছিল, তাই কেবল আরপিএম আনটার করার জন্য আমি এগুলি বজায় রাখতে চেয়েছিলাম না। আমি নিম্নলিখিত নিয়ে এসেছি:

  1. আপনার পরিবেশ সেট আপ করুন:

    mkdir -p ~/rpm/{BUILD,RPMS}

    echo '%_topdir %(echo "$HOME")/rpm' > ~/.rpmmacros

  2. নিম্নলিখিত বিষয়বস্তু সহ আপনার স্পেক ফাইল, foobar.spec তৈরি করুন:

    Summary: Foo to the Bar
    Name: foobar
    Version: 0.1
    Release: 1
    Group: Foo/Bar
    License: FooBarPL
    Source: %{expand:%%(pwd)}
    BuildRoot: %{_topdir}/BUILD/%{name}-%{version}-%{release}
    
    %description
    %{summary}
    
    %prep
    rm -rf $RPM_BUILD_ROOT
    mkdir -p $RPM_BUILD_ROOT/usr/bin
    mkdir -p $RPM_BUILD_ROOT/etc
    cd $RPM_BUILD_ROOT
    cp %{SOURCEURL0}/foobar ./usr/bin/
    cp %{SOURCEURL0}/foobar.conf ./etc/
    
    %clean
    rm -r -f "$RPM_BUILD_ROOT"
    
    %files
    %defattr(644,root,root)
    %config(noreplace) %{_sysconfdir}/foobar.conf
    %defattr(755,root,root)
    %{_bindir}/foobar
    
  3. আপনার আরপিএম তৈরি করুন: rpmbuild -bb foobar.spec

সেখানে আপনার সাম্প্রতিক ডিরেক্টরি হিসাবে 'উত্স' উল্লেখ করে সেখানে একটি ছোট্ট হ্যাকারি রয়েছে, তবে বিকল্পটি আমার কাছে, তারবাল ইত্যাদি তৈরির জন্য একটি পৃথক স্ক্রিপ্ট লিখতে হবে, তবে বিকল্পটি আরও অনেক মার্জিত বলে মনে হয়েছিল

দ্রষ্টব্য: আমার নির্দিষ্ট পরিস্থিতিতে, আমার ফাইলগুলি ফোল্ডারে যেখানে তাদের যেতে হবে সে অনুযায়ী সাজানো হয়েছিল, এর মতো:

./etc/foobar.conf
./usr/bin/foobar

এবং তাই প্রস্তুতি বিভাগে পরিণত হয়েছে:

%prep
rm -rf $RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT
cd $RPM_BUILD_ROOT
tar -cC %{SOURCEURL0} --exclude 'foobar.spec' -f - ./ | tar xf -

যা একটু ক্লিনার।

এছাড়াও, আমি আরপিএম সংস্করণ ৪.৪.২.৩ সহ একটি RHEL5.6 এ থাকি, তাই আপনার মাইলেজটি আলাদা হতে পারে।


আমি সব ঘুরে ছিল $RPM_BUILD_ROOTথেকে %{buildroot}আমার "জন্য Red Hat Enterprise Linux- র সার্ভার মুক্তি 6.9" এ কাজের জন্য এটি পেতে। এছাড়াও, যখন আমি আরপিএমবাইল্ড চালিত তখন দুটি ডিরেক্টরি যা ইনস্টল করা হয়েছিল তা বর্তমান ডিরেক্টরিতে থাকতে হবে। আমি এটি আমার অন্যান্য মেশিনে এটি ইনস্টল করেছি: sudo rpm -Uvh --nodeps foobar-0.1a-1.x86_64.rpm
ব্যবহারকারীর6868993

4

যদি make configআপনার প্রোগ্রামের জন্য কাজ করে বা আপনার কাছে একটি শেল স্ক্রিপ্ট রয়েছে যা আপনার দুটি ফাইল যথাযথ জায়গায় অনুলিপি করে আপনি চেকইনস্টলটি ব্যবহার করতে পারেন । শুধু ডিরেক্টরি যেখানে আপনার Makefile হয় এ যান এবং পরামিতি সঙ্গে এটি কল -R(জন্য আরপিএম ) এবং ঐচ্ছিকরূপে ইনস্টলেশন স্ক্রিপ্ট।


4

বাইনারি থেকে আরপিএম প্যাকেজ তৈরির সহজ উপায় (এই পদক্ষেপগুলি ফেডোরার 18 দ্বারা পরীক্ষা করা হয়েছিল):

1) প্রথমে আপনাকে আরপিএমদেবতুলগুলি ইনস্টল করতে হবে, সুতরাং এই কমান্ডগুলি চালনা করুন (মনোযোগ দিন: সাধারণ ব্যবহারকারী হিসাবে চালান)

$ sudo yum install rpmdevtools rpmlint
$ rpmdev-setuptree

2) ~ / rpmbuild / SPECS ফোল্ডারে নতুন ফাইল তৈরি করুন: package_name.spec

3) এডিটর দিয়ে এটি খুলুন (জিডিটের মতো) এবং এটি লিখুন:

Name:           package_name
Version:        1.0
Release:        1
Summary:        Short description (first char has to be uppercase)

License:        GPL
URL:            www. your_website/

BuildRequires:  package_required >= (or ==, or <=) 1.0.3 (for example)

%description
Description with almost 79 characters (first char has to be uppercase)

#This is a comment (just as example)

%files
/usr/bin/binary_file.bin
/usr/share/applications/package_name.desktop
/usr/share/pixmaps/package_name.png

%changelog
* date Packager's Name <packager's_email> version-revision
- Summary of changes

#For more details see: docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/html/Packagers_Guide/sect-Packagers_Guide-Creating_a_Basic_Spec_File.html

৪) ~ / rpmbuild / BUILDROOT / package_name-version-released.i386 তৈরি করুন এবং ফাইলগুলি যে পাথগুলিতে স্থাপন করা হবে সেগুলি পুনরুত্পাদন করুন সুতরাং এই ক্ষেত্রে উদাহরণস্বরূপ তৈরি করুন:

  • ~ / Rpmbuild / BUILDROOT / PACKAGE_NAME-সংস্করণ release.i386 / usr / bin /
  • ~ / Rpmbuild / BUILDROOT / PACKAGE_NAME-সংস্করণ release.i386, / usr / ভাগ / আবেদনগুলি /
  • ~ / Rpmbuild / BUILDROOT / PACKAGE_NAME-সংস্করণ release.i386, / usr / শেয়ার / pixmaps /

5) প্যাকেজে আপনি যে ফাইলগুলি সন্নিবেশ করতে চান সেগুলি এই ফোল্ডারে রাখুন:

  • ~ / Rpmbuild / BUILDROOT / PACKAGE_NAME-সংস্করণ release.i386 / usr / bin / binary_file.bin
  • ~ / Rpmbuild / BUILDROOT / PACKAGE_NAME-সংস্করণ release.i386, / usr / ভাগ / আবেদনগুলি / package_name.desktop
  • ~ / Rpmbuild / BUILDROOT / PACKAGE_NAME-সংস্করণ release.i386, / usr / শেয়ার / pixmaps / package_name.png

usr / share / pixmaps / package_name.png বাইনারি এর আইকন হয় / শেয়ার / অ্যাপ্লিকেশন / প্যাকেজ_নাম.ডেস্কটপ মেনু এন্ট্রিগুলিতে প্রোগ্রাম সন্নিবেশ করার নিয়ম

6) প্যাকেজ_নাম.ডেস্কটপ অবশ্যই এটির মতো হতে হবে:

[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=example
GenericName=Short description
Comment=Comment of the application
Exec=package_name
Icon=package_name
Terminal=false
Categories=System;

বিভাগগুলি এগুলি: মান.ফ্রেডসকটোপ.অর্গ / মেনু-স্পেক / স্লেস্ট / বাবা হিটটিএমএল

7) চালান $ rpmbuild -bb ~/rpmbuild/SPECS/package_name.spec

8) আপনার প্যাকেজটি ~ / rpmbuild / RPMS ফোল্ডারে অন্তর্নির্মিত ছিল

আপনি যদি এই প্যাকেজটি ইনস্টল করেন তবে এটি ইনস্টল করুন:

  • /usr/bin/binary_file.bin
  • /usr/share/applications/package_name.desktop
  • /usr/share/pixmaps/package_name.png

ধন্যবাদ: লসারস.আর / ডকস / টিপস / রেড্যাট / বাইনারি- আরপিএমএস

আরপিএম তৈরির আরও তথ্যের জন্য এই লিঙ্কটি একবার দেখুন ।

জিএমআই জাভা সফটওয়্যার আরপিএম তৈরি করতে: https://sourceforge.net/projects/javarpmbuilder/


-1

আপনি যদি সেখানে মাভেনের সাথে পরিচিত হন rpm-maven-pluginযা pom.xmlআরপিএম তৈরির ক্ষেত্রে সহজতর করে: আপনাকে কেবল লিখতে হবে যা আরপিএম তৈরিতে ব্যবহৃত হবে। আরপিএম বিল্ড এনভায়রনমেন্ট প্লাগইন দ্বারা স্পষ্টভাবে তৈরি করা হয়।


-3

উত্স ফাইল থেকে আরপিএম উত্পন্ন করার প্রক্রিয়া:

  1. .g.g এক্সটেনশন সহ উত্স ফাইলটি ডাউনলোড করুন।
  2. yum ইনস্টল থেকে আরপিএম-বিল্ড এবং আরপিএমদেভটুলগুলি ইনস্টল করুন। (আরপিএমবাইল্ড ফোল্ডার তৈরি করা হবে ... স্পেস, উত্স, আরপিএমএস .. ফোল্ডারগুলি আরপিএমবাইল্ড ফোল্ডারের ভিতরে তৈরি করা উচিত)।
  3. উত্স কোড.gz SOURCES ফোল্ডারে অনুলিপি করুন r (rpmbuild / উত্স)
  4. নীচের কমান্ডটি ব্যবহার করে তারার বলটি অন্টার করুন। উত্সগুলি ফোল্ডারে যান: আরপিএমবাইল্ড / উত্স যেখানে ট্যুর ফাইল উপস্থিত রয়েছে। কমান্ড: উদাহরণস্বরূপ tar -xvzf httpd-2.22.tar.gz httpd-2.22 ফোল্ডারটি একই পথে উত্পন্ন হবে।
  5. এক্সট্রাক্ট ফোল্ডারে যান এবং তারপরে নীচের কমান্ডটি টাইপ করুন: ./configure --prefix = / usr / স্থানীয় / apache2 - অন্তর্ভুক্ত-এপ্রি - সক্ষম-প্রক্সি - সক্ষম-প্রক্সি-ব্যালেন্সার --with-mpm = কর্মী - -enable-mods-static = all (। কনফিগারেশনটি সেই উত্স অনুসারে পরিবর্তিত হতে পারে যার জন্য আরপিএম তৈরি করতে হবে - আমি অ্যাপাচি HTTPD এর জন্য করেছি যার জন্য এপ্রি এবং এপ্রি-ব্যবহার নির্ভরতা প্যাকেজ দরকার)।
  6. কনফিগারটি সফল হয়ে গেলে নীচের কমান্ডটি চালান: মেক করুন
  7. সাফল্যরূপে কার্যকর করার পরে কমান্ড চালান: একই ফোল্ডারে চেকইনস্টল করুন। (যদি আপনার চেকইনস্টল সফ্টওয়্যার না থাকে তবে দয়া করে সাইট থেকে সর্বশেষ সংস্করণটি ডাউনলোড করুন) এছাড়াও চেকইনস্টল সফ্টওয়্যারটিতে একটি বাগ রয়েছে যা নিম্নলিখিত উপায়ে সমাধান করা যেতে পারে ::::: চেকইনস্টলrcটি সনাক্ত করুন এবং তারপরে ভিআইএম কমান্ড ব্যবহার করে ট্রান্সলেট = 1 থেকে ট্রান্সলেট = 0 এ প্রতিস্থাপন করুন। বাদ প্যাকেজটি পরীক্ষা করুন: EXCLUDE = "/ সেলিনাক্স"
  8. চেকইনস্টল বিকল্প জিজ্ঞাসা করবে (টাইপ আর যদি আপনি উত্স ফাইলের জন্য টিপি বিল্ড আরপিএম চান)
  9. শেষ করা

-4

আরপিএমগুলি সাধারণত উত্স থেকে নির্মিত হয়, বাইনারিগুলি নয়।

আপনার স্পেস ফাইলটি লিখতে হবে যা আপনার অ্যাপ্লিকেশনটি কীভাবে কনফিগার করতে এবং সংকলন করতে হবে তা অন্তর্ভুক্ত করে; এছাড়াও, আপনার আরপিএমের মধ্যে কোন ফাইল অন্তর্ভুক্ত করা উচিত।

ম্যানুয়ালটিতে এক ঝলক নজরে দেখা যায় যে আপনার যা প্রয়োজন তা বেশিরভাগ অধ্যায় 8 এ আচ্ছাদিত - এছাড়াও, বেশিরভাগ আরপিএম-ভিত্তিক বিতরণগুলির উত্স উপলব্ধ রয়েছে, আক্ষরিক অর্থেই আপনি দেখতে পারেন বিভিন্ন পদ্ধতির এক মিলিয়ন মিলিয়ন উদাহরণ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.