আরপিএম: সেট প্রয়োজনীয়: কিছু প্যাকেজ> = 0.5.0 এবং কিছু প্যাকেজ <0.6.0


14

নির্ভরযোগ্য সংস্করণ প্রয়োজনীয়তা কি এটির মতো সেট করা সম্ভব:

Required: somepackage >= 0.5.0 AND somepackage < 0.6.0

সুতরাং কেবলমাত্র সাম্প্যাকেজ 0.5.x স্বয়ংক্রিয়ভাবে ইনস্টল করা হবে।

উত্তর:


18

হ্যাঁ, এটি করা খুব সহজ।

শুধু লেখো:

Requires: somepackage >= 0.5.0, somepackage < 0.6.0

আপনার .specফাইলের মধ্যে

সংস্করণ প্রয়োজনীয়তা যুক্ত করা হচ্ছে

যখন কোনও প্যাকেজের সামান্য আরও কঠোর প্রয়োজন হয়, তখন প্যাকেজের কয়েকটি নির্দিষ্ট সংস্করণ প্রয়োজন। নিম্নলিখিত সমস্ত তুলনামূলক অপারেটরগুলির পূর্ববর্তী পছন্দসই সংস্করণ নম্বর যুক্ত করার জন্য যা যা প্রয়োজন তা হ'ল:

  • নির্দিষ্ট সংস্করণের চেয়ে কম সংস্করণযুক্ত প্যাকেজের প্রয়োজন।

  • নির্দিষ্ট সংস্করণের চেয়ে কম বা সমান সংস্করণযুক্ত প্যাকেজের প্রয়োজন।

  • নির্দিষ্ট সংস্করণের সমান সংস্করণ সহ প্যাকেজের প্রয়োজন।

  • নির্দিষ্ট সংস্করণের সমান বা তার চেয়ে বেশি সংস্করণযুক্ত প্যাকেজের প্রয়োজন।

  • নির্দিষ্ট সংস্করণের চেয়ে বড় সংস্করণ সহ প্যাকেজের প্রয়োজন।

আমাদের উদাহরণটি দিয়ে চালিয়ে যান, ধরুন যে প্যাকেজ বারের প্রয়োজনীয় সংস্করণটি আসলে কমপক্ষে 2.7 হওয়া দরকার এবং বাজ প্যাকেজটি অবশ্যই সংস্করণ ২.১ হতে হবে - অন্য কোনও সংস্করণ তা করবে না। প্রয়োজনীয় ট্যাগ লাইনের মতো দেখতে এখানে কী প্রয়োজন: প্রয়োজন: বার> = 2.7, বাজ = 2.1

সূত্র: http://rpm.org/user_doc/more_d dependferences.html

ভার্চুয়াল ক্ষমতা / সরবরাহ সম্পর্কে সাবধান

উপরে বর্ণিত সিস্টেমটি বেশিরভাগ প্যাকেজগুলির জন্য কাজ করে; তবে, আপনি যে প্যাকেজটির প্রয়োজনীয়তাটি চান তা যদি [ভার্চুয়াল ক্ষমতা] [1] হিসাবে সরবরাহ করা হয় বা অন্যথায় বিভিন্ন নামের প্যাকেজগুলি (যা একে অপরের সাথে বিরোধী হয় না ) দ্বারা সরবরাহ করা হয় (যেমন "সরবরাহ করে:" কীওয়ার্ড ), তবে আপনি দুটি পৃথক প্যাকেজ ইনস্টল করা শেষ হতে পারে, যার প্রতিটি স্বতন্ত্রভাবে আপনার প্রয়োজনীয়তার একটি পূরণ করে। উদাহরণস্বরূপ, যদি আপনার নির্দিষ্ট ফাইলটিতে থাকে:

Requires: postgresql-server >= 8.4, postgresql-server < 9.0

এর ফলে (আপনার যদি এই প্যাকেজগুলি yum- তে উপলব্ধ থাকে) এর ফলাফল হতে পারে:

  • postgresql- সার্ভার 8.1.23-6.el5_8 (postgresql- সার্ভার <9.0)
  • postgresql92- সার্ভার 9.2.5-1PGDG.rhel5 (postgresql- সার্ভার> = 8.4)

তবে postgresql84- সার্ভারটি ইনস্টল করবে না , এটি সম্ভবত প্যাকেজটি আপনি ইনস্টল করে থাকতে পারে বলে আশা করেছিলেন।

(এক্ষেত্রে সমাধানটি কেবল postgresql84- সার্ভারের প্রয়োজন হবে; তবে সম্ভবত অন্যান্য উদাহরণ রয়েছে যার সহজ সমাধান নেই))


"কিছুদেব (নাম)> = 1.0.14" তে আমার ভার্চুয়াল নির্ভরতা ছিল কিন্তু আমি যখন ইউম ইনস্টল করতে গিয়েছিলাম ... আরপিএম রেপো থাকা সত্ত্বেও ভার্চুয়াল নির্ভরতা প্রয়োজনীয় সংস্করণ ইনস্টল করে নি। আমাকে আরপিএম "কিছু-নাম-দেব> = 1.0.14" এর নামের ভার্চুয়াল নির্ভরতা পরিবর্তন করতে হয়েছিল এবং তারপরে এটি কার্যকর হয়েছিল।
ট্রেভর বয়েড স্মিথ

1

আপনি যদি প্যাকেজ তৈরি করতে বা কোনও প্যাকেজ ইনস্টল করতে এবং এর নির্ভরতাগুলি "সীমাবদ্ধ" করার চেষ্টা করছেন তবে এটি আমার পক্ষে পরিষ্কার নয়।

প্যাকেজটি পুনর্নির্মাণ ছাড়া দ্বিতীয় মামলা করার কোনও উপায় আমি দেখতে পাচ্ছি না।

আপনি এসআরপিএম পুনরুদ্ধার করতে পারেন এবং স্পেক ফাইলটি সম্পাদনা করতে এবং এন্ট্রি প্রয়োজন (আপনি কিছু প্যাকেজ 0.5.x চান, তাই না?) যুক্ত করতে / পরিবর্তন করতে পারেন:

Requires: somepackage = 0.5.0

এবং তারপরে পুনর্নির্মাণ করুন

rpmbuild -bb -v yourpackage.spec

আপনি যদি এটি কখনও করেন নি, এটি ভয়ঙ্কর দেখা দেয় তবে এটি আপনার সমস্যার সমাধান করে। মনে রাখবেন যে যদি কোনও ডিসট্রোর জন্য সর্বজনীন প্যাকেজ তৈরি করা হয় তবে আপনি এর নির্দেশিকাটি পড়তে চাইতে পারেন কারণ এইভাবে সাধারণত নির্ভরতা নির্ধারণ করার পরামর্শ দেওয়া হয় না।


2
আমি সত্যিই ওপির পক্ষে কথা বলতে পারি না, তবে কখনও কখনও আপনি কেবল একটি নির্দিষ্ট সংস্করণ নয়, একটি নির্দিষ্ট সংস্করণ সিরিজের সর্বাধিক সাম্প্রতিক আপডেট চান। উদাহরণস্বরূপ, আপনি হয়ত জানেন যে আপনি অ্যাপাচি ২.২.x চান কারণ ২.৪.x আপনার প্যাকেজটির সাথে সঠিকভাবে কাজ করবে না। বিশেষত 2.2.23 এর প্রয়োজন 2.2.x এ ভবিষ্যতের আপডেটগুলি ইনস্টল করার অনুমতি দেয় না।
অ্যালান ক্রুয়েজার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.