আরপিএম সুনির্দিষ্ট প্যাকেজে কীভাবে নির্দিষ্ট করা যায় যাতে আগের আরপিএম সরিয়ে ফেলা হয়


9

প্রশ্ন:

আমি foo.spec ফাইলটিতে কী রাখব যাতে RPM গুলি ইনস্টল করার আগে পূর্ববর্তী আরপিএম সরিয়ে ফেলবে?

বর্ণনা:

আমি একটি স্পেক ফাইল তৈরি করেছি যা কয়েকটি প্যাকেজগুলির জন্য আরপিএম তৈরি করে যা একই উত্স ব্যবহার করে এবং একই পরিষেবা সরবরাহ করে, প্রত্যেককে কিছুটা আলাদা কনফিগারেশন। যেমন তারা প্রত্যেকে একই "ক্ষমতা" সরবরাহ করে

আমার .spec ফাইলটির মতো প্রয়োজনীয় প্রয়োজনীয়তার উদাহরণ এখানে রয়েছে :

%define version     1234
%define name        foo
%define release     1
%define pkgname     %{name}-%{version}-%{release}

Name:               %{name}
Version:            %{version}
Release:            %{release}
Provides:           %{name}

%package one
Summary:            Summary for foo-one
Group:              %{group}
Obsoletes:          %{name} <= %{version}
Provides:           %{name} = %{version}

%description one
Blah blah blah

%package two
Summary:            Summary for foo-two
Group:              %{group}
Obsoletes:          %{name} <= %{version}
Provides:           %{name} = %{version}

%description two
Blah blah blah

# %prep, %install, %build and %clean are pretty simple 
# and omitted here for brevity sake

%files one
%defattr(-,root,root,-)
%{_prefix}/%{pkgname}

%files two
%defattr(-,root,root,-)
%{_prefix}/%{pkgname}

যখন আমি প্রথমটি ইনস্টল করি, এটি ঠিক আছে। আমি তারপরে প্রথমটিকে সরিয়ে ফেলব এবং তারপরে দ্বিতীয়টি ইনস্টল করব, এটি খুব ভাল কাজ করে।

আমি তারপরে প্রথমটি ইনস্টল করি, ততক্ষণে দ্বিতীয়টি ইনস্টল করেছিলাম এবং তারা উভয়ই একে অপরকে ইনস্টল করে, তবে, আমি প্রত্যাশা করছিলাম যে দ্বিতীয়টি ইনস্টল করার আগে দ্বিতীয়টি সরানো হবে।

উদাহরণ সেশন:

# rpmbuild foo and copy rpms to yum repo

$ yum install foo-one
...
$ yum list installed|grep foo
foo-one.noarch           1234-1                @myrepo

$ yum install foo-two
...[Should say that it is removing foo-one, but does not]...

$ yum list installed|grep foo
foo-one.noarch           1234-1                @myrepo
foo-two.noarch           1234-1                @myrepo

$ rpm -q --provides foo-one
foo = 1234
foo-one = 1234-1

$ rpm -q --provides foo-two
foo = 1234
foo-two = 1234-1

আমি foo.spec ফাইলটিতে কী রাখব যাতে RPM গুলি ইনস্টল করার আগে পূর্ববর্তী আরপিএম সরিয়ে ফেলবে?

ধন্যবাদ,

.dave।


1
অন্ধকারে গুলি করা: এটি কি অপ্রচলিতদের জন্য নয়?
চার্লস

প্যাকেজগুলির মধ্যে এবং এর ফলে তাদের মোতায়েন - বাইনারি, কনফিগারেশন বা উভয়ের মধ্যে কী পার্থক্য রয়েছে?
কাছাকাছি

কি আলাদা? যেহেতু আমি একটি পিএইচপি অ্যাপ্লিকেশন, কনফিগারেশন এবং পিএইচপি কোড প্যাকেজিং করছি।
ভাগ্যক্রমে

উত্তর:


10

আপনি এই প্যাকেজগুলিকে একে অপরের সাথে দ্বন্দ্ব করতে চান , যাতে আপনি জানেন যে সেগুলি একসাথে ইনস্টল করা যাবে না।

%package one
Summary:            Summary for foo-one
Group:              %{group}
Obsoletes:          %{name} <= %{version}
Provides:           %{name} = %{version}
Conflicts:          %{name}-two

আমি "সংঘাতগুলি:" যুক্ত করেছি এবং সংস্করণটি একই রকম হলে ইনস্টলেশনটি কমপক্ষে ডিস-মঞ্জুরি দিয়েছিল, তাই আমি এটি ব্যবহার করছি। ধন্যবাদ।
ফাতেহস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.