Xyz> xyz-beta (বা আলফা, আরসি, ইত্যাদি) এর জন্য বর্ধিত RPM প্যাকেজ সংস্করণ "সংখ্যা"


10

কিছু সফ্টওয়্যারের বিভিন্ন সংস্করণের আরপিএম প্যাকেজ প্রকাশ করার জন্য, আমি "আপগ্রেড" হিসাবে বিবেচিত সংস্করণ "সংখ্যা" নির্দিষ্ট করার একটি উপায় খুঁজছি, এবং কয়েকটি প্রাক-প্রকাশের সংস্করণগুলির পার্থক্য অন্তর্ভুক্ত করে, যেমন (ক্রমানুসারে) ): "2.4.0 আলফা 1", ​​"2.4.0 আলফা 2", "2.4.0 আলফা 3", "2.4.0 বিটা 1", ​​"2.4.0 বিটা 2", "2.4.0 প্রকাশের প্রার্থী", "2.4.0 ফাইনাল", "2.4.1", "2.4.2", ইত্যাদি

আমার এটির প্রধান সমস্যাটি হ'ল আরপিএম বিবেচনা করে যে "2.4.0" "" 2.4.0.alpha1 "এর আগে এসেছে, সুতরাং আমি চূড়ান্ত সংস্করণ সংখ্যার শেষে প্রত্যয়টি যুক্ত করতে পারি না।

আমি "2.4.0.alpha1", "2.4.0.beta1", "২.৪.০.ফাইনাল" চেষ্টা করতে পারলাম, যা "রিলিজ প্রার্থী" ব্যতীত "2.4.0.final" পরে বিবেচিত হবে "।

আমি বিবেচিত একটি বিকল্পটি RPM সংস্করণ নম্বরটির "epoch:" বিভাগটি ব্যবহার করছে (মূল: সংস্করণ সংখ্যার আগে "উপসর্গটিকে বিবেচনা করা হবে যাতে" 1: 2.4.0 "আসলে" 2: 1.0.0 "এর চেয়ে আগের হয়) । যুগে যুগে টাইমস্ট্যাম্প স্থাপন করে, সমস্ত সংস্করণ আরপিএম দ্বারা প্রত্যাশিত অনুযায়ী অর্ডার করা হয়, কারণ তাদের সংস্করণগুলি সময়কালে বৃদ্ধি হিসাবে প্রদর্শিত হয়। যাইহোক, এটি ব্যর্থ হয় যখন একই সময়ে কয়েকটি বড় সংস্করণে নতুন প্রকাশ করা হয় (উদাহরণস্বরূপ, ২.৩.২.২.৪.৪ পরে প্রকাশিত হয়, তবে আরপিএমের জন্য তাদের সংস্করণটি "20121003: 2.3.2" এবং "20120928: 2.4)। 0 "এবং 2.3.2-তে থাকা সিস্টেমগুলি" আপগ্রেড "করতে পারে না 2.4.0 তে, কারণ আরপিএম এটিকে পুরানো সংস্করণ হিসাবে দেখায়)। এই ক্ষেত্রে, yum / zypper / ইত্যাদি আপগ্রেড করতে অস্বীকার করেছে 2.4.0, এভাবে আমার সমস্যা।

এটি অর্জনের জন্য আমি কোন সংস্করণ নম্বরগুলি ব্যবহার করতে পারি, এবং নিশ্চিত হয়ে নিন যে আরপিএম সর্বদা সংস্করণ সংখ্যাগুলি যথাযথভাবে বিবেচনা করে। বা সংস্করণ নম্বর না হলে, আরপিএম প্যাকেজিংয়ের অন্যান্য প্রক্রিয়া?

দ্রষ্টব্য 1: আমি তার মূল উদ্দেশ্যে (প্যাকেজযুক্ত সফ্টওয়্যারটির একই সংস্করণের জন্য প্যাকেজিং পরিবর্তন সহ প্যাকেজগুলির কয়েকটি প্রকাশ) এক্ষেত্রে অনুমানের ফাইলটির "প্রকাশ:" ক্ষেত্রটি রাখতে চাই।

নোট 2: এটি আরএইচইএল / সেন্টোস 6 এবং এসইএলএস ১১ এর মতো বড় বিতরণগুলির বর্তমান উত্পাদন সংস্করণগুলিতে কাজ করা উচিত তবে আমি সমাধানগুলিতে আগ্রহী, যতক্ষণ না তারা আরপিএম পুনরায় সংযুক্ত না করে!

দ্রষ্টব্য 3: ডেবিয়ান-জাতীয় সিস্টেমে, dpkg সংস্করণ সংখ্যায় একটি বিশেষ উপাদান ব্যবহার করে যা "~" (টিল্ড) অক্ষর। এটি dpkg এর সাথে প্রত্যয়টিকে "নেতিবাচক" ক্রম হিসাবে গণনা করে, যাতে "2.4.0" এর আগে "2.4.0 ~ কিছু" আসে। তারপরে, "~" এর পরে স্বাভাবিক ক্রম প্রযোজ্য, সুতরাং "2.4.0 ~ বিটা 1" এর আগে "2.4.0 ~ আলফা 1" আসে কারণ "বিটা" বর্ণমালার আগে "আলফা" আসে। আমি অগত্যা আরপিএম প্যাকেজগুলির জন্য একই স্কিমটি ব্যবহার করার জন্য খুঁজছি না (আমি নিশ্চিত যে এরকম সমমানের কোনও উপস্থিত নেই), তাই এটি কেবল এফওয়াইআই।

উত্তর:


4

সরকারী RPM নির্দেশিকা বলতে এই কিভাবে করতে হয়, এবং লিঙ্ক একটি উদাহরণ পৃষ্ঠা । এখানে আপনি খুব সাধারণ সংস্করণ প্রকল্পের সাথে কীভাবে কাজ করবেন তার উদাহরণ রয়েছে যা প্রাক-প্রকাশের তিনটি স্তরের (ক, খ, আরসি) ব্যবহার করে (যা আরপিএম দুর্ভাগ্যক্রমে এটি সমর্থন করতে কিছুটা জটিল করে তোলে):

  • 1.0.0a1 -> 1.0.0-0.1.a1
  • 1.0.0b1 -> 1.0.0-0.1.b1
  • 1.0.0b2 -> 1.0.0-0.1.b2
  • 1.0.0b2, দ্বিতীয় প্রকাশ (1.0.0b2 এর প্যাকেজিং টুইঙ্ক) -> 1.0.0-0.2.b2
  • 1.0.0rc1 -> 1.0.0-0.1.rc1
  • 1.0.0 -> 1.0.0-1
  • 1.0.1a1 -> 1.0.1-0.1.a1
  • 1.0.1 -> 1.0.1-1

নিস! এই জন্য আপনাকে অনেক ধন্যবাদ। আপনার উদাহরণে কেবল একটি জিনিস, এটি আমার কাছে মনে হয় যে 1.0.0-0.1.rc1 1.0.0-0.2.b2 এর চেয়ে পুরানো হিসাবে অবশ্যই বাছাই করা হবে ? সুতরাং, "-0.1" উপাদানটিকে "-0.2" তে টিকিয়ে দেওয়া মাত্রই, ভবিষ্যতের সংস্করণ সংখ্যায় এটি "-0.2" থাকা উচিত। আমি কি ঠিক বুঝতে পারি?
জোনাথন ক্লার্ক

আমি মনে করি তুমি সঠিক. এটি সঠিকভাবে করার জন্য আমি সঠিকভাবে ডাবল চেক করব এবং আমার উত্তর আপডেট করব।
stochastic

তাহলে সঠিক পথটি কোনটি?
স্যাম

6

প্রাক রিলিজ প্যাকেজগুলির সংস্করণ / প্রকাশের সংখ্যা নির্ধারণের জন্য ফেডোরার একটি নির্দেশিকা রয়েছে । মূলত কি আপনি চূড়ান্ত মুক্তি হতে হবে সংস্করণ নম্বরটি ব্যবহার Version, শুরু Releaseসঙ্গে সংখ্যা 0., একটি বৃদ্ধিশীল সংখ্যা, এবং তারপর alpha, betaবা যাই হোক না কেন। আপনি finalচূড়ান্ত প্রকাশের জন্য কোনও বর্ণমালার ট্যাগ ব্যবহার করবেন না ।

দ্রষ্টব্য যে আপনি দেবিয়ান-স্টাইলের টিলড সংস্করণে আরপিএম সমর্থন করে তা বিশ্বাস করতে পারবেন না। বেশ কয়েকটি বিতরণ এই বৈশিষ্ট্যটি অক্ষম করে।


ধন্যবাদ, আমি এগুলি দেখতে হবে। প্রথম নজরে, দেখে মনে হচ্ছে যে তারা "হাই-জ্যাকিং" প্রবাহের আলফা / বিটা / ইত্যাদি সংস্করণগুলির জন্য অনুমতি দেয়, যা আমি কিছুটা জটিল মনে করি ... আইএমও, রিলিজ প্যাকেজিং পরিবর্তনগুলির জন্য বাড়ানো উচিত, পরিবর্তনের জন্য নয় প্যাকেজড সফ্টওয়্যার মধ্যে।
জোনাথন ক্লার্ক

2

আমি আলফা / বিটা পার্থক্যের ভক্ত নই। এখানে প্রকাশিত কোড এবং অপ্রকাশিত কোড রয়েছে।

আমি কীভাবে এটি করি: আমি অবিচ্ছিন্ন ইন্টিগ্রেশন সিস্টেমের সাথে মেজর.মিনার.ইউবিল্ডটি পছন্দ করি (জেনকিনসিসিআই দেখুন)। বিল্ড ইন্টিজার কখনই রিসেট হয় না। ছোট সংস্করণ নম্বর পরিবর্তনগুলি পিছনের দিকে সামঞ্জস্যপূর্ণ পরিবর্তনের জন্য। বড় সংখ্যা পরিবর্তন বড় চুক্তি।

বিপণন যদি "বিল্ড "টিকে বড় সংখ্যক হিসাবে পছন্দ না করে তবে আপনি কেবলমাত্র প্রকাশিত বিল্ডগুলিতে বিপণনের জন্য একবারে সংখ্যালঘু সংখ্যা বৃদ্ধি করতে পারেন এবং তারপরে আবার যখন এটি ইঞ্জিনিয়ারিংয়ে যায় তখন।


1
ঠিক আছে, আলফা / বিটা সংস্করণগুলিও প্রকাশিত হয়েছে ... কেবল "ফাইনাল" সংস্করণ হিসাবে নয়। এবং সত্যিই এ সম্পর্কে আমার কোনও পছন্দ নেই, আমি কেবল প্যাকেজিং অনুসরণ করতে চাই: /
জোনাথন ক্লার্ক

0

আমি একই ধরণের সমস্যায় পড়েছি এবং স্যুট নম্বরটি একীকরণের জন্য আমাকে রেডহ্যাট, ডেবিয়ান, পাইথন প্যাকেজ এবং রুবি রত্নগুলির মধ্যে সংশোধনগুলির তুলনা করতে হয়েছিল এবং এটি আমাকে প্রতিটি ক্ষেত্রে "এর চেয়ে বড়" এবং "এর চেয়ে কম" মূল্যায়ন করতে সহায়তা করেছে:

এটি 1.3.0.post0.dev20180213210433 থেকে 1.3.0, YMMV এর সাথে তুলনা করছে

রেড হ্যাট জন্য ( https://utcc.utoronto.ca/~cks/space/blog/linux/RPMShellVersionComp तुलना ধন্যবাদ )

docker run -ti centos:7
yum install rpmdevtools.noarch
rpmdev-vercmp "1.3.0" "1.3.0.post0.dev20180213210433" 
1.3.0 < 1.3.0.post0.dev20180213210433

ডেবিয়ানদের জন্য:

$ dpkg --compare-versions 1.3.0 gt 1.3.0.post0.dev20180213210433 ; echo $?
1  # false
$ dpkg --compare-versions 1.3.0 lt 1.3.0.post0.dev20180213210433 ; echo $?
0  # true

পাইথনের জন্য

>>> from pkg_resources import parse_version
>>> parse_version("1.3.0") > parse_version("1.3.0.post0.dev20180213210433")
False
>>> parse_version("1.3.0") < parse_version("1.3.0.post0.dev20180213210433")
True

রুবির জন্য

irb(main):001:0> Gem::Version.new("1.3.0") > Gem::Version.new("1.3.0.post0.dev20180213210433")
=> true
irb(main):002:0> Gem::Version.new("1.3.0") < Gem::Version.new("1.3.0.post0.dev20180213210433")
=> false

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