আমার লিনাক্স বাইনারি সমস্ত ডিস্ট্রোজে কাজ করবে?


24

আমি ডেলফির জন্য একটি ভাল প্রতিস্থাপন IDE পেয়েছি যার নাম লাজারাস। তবে প্রোগ্রামারদের কাছে আমার কোনও প্রশ্ন নেই।

উইল স্ট্যাটিক্যালি লিঙ্ক সব লিনাক্স ডিস্ট্রিবিউশন লিনাক্স বাইনারি কাজ করে? অর্থাৎ আমি এটি কী লিনাক্স ডিস্ট্রো তৈরি করেছি তাতে কিছু যায় আসে না এবং এটি ডেবিয়ান / আর্কলিনাক্স / উবুন্টু / ওপেনসুএস / ... যাই হোক না কেন?

আমার অনুসন্ধানের ফলাফল হিসাবে, সত্যই কেবল 32 বিট বনাম 64 বিটের বিষয়টি বিবেচনা করে? আমি প্রকাশের আগে নিশ্চিত হতে চাই



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

উত্তর:


29

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


কিছু যে একটি স্ট্যাটিক্যালি লিঙ্ক হ্যালো দুনিয়া চেয়ে বেশি জটিল জন্য, উত্তর সম্ভবত কোন
বন্টন এক্স তে এটি পরীক্ষা ছাড়া, অনুমান উত্তর হল এক্স জন্য কোন

আপনি যদি নিজের সফ্টওয়্যারটিকে বাইনারি আকারে চালনা করতে চান তবে নিজেকে সীমাবদ্ধ করুন

  • আপনার সফ্টওয়্যার ব্যবহারের ক্ষেত্রে কয়েকটি জনপ্রিয় বিতরণ (ডেস্কটপ, সার্ভার, এমবেডেড, ...)

  • প্রত্যেকের সর্বশেষ এক বা দুটি সংস্করণ

অন্যথায় আপনি সমস্ত আকার, সংস্করণ এবং বয়সের বিতরণের হান্ডাব্রেড সহ শেষ (দশ বছরের পুরানো বিতরণ এখনও ব্যবহৃত এবং সমর্থিত)।

তাদের জন্য পরীক্ষা। অন্যথায় কী কী (এবং হবে) ভুল হতে পারে তার কেবল কয়েকটি পয়েন্টার:

  • আপনার প্রয়োজন এমন একটি সরঞ্জাম / লাইব্রেরির প্যাকেজটির বিতরণ এবং এমনকি একই বিতরণের সংস্করণগুলিতে আলাদাভাবে নামকরণ করা হয়েছে

  • আপনার প্রয়োজনীয় লাইব্রেরিগুলি খুব নতুন বা খুব পুরানো (ভুল সংস্করণ)। আপনার প্রোগ্রামটি লিঙ্ক করতে পারে বলে ধরে নিবেন না, এটি সঠিক লাইব্রেরির সাথে লিঙ্ক করেছে।

  • একই লাইব্রেরি (ডিস্কে ফাইল) বিভিন্ন বিতরণে আলাদাভাবে নামকরণ করা হয়েছে, যা সংযোগকে অসম্ভব করে তোলে

  • Bit৪ বিট-এ bit২ বিট: 32 বিট পরিবেশটি ইনস্টল না করা হতে পারে বা 32on64 পরিবেশের বাইরে কিছু অপ্রয়োজনীয় 32 বিট লাইব্রেরি অতিরিক্ত প্যাকেজে স্থানান্তরিত হতে পারে, সুতরাং কেবলমাত্র এই ক্ষেত্রে আপনার অতিরিক্ত নির্ভরতা থাকতে পারে।

  • শেল: আপনার বাশের সংস্করণটি ধরে নিবেন না। এমনকি বাশকেও ধরে নিবেন না।

  • সরঞ্জামগুলি: অনুমান করবেন না যে কোনও অ POSIX কমান্ড লাইন সরঞ্জাম কোথাও রয়েছে।

  • সরঞ্জামগুলি: ধরে নেবেন না যে সরঞ্জামটি আপনার বিকল্পটির জিএনইউ সংস্করণটি কেবল তাই একটি বিকল্পকে স্বীকৃতি দেয়।

  • কার্নেল ইন্টারফেস: /procকেবলমাত্র আপনার মেশিনে কাঠামো থাকার কারণে / ফাইলগুলির অস্তিত্ব বা কাঠামো ধরে নেবেন না

  • জাভা: আপনি কি সত্যিই নিশ্চিত যে আপনার প্রোগ্রামটি পরীক্ষা না করেই এসইএলএসের সাথে চালিত হয়ে আইবিএম এর জেআরইতে চলছে?

বোনাস:

  • নির্দেশিকা সেট: আপনার মেশিনে সংকলিত বাইনারি পুরানো হার্ডওয়্যারে চলবে না।

হয় স্ট্যাটিক্যালি লিঙ্ক (অথবা সব লাইব্রেরি আপনি আপনার সফ্টওয়্যার সঙ্গে প্রয়োজন bundling) একটি সমাধান? এমনকি এটি প্রযুক্তিগতভাবে কাজ করেও, সম্পর্কিত খরচগুলি বেশি হতে পারে। দুর্ভাগ্যক্রমে, উত্তর সম্ভবত হয় না।

  • সুরক্ষা: আপনি নিজের সফ্টওয়্যার ব্যবহারকারীর কাছ থেকে লাইব্রেরি আপডেট করার দায়িত্বটি নিজের দিকে সরিয়ে নিন।

  • আকার এবং জটিলতা: কেবল মজাদার জন্য স্ট্যাটিকালি লিঙ্কযুক্ত জিইউআই প্রোগ্রাম তৈরি করার চেষ্টা করুন।

  • আন্তঃক্রিয়াশীলতা: যদি আপনার সফ্টওয়্যারটি কোনও ধরণের "প্লাগইন" হয় তবে আপনি যে সফ্টওয়্যারটি ডেকেছেন তার উপর নির্ভর করে।

  • লাইব্রেরি ডিজাইন: আপনি যদি আপনার প্রোগ্রামটিকে স্থিতিশীলভাবে জিএনইউ লিবিসি-র সাথে যুক্ত করেন এবং নাম পরিষেবাগুলি ( getpwnam()ইত্যাদি) ব্যবহার করেন তবে আপনি লিবিসির এনএসএসের (নাম পরিষেবা স্যুইচ) বিপরীতে গতিশীলভাবে লিঙ্ক আপ করবেন।

  • লাইব্রেরি ডিজাইন: আপনি যে লাইব্রেরিটি আপনার প্রোগ্রামটিকে স্ট্যাটিকভাবে সংযুক্ত করেন সেটি ব্যবহার করে ডেটা ফাইল বা অন্যান্য সংস্থার (যেমন টাইমজোন বা স্থানীয়)।


উপরে উল্লিখিত সমস্ত কারণে টেস্টিং অপরিহার্য।

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

  • এই বিতরণগুলির সর্বনিম্ন ইনস্টলেশন ব্যবহার করুন।

  • একটি সীমাবদ্ধ নির্দেশ সেট সহ একটি ভিএম তৈরি করুন (উদাঃ কোনও এসএসই 4 নেই)।

  • কেবলমাত্র স্ট্যাটিকালি লিঙ্কযুক্ত বা বান্ডিল হয়েছে: আপনার বাইনারিগুলি lddসত্যই সংযুক্ত হয়েছে কিনা / তা কেবল আপনার বান্ডিল গ্রন্থাগারগুলি ব্যবহার করে কিনা তা পরীক্ষা করে দেখুন।

  • স্থিতিযুক্তভাবে সংযুক্ত বা কেবল বান্ডিল হয়েছে: একটি খালি ডিরেক্টরি তৈরি করুন এবং এতে আপনার সফ্টওয়্যারটি অনুলিপি করুন। chrootডিরেক্টরিতে এবং আপনার সফ্টওয়্যার চালান।


এটি একটি চমত্কার উত্তর +1
sirlark

2
শেল: বিশেষত, ডিবিয়ান ব্যাশ ব্যবহার করে না , এবং যেহেতু এটি দেবিয়ান সিস্টেমে শেলশক দুর্বলতাটিকে ব্যাপকভাবে হ্রাস করেছে, তাই আমি তা ভবিষ্যতে পরিবর্তিত হওয়ার কথা ভাবতে পারি না।
কেভিন

1
এছাড়াও, আপনি যদি বাইনারিগুলি শিপ করতে চান তবে এগুলি স্থিরভাবে সংযুক্ত করুন
ব্যবহারকারী 253751

"নির্দেশ সেট" কে "বোনাস" বলা হয় কেন? আপনি যদি বাইনারি আকারে বিতরণ করেন তবে আপনাকে আসলে কোন আইএসএর জন্য সংকলন করতে হবে তা বিবেচনা করার দরকার নেই। আপনি m68k ব্যবহারকারীর যত্ন নিতে পারেন না, তবে কমপক্ষে এআরএম, আইএ 32 এবং এক্স 86_64 উপেক্ষা করা শক্ত।
টবির স্পিটি

এসএসই 4 এবং এ জাতীয় সম্পর্কে @ টবিস্পাইট থিঙ্ক। আপনি যদি এসেম্বেলার ব্যবহার করেন তবেই আপনাকে কামড় দিতে পারে।
টমাস এরকার

9

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

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


2

প্রথমে ক্রেপি উত্তর: এটি নির্ভর করে

আপনি বাইনেরিতে মুক্তি হয়, উত্তর হতে অনুমান "না" যদি না আপনি বিতরণ করছে সব লিব এটি কি কখনো একেবারে শুরু, যা বিরক্তিকর যদি না আপনি সত্যিই একটি বিশাল সিস্টেম নিজস্ব যাহাই হউক না কেন উপর দাঁড়িয়েছে প্রদান থেকে এর সাথে জড়িত থাকে ( ) বা স্থিতিশীলভাবে সমতুল্য লিঙ্ক করা হয়।

... তবে উইজার্ড এবং অর্থ এবং অর্থ উইজার্ড ...

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

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

কিন্তু ...

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

যথেষ্ট শিশুতোষ, নিজেকে বাহু!

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

[সংযোজন: 1. এমনকি হাস্কেল সাধারণত ক্যাবলের মাধ্যমে এটিকে টানতে পারে - যদিও আমি উত্পাদন পরিবেশে এটি করার বিষয়ে সতর্ক থাকব। ২.এরলংয়ের সাথে সম্পূর্ণ আলাদা "প্রকাশিত" স্থাপনার কৌশল রয়েছে যা আপনার কোডটিকে পুরোপুরি পরিপূর্ণ পরিবেশের গ্যারান্টি দেয়। ৩. পাইথন ভার্চুয়াল পরিবেশের সাথে আরও এক ধাপ এগিয়ে যায়; সমস্ত রানটাইম আপনাকে এতটা সহায়তা করে না]]

লিনাক্স পরিচালিত পরিবেশের সম্পর্কে এই শেষ বিট সন্ত্রস্ত freaking হয় । এবং, একটি বোনাস হিসাবে, এটি আপনাকে আরও সাধারণ নির্ভরতা সংজ্ঞায়িত করতে, আপনার পক্ষ থেকে কোনও অতিরিক্ত প্রচেষ্টা ছাড়াই স্বয়ংক্রিয়ভাবে সমাধান করে, ডিস্ট্রো প্রতি প্যাকেজ লেখার প্রয়োজন নেই, এবং সিস্টেম 32 বা 64 হয় কিনা আপনি যত্ন নেওয়া বন্ধ করতে পারেন বিট (সাধারণত, যাইহোক)।

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