লিনাক্স বিকাশকারীরা কেন সর্বজনীন প্যাকেজিং ফর্ম্যাট তৈরি করতে পারে না?


14

বিক্রেতার বাইনারি প্যাকেজ ফর্ম্যাট নির্বাচনগুলি মার্ফির আইনের একটি ফর্ম দ্বারা নির্ধারিত হবে বলে মনে হয়: আপনি যে সমস্ত ডিস্ট্রো ব্যবহার করেন না সেগুলির প্যাকেজ রয়েছে। (করালারি: এমন কোনও বিতরণ নেই যা আপনার সফ্টওয়্যার স্ট্যাকের বিতরণ নির্ভরতা সন্তুষ্ট করে)।

এটা কি রাজনীতির বিষয়, বা আরও গভীর কিছু যে আমরা "একবার বিল্ড, কোথাও দৌড়াও" প্যাকেজ ফর্ম্যাটটির উত্থান দেখিনি?


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

3
হপ, আপনি কেন এমন কোনও উত্তর লিখছেন না যা বিতরণের মধ্যে পার্থক্যের একটি কম পৃষ্ঠের বর্ণনা দেয়? প্রশ্নটি নির্বিকারভাবে বর্ণিত হয়েছে, তবে একটি গভীর প্রযুক্তিগত উত্তর দেওয়ার জন্য অপেক্ষা করছে।
jldugger


উইন্ডোজ বিকাশকারীরা কেন সর্বজনীন প্যাকেজিং ফর্ম্যাট তৈরি করতে পারে না? উইন্ডোজটি এখানে ব্যাগিং নয়, তবে তাদের সফ্টওয়্যার ইনস্টল করার মতো অনেকগুলি পদ্ধতি রয়েছে এবং লিনাক্সের মতো কোনও একক সংগ্রহস্থলও নেই ... (এটি একটি অলঙ্কৃত প্রশ্ন, বিটিডাব্লু)
মার্ক হেন্ডারসন

উত্তর:


24

এটির উপর জোয়েল স্পলস্কির উদ্ধৃতি দেওয়া উপযুক্ত বলে মনে হচ্ছে :

(যাইহোক, আপনারা যারা ব্লগ সিন্ডিকেশন ফিড ফর্ম্যাটগুলির আরকেন কিন্তু রাজনৈতিকভাবে অভিযুক্ত বিশ্বের অনুসরণ করেন, আপনি একই জিনিস সেখানে দেখতে পাচ্ছেন RSS আরএসএস বিভিন্ন সংস্করণ, ভুল চশমা এবং প্রচুর রাজনৈতিক লড়াই নিয়ে খণ্ডিত হয়ে উঠেছে, আর এটিম নামে আর একটি ফর্ম্যাট তৈরি করে সমস্ত কিছু পরিষ্কার করার প্রয়াসের ফলে আরএসএসের বিভিন্ন সংস্করণ এবং এটিমের একটি সংস্করণ, সঠিক স্পেকস এবং প্রচুর রাজনৈতিক লড়াই হয়েছে When আপনি যখন তৃতীয় বিকল্প তৈরি করে দুটি বিরোধী শক্তিকে একত্রিত করার চেষ্টা করেন, আপনি কেবল তিনটি বিরোধী শক্তি দিয়ে শেষ করেন You

(সামনে জোর দাও)

লিনাক্সের জন্য আপনার কাছে কমপক্ষে দুটি প্যাকেজিং সিস্টেম রয়েছে। আসলে এটি একটি ভাল জিনিস। একটি একক সিস্টেম কেবল তৃতীয় সিস্টেম তৈরি করবে।


পুনরায়: আপনি যখন তৃতীয় বিকল্প তৈরি করে দুটি বিরোধী শক্তিকে একত্রিত করার চেষ্টা করেন, আপনি কেবল তিনটি বিরোধী শক্তি দিয়ে শেষ করেন। আরও দেখুন : xkcd.com/927
জেমসবার্নেট

20

এর জন্য অনেকগুলি কারণ রয়েছে এবং কিছু বিষয়কে দৃষ্টিভঙ্গিতে রাখার জন্য ইতিহাসের কিছুটা অংশ রয়েছে।

মনে রাখবেন যে কি আমরা সাধারণত উল্লেখ করা হয় বিভিন্ন অন্যতম যখন আমরা "লিনাক্স" সম্পর্কে কথা বলতে লিনাক্স ডিস্ট্রিবিউশন । "লিনাক্স" আসলে একটি অপারেটিং সিস্টেম কার্নেল।

লিনাক্সের মূল লক্ষ্য ছিল ইউনিক্স-ভিত্তিক একটি সিস্টেম তৈরি করা যা পিসিগুলিতে চলবে (শুরুতে 386)। প্রথম পদক্ষেপটি কার্নেল নিজেই তৈরি করা হয়েছিল। লিনাস টরভাল্ডস যখন কার্নেলটিতে কাজ করছিলেন তখন জিএনইউ (জিএনইউর নট ইউনিক্স) প্রকল্পের আওতায় রিচার্ড স্টালম্যান তার নিজস্ব ফ্রি ইউনিক্স সিস্টেমে কাজ করছিলেন । দীর্ঘ গল্পের ছোট গল্পটি কাটাতে, দুটি কিছুটা রূপান্তরিত হয়েছিল কারণ GNU এর সাথে সম্পর্কিত ইউটিলিটিগুলি ছিল (সি সংকলক / গ্রন্থাগার / বিল্ড সরঞ্জাম, শেল, পাঠ্য সম্পাদক ইত্যাদি) তবে এটি চালাতে কোনও কোর নেই, এবং লিনাক্সের মূল ছিল তবে এর কোনও উপযোগিতা নেই এটি জনসাধারণের পক্ষে উপযোগী করার জন্য এটির উপরে চালান।

এই রূপান্তরটি কিছুটা সরকারীভাবে জিএনইউ / লিনাক্স নামে পরিচিত ছিল। আপনি দেখতে পাবেন যে অনেকগুলি ডিস্ট্রো এখনও তাদের জিএনইউ / লিনাক্স বিতরণ হিসাবে উল্লেখ করে।

জিএনইউ / লিনাক্সের নিখরচায় ও মুক্ত প্রকৃতির কারণে যে কেউ এটিকে বেছে নিতে এবং তাদের নির্দিষ্ট স্বাদে একটি বান্ডিলযুক্ত সিস্টেম তৈরি করতে পারে। ফলাফলটি ছিল যে এই সিস্টেমগুলি তৈরি করতে বিভিন্ন বিভাজনযুক্ত কনফিগারেশন পদ্ধতির বিভিন্ন স্ট্রিম ব্যবহার করা হত, যার প্রতিটিটির সাথে মানিয়ে নিতে প্রায় বিভিন্ন প্যাকেজ পরিচালনা সিস্টেম তৈরি করার পার্শ্ব-প্রতিক্রিয়া ছিল।

প্রতিটি পৃথক সম্পূর্ণ ব্যবস্থার নিজস্ব শক্তিশালী অনুসারী ছিল যারা বছরের পর বছর ধরে তাদের সাথে আটকে গিয়েছিল, যার ফলস্বরূপ আমরা আজকে যা করেছি: আরপিএম , এপিটি / ডিপি কেজি এবং জেন্টোর পোর্টেজের মতো প্রচুর পরিমাণে ব্যবহৃত, গভীর-শিকড় এবং স্থিতিশীল প্যাকেজ পরিচালনা ব্যবস্থা ।

অটোপ্যাকেজের মতো প্রকল্প রয়েছে যা সমস্যা সমাধানের চেষ্টা করছে তবে বিভিন্ন সমর্থিত প্যাকেজ পরিচালনা ব্যবস্থার অবিচ্ছিন্ন বিবর্তনের অর্থ অনুসরণ করার জন্য অনেকগুলি চলমান লক্ষ্য রয়েছে।

কিছু সফ্টওয়্যার বিক্রেতারা যা করছেন তা হ'ল নির্দিষ্ট বাইনারিগুলি এবং নির্ভরতার অনুলিপিগুলি একটি বৃহত প্যাকেজের মধ্যে বান্ডিল করা যা নির্দিষ্ট সিস্টেমে কাজ করবে।


8
এর চেয়ে আরও অনেক কিছু আছে। এমনকি যদি সারা পৃথিবী আরপিএম বলতে একীভূত হয়, তবুও আপনার কাছে একবারও প্যাকেজটি থাকবে না, যে কোনও জায়গায় ওপি কল্পনা করে world প্যাকেজগুলি তাদের ডিস্ট্রোতে বেশিরভাগ অংশের জন্য নির্দিষ্ট, কারণ তারা অন্যান্য সমস্ত প্যাকেজগুলিতে নির্ভর করে। বিশ্বের "একবারে প্যাকেজ, যে কোনও জায়গায় চালানোর" একমাত্র উপায় হ'ল কেবল একটি একক প্যাকেজিং সিস্টেমই নয়, কেবল একটি একক ডিস্ট্রোও থাকবে।
সিয়ান

9

একই প্যাকেজ ফর্ম্যাটটি কোনওভাবেই সহায়তা করবে না। আপনি অন্যান্য বিতরণে একই প্যাকেজটি ব্যবহার করতে পারবেন না। আপনি প্রায়শই এটি একই বিতরণের বিভিন্ন সংস্করণেও ব্যবহার করতে পারবেন না। এমনকি প্যাকেজ নির্মাণেও একই সমস্যা হতে পারে।

প্যাকেজ ইনস্টল করতে আপনাকে প্যাকেজ তৈরির সময় তৈরি হওয়া নির্ভরতাগুলি পূরণ করতে হবে। একটি প্যাকেজ তৈরি করতে আপনার বিল্ড নির্ভরতা মেটাতে হবে। এবং এই জিনিস পরিবর্তন। পরিবর্তনগুলি প্রয়োগ করতে সক্ষম হতে, কেবলমাত্র সেই প্যাকেজগুলিকে সমর্থন করা সহজ যা আপনি পরিবর্তনগুলির পরে কাজ করতে পারেন।

সমস্ত নির্ভরতা যদি এক রকম হয় তবে এটি আলাদা বিতরণ বা একই বিতরণের ভিন্ন সংস্করণ হবে না।


4
আপনার উল্লিখিত সমস্যা সমাধানের জন্য লাইব্রেরিগুলি সংস্করণ করা এবং সংস্করণ নির্ভরতা ব্যবহার করা কি সম্ভব হবে না?
jldugger

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

এমনকি যদি কোনও প্যাকেজগুলি খিলান হয়: সমস্ত, বা স্ক্রিপ্টিং ভাষার, পাইথন ২.৪ এবং পাইথন ২..6 এর মধ্যে উল্লেখযোগ্য পার্থক্য রয়েছে যা প্যাকেজ তৈরি করবে যা এটি তৈরি করা প্ল্যাটফর্মে কাজ করে এবং অন্যকে ব্যর্থ করে।
jldugger

হ্যাঁ, এটি কেবল গ্রন্থাগার নির্ভরতা সম্পর্কে নয়।
iny

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

7

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


4
এপটি-আরপিএম বেশ কিছু সময়ের জন্য মারা গেছে (শেষ প্রকাশটি 1½ বছর পূর্বে) এখন বেশিরভাগ লোক ইয়াম ব্যবহার করতে চলে গেছে। ইয়াম নিজেই বেশ কয়েকটি দুর্দান্ত বৈশিষ্ট্য সরবরাহ করে যা
অ্যাপগুলির প্রসাদগুলিকে

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

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

1
রেডহ্যাটের আরপিএম প্যাকেজিং ইডিএস (চরম নির্ভরতা সিন্ড্রোম।) ভুগছে এটি আরপিএম-তে কোনও মন্তব্য নয় বরং রেডহাট। ইউম অ্যাপটি-গেম প্লাস অ্যাপ্লিকেশন অনুসন্ধানের একটি দুর্দান্ত অনুলিপি, এবং আরপিএম কমান্ড লাইন অনুরোধের আগের আরকেন বিশ্বে ব্যবহারযোগ্যতা এনেছে।
কুমারশ

3
প্রকৃতপক্ষে .deb এবং .rpm প্যাকেজ ফর্ম্যাটগুলি প্রায় প্রযুক্তিগতভাবেও রয়েছে (তবে, আইএমও .deb এর মধ্যে নির্ভরযোগ্যতা হ্যান্ডলিং, উদাহরণস্বরূপ সংস্করণযুক্ত নির্ভরশীলতা, সরবরাহ, বিবাদ এবং ভার্চুয়াল প্যাকেজ রয়েছে)। টেক স্তরে যেটি জ্বলজ্বল করে তা হ'ল, তবে ডেবিয়ানের প্যাকেজগুলি সত্যই কী সামনে দাঁড়ায় তা হ'ল বিকাশকারী নীতিগুলির সংজ্ঞায়িত সেট যা প্যাকেজগুলি মেনে চলতে হবে সেই মান নির্ধারণ করে। উবুন্টু প্যাকেজগুলি বৃহত্তর পরিমাণে উত্তরাধিকার সূত্রে প্রাপ্ত হয় এবং উবুন্টুও উত্তরাধিকার সূত্রে বিকাশকারী সংস্কৃতির উত্তরাধিকার সূত্রে প্রাপ্ত হয়।
cas



2

আমি মনে করি ক্লিটাস, ওয়েন এবং ইনি এটির বেশ ভাল উত্তর দিয়েছে। আমি এটি সত্যিই যুক্ত করতে চাই, এটি কোনও বিশাল চুক্তি নয়। আমি একটি মিশ্র পরিবেশে কাজ করি যেখানে আমাদের জেন্টু (পোর্টেজ), সুস (আরপিএম / জাইপার) এবং ওপেনবিএসডি (প্যাকেজ এবং পোর্ট) রয়েছে। তাদের যে কোনও একটিতে প্যাকেজ ইনস্টল করা কঠিন নয় এবং তারা কোন ফর্ম্যাটটি ব্যবহার করছে তা আমি সত্যিই চিন্তা করি না।

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


1

ওয়েল সর্বদা টের বলগুলিতে স্থিরভাবে সংকলিত বাইনারি থাকে .... ;-)


1
একেএ "স্ল্যাকওয়্যার"।
পল টমবলিন

দুর্ভাগ্যক্রমে স্ট্যাটিক্যালি সংকলিত বাইনারিগুলির সাথে সমস্যা রয়েছে যেগুলি রানটাইম (বিশেষত এনএসসিউইচ) -এ সিস্টেম লাইব্রেরি লোড করা প্রয়োজন।
pjc50

1

"লিনাক্স" এর জন্য কোনও মান বাইনারি ইন্টারফেসের কোনও সংজ্ঞা নেই কারণ এটি কেবল একটি কার্নেল। আপনার সফ্টওয়্যার স্ট্যাকটি আপনার কার্নেলের চেয়ে আরও বেশি কিছু দিয়ে ইন্টারফেস করার দরকার রয়েছে তা শত শত পৃথক উত্স গাছের মধ্যে একটি আদর্শ এবিআই বজায় রাখার একটি বিশেষ চ্যালেঞ্জ উপস্থাপন করে ds

ভাল প্যাকেজিং সরঞ্জামগুলির বিষয়ে , আমি এটি দুর্দান্ত বাইনারি প্যাকেজিং ফর্ম্যাটের জন্য দেবিয়ান জিএনইউ / লিনাক্সকে পছন্দ করি। এটি স্ট্যান্ডার্ড সরঞ্জাম এবং অ্যাপ্লিকেশনগুলির জন্য আমার প্রয়োজনের 90% সরবরাহ করেছে। অবশিষ্ট 10% অ-মুক্ত উপাদান বা বগি ভাগ করা লাইব্রেরি নির্ভরতা অন্তর্ভুক্তির কারণে উত্স থেকে নির্মিত। যখন এই অ্যাপ্লিকেশনগুলি মোতায়েন করা দরকার, আমি উত্পাদন ক্লাস্টারগুলির জন্য কাস্টম বাইনারিগুলি তৈরি করি।


1

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

  • বিশ্বব্যাপী-অনন্য প্যাকেজটির নামকরণ, যাতে দুটি ব্যক্তি / বন্টন স্বতন্ত্রভাবে একই নামে আলাদা আলাদা প্যাকেজ তৈরি করতে না পারে।

  • প্যাকেজগুলির বিরোধী প্রয়োজনীয়তা থাকলে গ্রন্থাগারের বিভিন্ন সংস্করণ সমান্তরাল ইনস্টল করার ক্ষমতা। একটি বিতরণ প্রতিটি গ্রন্থাগারের কোন সংস্করণ ব্যবহার করবে তা সিদ্ধান্ত নিতে পারে এবং সমস্ত প্যাকেজটিকে সেই সংস্করণটি ব্যবহার করতে বাধ্য করে force বিতরণ জুড়ে কাজ করে এমন একটি সিস্টেম অবশ্যই আরও নমনীয় হতে হবে।

জিরো ইনস্টল এই দুটি বৈশিষ্ট্যই সরবরাহ করে:

  • নামগুলি ইউআরআই (যেমন: http://rox.sourceforge.net/2005/interfaces/ROX-Filer )। ডিফল্টরূপে কেবলমাত্র কোনও ডোমেনের মালিকই সেই নামের জায়গার মধ্যে প্যাকেজ তৈরি করতে পারেন।

  • প্রতিটি প্যাকেজের প্রতিটি সংস্করণ নিজস্ব ডিরেক্টরিতে চলে। প্রতিটি অ্যাপ্লিকেশন কেবলমাত্র প্রয়োজনীয় গ্রন্থাগারগুলি এটির সাথে সামঞ্জস্যপূর্ণ সংস্করণগুলি দেখতে পারে।

উদাহরণস্বরূপ, সম্পাদনা অ্যাপ্লিকেশনটি পাইথন <3 এর মতো উপর নির্ভর করে:

<command name="run" path="Edit/AppRun">
  <runner interface="http://repo.roscidus.com/python/python">
    <version before="3"/>
  </runner>
</command>

আরো দেখুন: http://www.osnews.com/story/16956/ ডিজিট্রালাইজড- ইন্সটলেশন- সিস্টেমস

[দ্রষ্টব্য: আমি 0 টি ইনস্টল বিকাশকারী]

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