লিনাক্স [বন্ধ] মধ্যে "এটি নিজেই সংকলন করুন" মানসিকতার উত্স কী?


11

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

এটি বলেছিল, আমি সত্যিই বলতে পারি না যে আমি "এটি নিজেই সংকলন করুন" [সিআইওয়াই] মানসিকতা যা * নিক্স চেনাশোনাগুলিতে বিদ্যমান। আমি জানি এটি চলে যাচ্ছে, তবে এখনও সময়ে সময়ে এটি শুনতে পাচ্ছি। একজন বিকাশকারী হিসাবে, আমি জানি যে সংকলক এবং প্রয়োজনীয় নির্ভরতা স্থাপন করা বাটটিতে ব্যথা হয়, তাই আমার কাছে মনে হয় যে সিআইওয়াই কাজের প্রবাহটি * নিক্সকে অনেক কম অ্যাক্সেসযোগ্য করতে সহায়তা করেছে have

কোন সামাজিক বা প্রযুক্তিগত কারণগুলি সিআইওয়াই মানসিকতার উত্থানের দিকে পরিচালিত করেছিল?


12
আপনি তা শুনতে লিনাক্স চেনাশোনা বা ইউনিক্স বেশী? একটি বিশাল পার্থক্য আছে।
টেরডন

2
লিনাক্সের বিভিন্ন ধরণের ডিস্ট্রো রয়েছে যা সত্যিই অবাক হওয়ার কিছু নেই। এখন যেহেতু কিছু ডিস্ট্রোস সামনে-রানার হিসাবে এগিয়ে আসছে সেখানে সংকলিত সংস্করণ রয়েছে, তবে এটি ব্যবহারিক না হওয়ার জন্য এটি এমন একটি ওয়েব ব্যবহার করত।
সেন্টটিমান

8
এবং রেকর্ডের জন্য, একটি লিনাক্স সিস্টেমে "সংকলক এবং প্রয়োজনীয় নির্ভরতা স্থাপন" আসলে এতো কঠিন নয়। কিছু এমনকি সহজ বলতে পারে।
ডেথগ্রিপ

6
@ ড্যারেন - এটি বিপরীত, আজকাল বেশিরভাগ ওপেনসোর্স টারবলগুলি এমন একটি মান অনুসরণ করে যা বহু বছর আগে উপস্থিত ছিল না। টার্বল ডাউনলোড করুন, টার্বল এক্সট্র্যাক্ট করুন, ডিরেক্টরিতে সিডি করুন, রান করুন ./configure <options>, তারপরে মেক এবং ইনস্টল করুন। আমি 30 বছর আগে এটিএন্ডটিটি সিএসভি ইউনিক্স এবং গল্ট আয়রন ইউটিএক্স চালিত এটিএন্ডটিটি 3 বি 2 সার্ভারগুলিতে দাঁতগুলি কেটেছি। বিষয়গুলি তখন অনেক কঠিন ছিল। কিছু সূত্রপাত ছিল configure, প্রক্রিয়া অধিকাংশ আপনি নিজে সম্পাদন করা ছিল makefile(s)আপনার নির্দিষ্ট সিস্টেমের জন্য।
ডেথগ্রিপ

1
@ ডেথগ্রিপ প্রকৃতপক্ষে, আপনি কি কখনও ভিসুয়াল স্টুডিও ছাড়াই সিস্টেম প্রোগ্রামিংয়ের জন্য উইন্ডোজ ডেভেলপমেট পরিবেশ স্থাপনের চেষ্টা করেছেন? অসম্ভবের কাছাকাছি আমি আপনাকে বলছি।
বিড়াল

উত্তর:


27

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

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

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

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


5
ইউনিক্স বিশ্বে এটি ওএসের উপর নির্ভর করে আবার পৃথক হবে। আমার শেষ অবস্থানটি সোলারিস (সান স্পার্ক প্ল্যাটফর্ম) সার্ভারগুলির একটি বিশাল সংখ্যক জড়িত, এবং আমি কয়েক বছরের জন্য ডেস্কটপ হিসাবে বাড়িতে সোলারিস 10 x86 চালিয়েছিলাম। আমি এইচপিইউএক্স বা এআইএক্সের পক্ষে কথা বলতে পারি না তবে সোলারিসে আপনাকে কিছুটা সিআইওয়াই করতে হবে। সোলারিসের জন্য প্রাক-প্যাকেজড অনেকগুলি ওপেনসোর্স ইউটিলিটি বিতরণ করেছে Sun ওপেনসিএসআর.আর.জি এবং ইউনিক্সপ্যাকেজ ডটকমের মতো সাইটগুলিও ছিল। তবে আমি এখনও সোর্স টার্বলগুলি থেকে বিট সংকলন বেশ করেছি।
ডেথগ্রিপ

"* নিক্সের ইতিহাসের বেশিরভাগ ক্ষেত্রে, অন্য কোনও বিকল্প ছিল না। উত্স টার্বল হিসাবে প্রোগ্রামগুলি বিতরণ করা হয়েছিল।" - কিন্তু যে কারণ CIY মানসিকতা, ডান?
উড্রো বারলো

2
@ উড্রো আসলেই নয়। অন্য কোন বিকল্প উপলব্ধ ছিল না। ভুলে যাবেন না যে * নিক্স পুরানো । এছাড়াও, বেশিরভাগ প্রোগ্রাম সহকর্মীদের মধ্যে ইতিমধ্যে পাস হয়েছিল যারা ইতিমধ্যে বিশেষজ্ঞ ছিলেন এবং আপনার কোডটি ব্যবহার করতে চান এমন 8 জন লোকের জন্য আপনি ইনস্টলার বা প্যাকেজ ম্যানেজার হিসাবে জটিল কিছু আবিষ্কার করতে কেন বিরক্ত করবেন? যখন এই জাতীয় সরঞ্জামগুলি আবিষ্কার করা হয়েছিল, * নিক্স লোকেরা তাদের সবার মতোই সেগুলি ব্যবহার শুরু করেছিল।
টেরডন

@ উড্রোবার্লো নং, আপনি কারণ এবং প্রভাব বিনিময় করছেন। প্রোগ্রামগুলি উত্স হিসাবে বিতরণ করা হয়েছিল কারণ চারপাশে প্রচুর বিভিন্ন প্ল্যাটফর্ম ছিল (বিভিন্ন হার্ডওয়্যার আর্কিটেকচার, বিভিন্ন অপারেটিং সিস্টেম, লাইব্রেরির বিভিন্ন সেট), সুতরাং একটি প্রোগ্রাম লেখকের এগুলি সমস্ত কভার করার জন্য কয়েকশ বা হাজার হাজার বাইনারি বিতরণ করা প্রয়োজন হত। সিআইওয়াই এখনও এমন লোকদের জন্য রয়েছে যারা "বহিরাগত" প্ল্যাটফর্মগুলি চালান, তবে একটি বিশাল সংখ্যাগরিষ্ঠ "মূলধারার" প্ল্যাটফর্ম চালায় যেখানে বাইনারিগুলি বিতরণ থেকে সহজেই উপলব্ধ।
গিলস 23'7

@terdon ঠিক আছে, আমি দেখুন। আমি ঠিক উল্লেখ করতে চাই, যদিও, সেই অনুচ্ছেদটি কিছুটা টোটোলজিকাল। একটি নির্দিষ্ট স্তরে, ওপি জিজ্ঞাসা করেছিল "কেন * নিক্স বিকাশকারীগণ সংকলিত বাইনারিগুলির পরিবর্তে উত্স কোড বিতরণ করবেন?" এবং আপনার প্রথম অনুচ্ছেদে বলা হয়েছে "কারণ * নিক্স বিকাশকারীগণ সংকলিত বাইনারিগুলির পরিবর্তে উত্স কোড বিতরণ করে"। হ্যাঁ, আমি বুঝতে পেরেছি যে আমি সরল করছি, তবে আমি মনে করি আপনি উত্তরটি উত্তরটিতে আপনার মন্তব্য থেকে যুক্তি যুক্ত করলে আপনার উত্তর আরও পরিষ্কার হবে।
উড্রো বারলো

13

শেষ ব্যবহারকারী, বিতরণ রক্ষণাবেক্ষণকারী, এবং কোড সরবরাহকারী / বিকাশকারী / প্রকল্প গ্রুপগুলি থেকে এই মানসিকতার কয়েকটি কারণ রয়েছে এবং সেগুলির প্রতিটি একেবারেই বৈধ।

ওপেন সোর্স দিক

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

অপ্টিমাইজেশন এবং বিকল্প দিক

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

সিপিইউ আর্কিটেকচার দিক

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

বিতরণ দিক

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


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

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

9

@ ইটারডন যেমন বলেছেন, আজকাল জিনিসগুলি সঙ্কলন করার প্রয়োজনটি খুব পাতলা, বিশেষত গৃহ ব্যবহারকারীদের জন্য।

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

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

দেবিয়ান এবং / অথবা দেবিয়ানের নতুন সংস্করণগুলিতে পোর্ট করার জন্য সিস্টেমগুলির পুনর্নির্ধারণের সময় আমি নিজে হাতে সফ্টওয়্যার সংকলন করতে হয়েছিল যেগুলির একটি ফ্রেমওয়ার্ক ছিল যা ওএস দ্বারা আর সমর্থিত ছিল না।

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

আমি এখনও ডেভ গিট রেপো থেকে আমার দ্বারা সংকলিত ফ্রিআরডিয়াস সংস্করণগুলির জন্য আমার স্থানীয় সংগ্রহস্থল ডিবগুলিতে রাখি, কারণ সেখানে স্থায়ী সংস্করণগুলির একটি স্ট্রিং ছিল যা দেবিয়ানে (গুরুতর) বাগগুলি ছিল এবং সাধারণত ডেবিয়ান / উবুন্টুর জন্য সম্পর্কিত .debs ছিল না আমাদের প্রয়োজনের জন্য পর্যাপ্ত।

এবং এটি না বলে যায় যে প্রায়শই আমরা আমাদের নিজের লেখা লিখিত জিনিসগুলি চালাতে / বা পরিচালনা করতে হয়।

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


4

কোন সামাজিক বা প্রযুক্তিগত কারণগুলি সিআইওয়াই মানসিকতার উত্থানের দিকে পরিচালিত করেছিল ?

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

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

এখনকার পরিস্থিতি, বেশিরভাগ লোকেরা কেবলমাত্র ডেস্কটপে বসে থাকা কেবলমাত্র প্রশাসক এবং মেশিনের একমাত্র ব্যবহারকারী, Unতিহ্যবাহী ইউনিক্স মডেল থেকে একেবারে পৃথক। একটি সিসাদমিন কেন্দ্রীয় সিস্টেমে এবং প্রত্যেকের ডেস্কটপে সফ্টওয়্যারটি বজায় রেখেছিল। (প্রায়শই লোকাল ওয়ার্কস্টেশনগুলি কেবল এনএফএস-মাউন্ট /optএবং /usr/local/কেন্দ্রীয় সার্ভার থেকে এবং সেখানে স্টাফ ইনস্টল করে))


.NET এবং জাভা এর মতো জিনিসের আগে, বিভিন্ন সিপিইউ আর্কিটেকচার জুড়ে সত্য বাইনারি-বহনযোগ্যতা অসম্ভব ছিল। ইউনিক্স সংস্কৃতি এই কারণে উত্স-বহনযোগ্যতার সাথে ডিফল্ট হিসাবে বিকশিত হয়েছিল, এমনকি এলএসবির মতো সাম্প্রতিক লিনাক্স প্রচেষ্টা অবধি বাইনারি-বহনযোগ্যতা সক্ষম করার চেষ্টা করার সামান্য প্রচেষ্টাও নেই। উদাহরণস্বরূপ, POSIX ( প্রধান ইউনিক্স মান) একমাত্র উৎস-বহনযোগ্যতা প্রমিত করার জন্য সাম্প্রতিক সংস্করণটি এমনকি চেষ্টা করে।

সম্পর্কিত সাংস্কৃতিক উপাদান: প্রাথমিক বাণিজ্যিক এটিএন্ডটি ইউনিক্স সোর্স কোড নিয়ে আসে (টেপগুলিতে)। তুমি না আছে এটা ঠিক ছিল যদি আপনি দেখতে কিভাবে কিছু চেয়েছিলেন, উৎস থেকে ব্যবস্থা গড়ে তুলতে সত্যিই কাজ যখন ডক্স যথেষ্ট ছিল না।

উইকিপিডিয়া বলেছেন :

"ইউনিক্স নীতি বিস্তৃত অন লাইন ডকুমেন্টেশন এবং (বহু বছর ধরে) সমস্ত সিস্টেম উত্স কোডে প্রস্তুত অ্যাক্সেস প্রোগ্রামার প্রত্যাশাকে উত্থাপন করেছিল এবং 1983 এর নিখরচায় সফ্টওয়্যার আন্দোলনের প্রবর্তনে ভূমিকা রেখেছিল।"

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


উত্স আকারে সফ্টওয়্যার বিতরণ হ'ল লোকেরা যে কোনও সিস্টেমে এটি চালাতে চায় তা এটিকে খাপ খাইয়ের সহজতম উপায়। (হয় শেষ ব্যবহারকারী বা লিনাক্স ডিস্ট্রোর জন্য এটি প্যাকেজিং লোক)। যদি সফ্টওয়্যারটি ইতিমধ্যে কোনও বিতরণের জন্য / দ্বারা প্যাকেজ করা থাকে তবে শেষ ব্যবহারকারীরা কেবল এটি ব্যবহার করতে পারেন।

তবে বেশিরভাগ প্যাকেজগুলির লেখকরা প্রতিটি সম্ভাব্য সিস্টেমের জন্য বাইনারি তৈরি করার আশা করা খুব বেশি much কিছু বড় প্রকল্প কয়েকটি সাধারণ ক্ষেত্রে বাইনারি সরবরাহ করে (বিশেষত x86 / উইন্ডোজ যেখানে ওএস কোনও বিল্ড পরিবেশের সাথে আসে না এবং ওএস বিক্রেতারাই বাইনারি-কেবল ইনস্টলারগুলির বিতরণে একটি গুরুত্ব দেয়)।

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

(উৎস-স্তরের বহনযোগ্যতা সমস্যা অন্য ধরনের যে শুধুমাত্র কারণ বিল্ড env মধ্যে পার্থক্য ঘটবে, এবং সত্যিই ইস্যু এখানে। সাথে জাভা-শৈলী বাইনারি বহনযোগ্যতা, স্বয়ংক্রিয় সরঞ্জাম (প্রাসঙ্গিক নয় আছে autoconf/ auto-make) এবং মত অনুরূপ কিছু cmakewouldn 'টি প্রয়োজন হতে। এবং আমরা জিনিস হতো না মত কিছু সিস্টেমে অন্তর্ভুক্তি প্রয়োজন <netinet/in.h>পরিবর্তে<arpa/inet.h> জন্যntohl(3) । (এবং হয়তো আমরা হতো না ntohl()বা প্রথম স্থানে অন্য কোন বাইট-অর্ডার কাপড়!)


আমি নিয়মিত। নেট ভাষায় বিকাশ করি, তাই আমি কম্পিউটার নিরক্ষর নই।

একবার সংকলন করুন, রান-কোথাও হ'ল। নেট এবং জাভার অন্যতম প্রধান লক্ষ্য, সুতরাং এই সমস্যাটি সমাধানের প্রয়াসে পুরো ভাষাগুলি উদ্ভাবিত হয়েছে এবং এটির সাথে আপনার দেব অভিজ্ঞতাও রয়েছে বলে একথা ঠিক। .NET সহ, আপনার বাইনারি কোনও পোর্টেবল রানটাইম এনভায়রনমেন্ট (সিএলআর) এ চলে । জাভা তার রানটাইম পরিবেশকে জাভা ভার্চুয়াল মেশিন বলে । আপনাকে কেবলমাত্র একটি বাইনারি বিতরণ করতে হবে যা কোনও সিস্টেমে কাজ করবে (কমপক্ষে, এমন কোনও সিস্টেম যেখানে কেউ ইতিমধ্যে একটি জেভিএম বা সিএলআর প্রয়োগ করেছেন)। আপনার কাছে এখনও পোর্টেবিলিটি সমস্যা যেমন /বনাম \পাথ বিভাজক, বা কীভাবে মুদ্রণ করা যায়, বা অবশ্যই জিইউআই লেআউট বিশদ থাকতে পারে।

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

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

অপারেটিং সিস্টেমগুলিও গুরুত্বপূর্ণ । একই CPU- র আর্কিটেকচারের জন্য ইউনিক্স এর একটি ভিন্ন গন্ধ বিভিন্ন বাইনারি ফাইল ফরম্যাট থাকতে পারে, মত ধ্রুবক জন্য সিস্টেম কল, এবং বিভিন্ন সাংখ্যিক মান তৈরীর জন্য একটি বিভিন্ন ABI- র fopen(3)'এর O_RDONLY, O_APPEND,O_TRUNC

নোট এমনকি একটি পরিবর্তনশীল সংযুক্ত বাইনারি এখনও কিছু অপারেটিং সিস্টেম-নির্দিষ্ট প্রারম্ভে কোডটি রান সামনে আছে main()। উইন্ডোজ এ, এটি crt0। ইউনিক্স এবং লিনাক্সের একই জিনিস রয়েছে, যেখানে কিছু সি-রানটাইম স্টার্টআপ কোড স্ট্যাটিকভাবে প্রতিটি বাইনারিতে সংযুক্ত থাকে। আমার তত্ত্ব অনুসারে আপনি এমন একটি সিস্টেম ডিজাইন করতে পারেন যেখানে সেই কোডটি গতিশীলভাবে খুব সংযুক্ত ছিল এবং libc বা গতিশীল লিঙ্কারের একটি অংশ নিজেই তৈরি হয়েছিল, তবে আমি যে কোনও ওএস সম্পর্কে জিনিসগুলি অনুশীলনে কাজ করি তা এই নয় I'm এটি কেবল সিস্টেম-কল এবিআই সমস্যার সমাধান করবে, স্ট্যান্ডার্ড-লাইব্রেরি ফাংশনগুলির জন্য ধ্রুবকগুলির জন্য সংখ্যাগত মানগুলির সমস্যা নয়। (সাধারণত সিস্টেম-কলগুলি libc মোড়ক ফাংশনগুলির মাধ্যমে করা হয়: উত্সের জন্য একটি সাধারণ x86-64 লিনাক্স বাইনারি mmap()যা syscallনির্দেশাবলী অন্তর্ভুক্ত করে না , কেবল একটিcall একই নামের লিবিসি র‌্যাপার ফাংশনের নির্দেশনা।

আপনি কেন কেবল আই 386-লিনাক্সে i386-FreeBSD বাইনারি চালাতে পারবেন না এটি এই অংশ। (কিছুক্ষণের জন্য, লিনাক্স কার্নেলের একটি সিস্টেম-কলের সামঞ্জস্যতা স্তর ছিল I আমি মনে করি বিএসডি-র মধ্যে কমপক্ষে একটি লিনাক্স বাইনারি পরিচালনা করতে পারে, একই রকমের কম্প্যাট স্তর সহ, তবে আপনার অবশ্যই লিনাক্স লাইব্রেরিগুলির প্রয়োজন))


আপনি যদি বাইনারি বিতরণ করতে চান তবে আপনাকে সিপিইউ / ওএস-ফ্লেভার + সংস্করণ / ইনস্টলড-লাইব্রেরি-সংস্করণগুলির প্রতিটি সংমিশ্রণের জন্য আলাদা আলাদা তৈরি করতে হবে

'80s /' 90 এর দশকে, ইউনিক্স সিস্টেমগুলির জন্য সাধারণ ব্যবহারে অনেকগুলি বিভিন্ন ধরণের সিপিইউ ছিল (এমআইপিএস, স্পার্ক, বিদ্যুৎ, পিএ-আরআইএসসি, এম 68 কে, ইত্যাদি) এবং ইউনিক্সের বিভিন্ন স্বাদ (আইআরআইএক্স, সানোএস, সোলারিস, এআইএক্স, এইচপি-ইউএক্স, বিএসডি ইত্যাদি)।
এবং এটি কেবল ইউনিক্স সিস্টেম। অনেক উত্স প্যাকেজগুলি অন্যান্য সিস্টেমগুলি যেমন VAX / VMS, MacOS (m68k এবং পিপিসি), অ্যামিগা, পিসি / এমএস-ডস, আতারি এসটি ইত্যাদির উপরও সংকলন এবং কাজ করবে

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

সুতরাং ইতিমধ্যে আপনি আরও শক্তিশালী সিপিইউ / ওএস সংমিশ্রণের চেয়ে আরও বেশি লাঠি কাঁপতে পারেন, এমনকি আপনি তৃতীয় পক্ষের লাইব্রেরিতে নির্ভরতা সম্পর্কে চিন্তাভাবনা শুরু করার আগেই যা বিভিন্ন সিস্টেমে বিভিন্ন সংস্করণে থাকতে পারে। (ওএস বিক্রেতা কর্তৃক প্যাকেজভুক্ত কিছু নেই যা নিজে হাতে ইনস্টল করতে হবে))

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

সমস্ত বড় সংমিশ্রণগুলিতে নির্মাণ এবং পরীক্ষার সামর্থ্যযোগ্য বড় বড় বাণিজ্যিক প্রকল্পগুলি ব্যতীত পুরানো-স্কুল ইউনিক্সের বাইনারি বিতরণ করা সম্পূর্ণরূপে অপারগ ছিল

এমনকি ঠিক বাইনেরিতে উপার্জন i386-linux-gnuএবং amd64-linux-gnuকঠিন। পোর্টেবল বাইনারিগুলি সম্ভব করার জন্য লিনাক্স স্ট্যান্ডার্ড বেসের মতো জিনিসগুলিতে অনেক সময় এবং প্রচেষ্টা ব্যয় করা হয়েছে । এমনকি স্থিতিশীলভাবে বাইনারিগুলি যুক্ত করাও সমস্ত কিছু সমাধান করে না। (যেমন একটি রেডহ্যাট সিস্টেম বনাম একটি ডেবিয়ান সিস্টেমে ওয়ার্ড-প্রসেসিং প্রোগ্রাম কীভাবে প্রিন্ট করা উচিত? ইনস্টলটি কীভাবে কোনও ব্যবহারকারী বা গ্রুপকে ডেমনের জন্য যুক্ত করা উচিত এবং প্রতিটি স্টার্টআপ স্ক্রিপ্টটি প্রতিটি রিবুটের পরে চালানোর ব্যবস্থা করা উচিত?) সেগুলি দুর্দান্ত নয় উদাহরণস্বরূপ, কারণ উত্স থেকে পুনরায় সংস্থানগুলি তাদের সমাধান করে না।


সব কিছু ছাড়াও, দিনের স্মৃতি এখনকার চেয়ে মূল্যবান ছিল। সংকলন সময়ে featuresচ্ছিক বৈশিষ্ট্যগুলি রেখে ছোট ছোট বাইনারি (কম কোড আকার) তৈরি করতে পারে যা তাদের ডেটা স্ট্রাকচারের জন্য কম মেমরি ব্যবহার করে। নির্দিষ্ট বৈশিষ্ট্যের প্রতিটি ক্ষেত্রে classবা কোনও কিছু structট্র্যাক করার জন্য যদি কোনও বৈশিষ্ট্যের অতিরিক্ত সদস্যের প্রয়োজন হয় , তবে সেই বৈশিষ্ট্যটি অক্ষম করা 4 টি বাইট দ্বারা উদাহরণটিকে সঙ্কুচিত করবে (উদাহরণস্বরূপ), এটি যদি প্রোগ্রামের 100k বরাদ্দকৃত কোনও বস্তু হয় তবে এটি দুর্দান্ত।

এই দিনগুলিতে ptionচ্ছিক সংকলন-সময় বৈশিষ্ট্যগুলি প্রায়শই অতিরিক্ত লাইব্রেরিগুলি alচ্ছিক করতে ব্যবহৃত হয়। যেমন আপনি কম্পাইল করতে পারেন ffmpegসহ বা ছাড়া libx264, libx265, libvorbisনির্দিষ্ট ভিডিও / অডিও এনকোডার, উপশিরোনাম হ্যান্ডলিং, ইত্যাদি ইত্যাদি জন্য, এবং অন্যান্য অনেক লাইব্রেরি আরো সাধারণভাবে, জিনিস অনেক সহ বা ছাড়া কম্পাইল করা যায় libreadline: যদি এটি উপলব্ধ যখন আপনি চালাতে ./configure, ফলস্বরূপ বাইনারি লাইব্রেরির উপর নির্ভর করে এবং টার্মিনাল থেকে পড়ার সময় অভিনব লাইন-সম্পাদনা সরবরাহ করে। যদি এটি না হয় তবে প্রোগ্রামটি স্টলিনের সাথে fgets()কিছু বা কিছু দিয়ে লাইনগুলি পড়তে কিছু পতন-ব্যাক সমর্থন ব্যবহার করবে ))

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

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