বুস্ট একটি জটিল উদাহরণ, প্রথমে একটি সহজ সরল তাকান।
সুনির্দিষ্টভাবে, ওপেনসেল উত্স প্যাকেজটি 5 বাইনারি প্যাকেজ সরবরাহ করে:
libssl1.0.0
ওপেনএসএসএল ডায়নামিক লাইব্রেরি, সংস্করণ 1.0.0 রয়েছে। এই লাইব্রেরির সাথে লিঙ্কযুক্ত প্রোগ্রামগুলি চালানো দরকার। প্যাকেজের নামটিতে একটি সংস্করণ নম্বর রয়েছে কারণ আপনার একই সাথে লাইব্রেরির অন্যান্য সংস্করণ ইনস্টল থাকতে পারে, যদি আপনার অন্যান্য সংস্করণের সাথে লিঙ্ক করা অন্যান্য প্রোগ্রাম থাকে যা 1.0.0 এর সাথে বাইনারি-সামঞ্জস্যপূর্ণ নয়।
openssl
কমান্ড লাইন সরঞ্জাম রয়েছে যা ওপেনএসএসএল লাইব্রেরি ব্যবহার করে। আপনার কাছে লাইব্রেরির একাধিক সংস্করণ থাকলেও, আপনার এই সরঞ্জামগুলির একাধিক সংস্করণ প্রয়োজন নেই: কেবলমাত্র একটি /usr/bin/openssl
এবং সম্পর্কিত সরঞ্জাম, ডেটা এবং ডকুমেন্টেশন রয়েছে।
libssl-dev
যদি আপনি এমন কোনও প্রোগ্রাম সংকলন করতে চান যেগুলি ওপেনএসএসএল-এর সাথে লিঙ্ক করে তবে আপনার প্রয়োজনীয় ফাইলগুলি রয়েছে। সি হেডার ফাইলগুলি ( *.h
), লিঙ্ক করার জন্য লাইব্রেরি ( *.a
, *.so
) এবং কয়েকটি সংযুক্ত ফাইল রয়েছে।
libssl-doc
ওপেনএসএসএল লাইব্রেরির জন্য ডকুমেন্টেশন রয়েছে। আপনি কেবলমাত্র এই প্যাকেজটির প্রয়োজন যদি আপনি লাইব্রেরি ব্যবহার করে এমন প্রোগ্রাম লিখতে চলেছেন।
libssl1.0.0-dbg
ডিবাগিং প্রতীক রয়েছে। এটি কেবলমাত্র ওপেনএসএসএল লাইব্রেরি বা এটি ব্যবহার করে এমন প্রোগ্রামগুলিকে ডিবাগ করার জন্যই দরকারী। অ্যান্ড্রুসোমথিংয়ের উত্তরে এই -dbg
প্যাকেজগুলিতে আরও তথ্য রয়েছে ।
এছাড়াও, সুনির্দিষ্টভাবে গ্রন্থাগারের একটি পুরানো সংস্করণ রয়েছে libssl0.9.8
, কারণ এমন প্রোগ্রাম রয়েছে যা এখনও পুরানো সংস্করণের সাথে যুক্ত রয়েছে।
আপনি দেখতে পাচ্ছেন যে অন্যান্য প্যাকেজগুলি হ'ল সি ব্যতীত অন্য ভাষার জন্য বাইন্ডিংগুলি রয়েছে ওপেনএসএসএল কোনওর সাথে শিপ করে না (অন্যান্য ভাষার জন্য ওপেনএসএসএল-এর বাইন্ডিং রয়েছে, তবে সেগুলি একই উত্স থেকে আসে না)। একটি উদাহরণ স্ক্লাইট 3 , যা টিসিএল বাইন্ডিং সহ জাহাজগুলি ।
এটির মতো প্যাকেজগুলি বিভক্ত করার মূল কারণ হ'ল বিভিন্ন প্যাকেজের আলাদা লক্ষ্যবস্তু শ্রোতা রয়েছে। এমন একটি সিস্টেম যেখানে কেউ কখনও কোনও কিছু সংকলন করে না কেবল কেবল মূল lib
প্যাকেজটির প্রয়োজন হয় এবং সম্ভবত কমান্ড লাইন সরঞ্জামগুলি; প্রয়োজনে এগুলি নির্ভরতা থেকে স্বয়ংক্রিয়ভাবে ইনস্টল হয়ে যাবে। যদি কেউ লাইব্রেরি ব্যবহার করে এমন একটি প্রোগ্রাম সংকলন করতে চায় তবে তাদের -dev
প্যাকেজটি দরকার । যদি কেউ লাইব্রেরি ব্যবহার করে এমন কোনও প্রোগ্রাম লিখতে চান তবে তাদের -doc
প্যাকেজটি দরকার ।
তাহলে বুস্টের কী হবে? এটি একই কাঠামোটি অনুসরণ করে, তবে বুস্ট একটি বিশাল গ্রন্থাগার হওয়ায় এটি অনেকগুলি ছোট প্যাকেজগুলিতে বিভক্ত হয়েছে: libboost-*1.46.1
এবং libboost-*1.46-dev
। সুনির্দিষ্টভাবে, বুস্টের কেবলমাত্র একটি সংস্করণ রয়েছে, 1.46 , তবে একেরিকের 1.42 এবং 1.46 উভয়ই রয়েছে । একটি মেটাপ্যাকেজ বুস্ট-ডিফল্টও রয়েছে যা নির্ভরযোগ্যতা হিসাবে সংস্করণযুক্ত প্যাকেজে টান দেয়।
গতিশীল লাইব্রেরি প্যাকেজ এবং বিকাশ প্যাকেজ ছাড়াও লাইভাঙ্গুলের দিকে তাকিয়ে একটি প্যাকেজ রয়েছে । এই প্যাকেজটিতে লাইব্রেরির জন্য প্রয়োজনীয় অতিরিক্ত ডেটা রয়েছে। আপনার কাছে লাইব্রেরির একাধিক সংস্করণ থাকলেও তারা প্যাকেজটি ভাগ করতে পারে । এছাড়াও, প্যাকেজটি আর্কিটেকচার-স্বতন্ত্র। যে সফ্টওয়্যারটিতে প্রচুর পরিমাণে আর্কিটেকচার-স্বতন্ত্র ডেটা রয়েছে তা বিতরণ সাইটগুলিতে স্থান বাঁচাতে আর্কিটেকচার-নির্ভর এবং আর্কিটেকচার-স্বতন্ত্র প্যাকেজগুলিতে বিভক্ত হয়। অনুরূপ অর্থ সহ আরও একটি প্রত্যয় ।libhangul1
libhangul-dev
libhangul-data
-data
-common
উবুন্টু এবং ডেবিয়ান প্যাকেজিংয়ের নিয়মগুলি একইরকম, সুতরাং দেবিয়ান প্যাকেজ তৈরির উপাদানগুলিও উবুন্টুর ক্ষেত্রে প্রযোজ্য। আসলে, আপনি ডিবিয়ান এবং উবুন্টুর জন্য একই উত্স প্যাকেজ রাখতে পারেন; একমাত্র জিনিস যা দেবিয়ান এবং উবুন্টু প্যাকেজগুলিকে আলাদা করে তোলে তা তাদের বিভিন্ন লাইব্রেরির সংস্করণের বিপরীতে সংকলন করে, এবং এটি উবুন্টুর বিভিন্ন প্রকাশের মধ্যে পার্থক্য ছাড়া আর কিছু নয়। আছে ডেবিয়ান ডেভেলপার ডকুমেন্টেশন হাতে, বিশেষ করে ডেবিয়ান নীতি ম্যানুয়াল এবং উন্নয়নকারীর রেফারেন্স ; দেখতে নিউ রক্ষণাবেক্ষণকারী নির্দেশিকা একটি ভূমিকা জন্য। দেবিয়ান প্রকল্পের সাথে কাজ করার অংশগুলি উপেক্ষা করুন এবং আরও, কেবল প্যাকেজ তৈরির অংশগুলি পড়ুন।dh_make
একটি ডেব প্যাকেজ দিয়ে শুরু করার একটি ভাল উপায় (আপনি "লাইব্রেরি" নির্বাচন করতে চান)।