প্যাকেজ পরিচালকদের লক ফাইলগুলির প্রয়োজন কেন?


10

dpkgলক ফাইল ( /var/lib/dpkg/lock) ব্যবহার করে, যখন ব্যবহৃত হয়।

  • এই লকফাইলগুলির প্রয়োজন কেন?
  • একাধিক উদাহরণ কেন সম্ভব হচ্ছে না?

Dpkg ইনস্টলেশন করে। দ্বন্দ্ব এড়ানোর জন্য এটি একটি সুরক্ষা মোড। একই সময়ে একটি ইনস্টলেশন
আলবফান

উত্তর:


15

এটি কোনও নির্দিষ্ট dpkgসমস্যা নয় (যেমনটি আমার সম্পাদনার শিরোনাম প্রস্তাবিত)। বরং এটি প্রতিটি প্যাকেজ পরিচালক (যা সম্পর্কে আমি সচেতন) কিছু করেন; এবং সঙ্গত কারণে যদিও, আমি বুঝতে পারি কেন এটি বিভ্রান্তিকর হতে পারে।

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

ফলস্বরূপ, অনেক (সমস্ত?) প্যাকেজ পরিচালকরা লকফাইলে নির্ভর করে যে ডেটাবেসটি লেখা হচ্ছে তা সিগন্যাল করার জন্য, অন্য ক্লায়েন্টকে এটি করার অনুমতি দেওয়া উচিত নয়।


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


2
আমি মনে করি পোর্টেজ এবং প্যালুডিস (জেন্টোর প্যাকেজ ম্যানেজার) সমান্তরালভাবে কাজ করতে সক্ষম হবে, যদি এটি লক ব্যবহার করে তবে এটি ইনস্টলড তালিকায় প্যাকেজ যুক্ত করার সময় কেবল সংক্ষেপে কাজ করে।
মান 13

আমি জেন্টুর প্যাকেজ পরিচালকদের এক ঝলক নেব এবং খুব শীঘ্রই আমার উত্তর আপডেট করব।
হ্যালোগোস্ট

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

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

9

লক ফাইলটি একাধিক উদাহরণের সমান্তরাল সম্পাদন রোধ করতে ব্যবহৃত হয় ।

প্যাকেজ পরিচালকদের পক্ষে কেন এটি গুরুত্বপূর্ণ?

একটি প্যাকেজ ম্যানেজার - উচ্চ স্তরের ভিউ থেকে - এমন একটি প্রোগ্রাম যা হার্ড ডিস্কে জটিল পরিবর্তনগুলি প্রয়োগ করে

পরিবর্তনগুলি এক ধাপে করা যায় না ("পারমাণবিক"), তাই একাধিক পদক্ষেপ রয়েছে; অনেকগুলি পদক্ষেপ পূর্ববর্তী পদক্ষেপের ফলাফলের উপর নির্ভর করে।

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

প্রদর্শিত হতে পারে এমন আরও অনেক সমস্যা রয়েছে।

এটা অসম্ভব নয় একটি প্যাকেজ ম্যানেজার যা সমান্তরাল কাজ করতে পারেন বাস্তবায়ন, কিন্তু এটা হচ্ছে খুব মূল্য এটা হতে জটিল । হিসাবে হিসাবে, আপনি কতটা জটিল তা ভাবতে পারবেন না। সত্যিই।


2

dkpg(এবং rpmঅন্যান্য অন্যান্য traditionalতিহ্যবাহী প্যাকেজ ম্যানেজার) বিশ্বব্যাপী প্যাকেজ ইনস্টল করে কাজ করে, যার অর্থ প্যাকেজগুলি একে অপরের সাথে বিরোধ করতে পারে (যেমন Aএবং Bএকই সময়ে ইনস্টল করা যায় না, কারণ তারা উভয়ই ইনস্টল করে /usr/lib/libfoo.so)। প্যাকেজ পরিচালকদের অবশ্যই এই জাতীয় দ্বন্দ্বগুলি সনাক্ত করতে হবে এবং সিস্টেমটিকে একটি সুসংগত অবস্থায় রাখার জন্য এ জাতীয় ইনস্টলেশন অনুরোধগুলি প্রত্যাখ্যান করতে হবে। একই সময়ে প্যাকেজ পরিচালকের একাধিক উদাহরণ চলমান থাকা খুব জটিল এবং ত্রুটির প্রবণ হবে।

সংঘাত-মুক্ত প্যাকেজ পরিচালনাকারীরা (যেমন http://0install.net ) একাধিক প্যাকেজ সমান্তরালে ইনস্টল করার অনুমতি দিতে পারে এবং এর জন্য লক ফাইলের প্রয়োজন নেই ( A/libfoo.soএবং B/libfoo.soবিভিন্ন ডিরেক্টরিতে যাবে)।


1 একই সাথে সিস্টেমে উপস্থিত থাকা এবং উপলব্ধ থাকা উভয় অর্থেই সমান্তরাল এবং একই সাথে সিস্টেমে ডাউনলোড এবং যুক্ত হওয়া অর্থে।

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