কীভাবে সি / সি ++ প্রকল্পের নির্ভরতা সঠিকভাবে পরিচালনা করবেন?


11

আমার একটি প্রকল্প রয়েছে যা 3-4 টি ওপেন সোর্স সি / সি ++ লাইব্রেরি ব্যবহার করে।

আমি বেশ কয়েকটি প্ল্যাটফর্মের জন্য এই লাইব্রেরিগুলি তৈরি করেছি এবং আমার প্রকল্পের বিভিন্ন প্ল্যাটফর্মের জন্য ফাইল এবং স্ট্যাটিক ল্যাবগুলি অন্তর্ভুক্ত করে চেক ইন করেছি।

তবে আমি বেশ কয়েকটি সমস্যা নিয়ে লড়াই করছি struggle এই প্রকল্পগুলির সমস্ত নির্ভরতা পরিচালনার কাছাকাছি। এবং আমি সেরা অনুশীলনের পরামর্শ খুঁজছি।

1) আমি কীভাবে জানি যে আমি ঠিক কী ব্যবহার করব?

আমার কাছে স্ট্যাটিক লিবের সংস্করণ পাওয়ার উপায় নেই। ফলস্বরূপ, কোনওভাবে আমি স্ট্যাটিক লিবের কোন সংস্করণটি ব্যবহার করছি তা ট্র্যাক করতে হবে (এটি যে কোনও প্রতিশ্রুতি থেকে তৈরি হয়েছিল সেটির এসএইচএ হতে পারে)?

এটি বিশেষত গুরুত্বপূর্ণ যখন আমার এই লিবগুলি আপগ্রেড করতে হবে figure

2) আমি কীভাবে বিল্ডটি পুনরুত্পাদন করব?

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

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

3) আমার কি এই লাইব্রেরিগুলিতে সোর্স কোডের একটি অনুলিপি থাকা উচিত?

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

উত্তর:


5

আপনার কি সত্যই নির্ভর নির্ভর লাইব্রেরির সঠিক সংস্করণ ব্যবহার করা উচিত? এটি কি খারাপভাবে লেখা / এটি সংস্করণে প্রতিটি ছোটখাট বৃদ্ধি সহ এটির এপিআই ভেঙে দেয়?

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

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


2
আমি মনে করি না যে আমার সঠিক সংস্করণটি ব্যবহার করা উচিত। তবে, আমি কোনটি ব্যবহার করছি তা আমার জানতে হবে। উদাহরণস্বরূপ, যদি কেউ জানতে পারে যে ওপেনএসএসএল 1.1.0b এর বিশাল দুর্বলতা রয়েছে তবে আমি আরও জানতে পারি যে আমি ওপেনএসএসএল 1.1.0 বি বা 1.1.0c ব্যবহার করি কিনা
ভিক্টর রনিন

বিল্ড প্রজননযোগ্যতা সম্পর্কে, এটি সম্ভবত আমার দ্বিতীয় উদ্বেগ।
ভিক্টর রনিন

3

আমি কীভাবে জানতে পারি যে আমি ঠিক কী ব্যবহার করব?

যদি অন্তর্ভুক্ত ফাইলগুলি বা লিব্স ফাইলগুলিতে ইতিমধ্যে কোনও সংস্করণ নম্বর না থাকে তবে প্রতিটি লিব ফোল্ডারে নিজের দ্বারা একটি পাঠ্য ফাইল "version.txt" (সংস্করণ নম্বর সম্বলিত) যুক্ত করুন এবং লিবের সাথে এটি আপনার ভিসিএসে পরীক্ষা করুন এবং ফাইলগুলি অন্তর্ভুক্ত করুন । তবে, আপনি যদি লাইবটির পুরো উত্সটি সংস্করণ করেন (পয়েন্ট 3), ইতিমধ্যে সংস্করণ নম্বর সম্বলিত একটি উত্স কোড ফাইল রয়েছে, সুতরাং এই ক্ষেত্রে আপনার নিজের বজায় রাখার দরকার নেই।

আমি কীভাবে বিল্ডটি পুনরুত্পাদন করব?

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

আমার কি এই লাইব্রেরিগুলিতে সোর্স কোডের একটি অনুলিপি কাঁটাতে হবে?

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

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


সুতরাং, উত্তরটি হ'ল "ম্যানুয়ালি এটি করুন" :) আমি আশা করছিলাম যে কেউ বলবে ... ওহ ... তার জন্য একটি সরঞ্জাম রয়েছে :) আপনি যখন "উত্স কোডের অনুলিপি" বলছেন তখন আপনি কেবল একটি পান উত্সের সাথে তার ফাইল এবং উত্স নিয়ন্ত্রণে এটি ফেলে?
ভিক্টর রনিন

1
@ ভিক্টররনিন: না, উত্তরটি "আপনার ভিসিএস আপনার জন্য এটি করতে পারে তার সবগুলি পরিচালনা করতে দিন" এবং "স্ট্যান্ডার্ড বিল্ড সরঞ্জামগুলি ব্যবহার করে যতটা পারেন স্বয়ংক্রিয়ভাবে চালিত করুন"। আপনিই সেই নির্দিষ্ট সংস্করণটি বেছে নিয়েছেন এবং আপনিই সেই ব্যক্তি যা আপনার পরিবেশের জন্য বিল্ড স্টেপগুলি, লিঙ্কটি এবং রেফারেন্স অন্তর্ভুক্ত করতে হবে। এই despendencies উদ্দীপক জন্য আদর্শ পদ্ধতি স্ক্রিপ্ট, Makefile, প্রকল্প ফাইল ইত্যাদি মাধ্যমে হয়
ডক ব্রাউন

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