উত্তর:
এই ডিরেক্টরিটি কী তৈরি করে তা আমি অবশ্যই বলতে পারি না, তবে সম্ভবত এটি তৃতীয় পক্ষের লিনাক্স কার্নেল ড্রাইভার যেমন এনভিআইডিআইএ বা ভার্চুয়ালবক্সকে ডি কেএমএস ব্যবহার করে ইনস্টল করার পার্শ্ব প্রতিক্রিয়া হিসাবে তৈরি করা হয়েছে বা অন্য কোনও অসমর্থিত ইনস্টলার স্ক্রিপ্ট দ্বারা সরবরাহ করা হয়নি সম্ভবত created উবুন্টু। এই ডিরেক্টরিটি সম্ভবত কোনও ইনস্টল প্রক্রিয়াটির পার্শ্ব প্রতিক্রিয়া হিসাবে তৈরি হয়েছিল যা উভয় আরপিএম-ভিত্তিক এবং দেব-ভিত্তিক বিতরণকে সমর্থন করে। DKMS এটিকে একটি ইনস্টল স্ক্রিপ্ট বলে মনে হয় এবং সঠিকভাবে সঠিক পরিস্থিতিতে এই ডিরেক্টরিটি তৈরি করতে পারে। ডিরেক্টরিটি আপনার সিস্টেমে ক্ষতি না করে নিরাপদে মোছা যাবে, তবে আপডেটগুলি পরে ইনস্টল করার পরে এটি আবার তৈরি করা যেতে পারে। এই সমস্যাটি ট্র্যাক করে ওপেন বাগ রিপোর্টের জন্য বাগ # 1069350 দেখুন ।
এটি সংক্ষিপ্ত উত্তর, এখন আরও কিছু বিশদ।
আপনারা জানেন যে, আরপিএম হ'ল একটি সফ্টওয়্যার প্যাকেজিং ফর্ম্যাট এবং প্যাকেজ ইনস্টল করার জন্য এবং ইনস্টলড প্যাকেজগুলির ডেটাবেস এবং তাদের আন্তঃনির্ভরতা রক্ষার জন্য সরঞ্জামগুলির সেট। এটি অনেকগুলি বিতরণ ব্যবহার করে তবে উবুন্টু এবং অন্যান্য debণ-ভিত্তিক বিতরণগুলি ব্যবহার করে না। দুর্ভাগ্যক্রমে উবুন্টুর পক্ষে, rpm
কমান্ডের যে কোনও ব্যবহারের জন্য একটি বৈধ "rpmdb" ডাটাবেস প্রয়োজন বা তৈরি করা প্রয়োজন।
আরপিএম-ভিত্তিক বিতরণগুলিতে এটি কোনও সমস্যা নয় কারণ তাদের সংজ্ঞা অনুসারে একটি সিস্টেম-প্রশস্ত আরপিএমডিবি রয়েছে। উবুন্টু সিস্টেমে, যেহেতু সিস্টেম-প্রশস্ত আরপিএম ডাটাবেসের প্রয়োজন নেই rpm
, বিশেষভাবে প্রতিটি ব্যবহারকারীর হোম ডিরেক্টরিতে একটি ডাটাবেস ব্যবহার করার জন্য কনফিগার করা হয়েছে $HOME/.rpmdb
। এই ডাটাবেসটি যখনই rpm
চলবে তখন নিঃশব্দে তৈরি করা হয়েছে । যেহেতু এটি প্রতিটি ব্যবহারকারীর হোম ডিরেক্টরিতে রয়েছে তাই ভাগ করে নেওয়া অনুমতি বা কোনও প্রশাসক দ্বারা ডেটাবেস তৈরি করার প্রয়োজনে কোনও সমস্যা নেই। প্রতিটি ব্যবহারকারী কেবল তাদের নিজস্ব খালি আরপিএম ডাটাবেস পায়।
দেখা যাচ্ছে যে কিছু প্রকল্পগুলি স্ক্রিপ্টগুলি ইনস্টল করতে পছন্দ করে যা কোনও বিতরণে কাজ করবে, সেগুলি বিতরণটি আরপিএম-ভিত্তিক, ডেব-ভিত্তিক, না হয়। ডি কে এম এস একটি প্রকল্প, এটি তৃতীয় পক্ষের ড্রাইভারদের যে কোনও সিস্টেম চলমান লিনাক্স কার্নেলের জন্য তৈরি করার অনুমতি দেয় এবং এটি বিতরণ জুড়ে কাজ করার জন্য লেখা হয়। এটি কোন বিতরণ চলছে এবং কোন কার্নেল সংস্করণ উপস্থিত রয়েছে তা নির্ধারণ করার জন্য এর যুক্তির অংশে rpm
এটি ডাটাবেসকে জিজ্ঞাসা করার জন্য একটি আদেশ কার্যকর করে। আমি আগে যেমন ব্যাখ্যা করেছি, .rpmdb
বর্তমান ব্যবহারকারীর হোম ডিরেক্টরিতে যদি ইতিমধ্যে কোনও উপস্থিত না থাকে তবে এটি নিঃশব্দে একটি ডিরেক্টরি তৈরি করবে । ডাটাবেস ক্যোয়ারী ব্যর্থ হওয়া উচিত, যেহেতু উবুন্টু কোনও আরপিএম-ভিত্তিক বিতরণ নয় এবং DKMS অবিরত রয়েছে।
আপনি যদি উবুন্টু যেমন ভার্চুয়ালবক্স, এনভিআইডিআইএ, এনডিস্রাপার, বা ওপেনসওয়ান থেকে অতিরিক্ত কোনও লিনাক্স কার্নেল ড্রাইভার প্যাকেজ ইনস্টল করেন তবে আপনি সম্ভবত আপনার কার্নেলের জন্য এই ড্রাইভারগুলি ইনস্টল করতে ডি কেএমএস ব্যবহার করছেন। উবুন্টু সংগ্রহস্থলগুলি থেকে ড্রাইভার ইনস্টল হওয়ার পরে এটি স্বয়ংক্রিয়ভাবে সম্পন্ন হয়। সুতরাং যে কোনও সময় কার্নেল বা ড্রাইভার আপডেট ইনস্টল হওয়ার পরে, ডিਕੇএমএস সমস্ত উপলব্ধ কার্নেল সংস্করণের জন্য ড্রাইভারটি পুনর্নির্মাণের জন্য আবার চালিত হয়। এটি প্রদর্শিত হয়েছে যে যখন এই প্যাকেজগুলি আপডেট হয়, /root/.rpmdb
ডিরেক্টরিটি প্রকৃতপক্ষে উপস্থিত হয় যা রুটের হোম ডিরেক্টরিতে থাকে যেহেতু রুটকে আপডেট ইনস্টল করার প্রয়োজন হয়।
আমি অন্য কোনও নির্দিষ্ট তৃতীয় পক্ষের ইনস্টলেশন স্ক্রিপ্টগুলি জানি না rpm
যা বিতরণের ধরন সনাক্ত করার উপায় হিসাবে কমান্ডগুলি কার্যকর করতে পারে তবে এটি অবশ্যই সম্ভব possible উদাহরণস্বরূপ, আপনি ইনিটেক থেকে লার্জপুসিটারি প্রোগ্রাম ইনস্টল করতে চাইতে পারেন এবং এটির জন্য আপনি কোনও install.sh
স্ক্রিপ্টটি রুট হিসাবে চালাচ্ছেন । আপনি কোনও আরপিএম-ভিত্তিক বিতরণ চালিয়ে যাচ্ছেন এবং /root/.rpmdb
আবার তৈরি হয়েছে কিনা তা দেখতে এই স্ক্রিপ্টটি কোনও আরপিএম ডাটাবেসকে জিজ্ঞাসা করার চেষ্টা করতে পারে ।
সুতরাং এটি ব্যাখ্যা করে যে আপনি কেন /home/user/.rpmdb
এবং আপনার /root/.rpmdb
ডিরেক্টরিতে ডিরেক্টরিগুলি প্রদর্শন করতে পারেন । তবে কেন সিস্টেম রুট ডিরেক্টরিতে?
এর সহজতম ব্যাখ্যাটি হ'ল $HOME
পরিবেশের চলকটি কিছু প্রক্রিয়া প্রসঙ্গে চালিত হয় যা কোনওভাবে সেট করে না rpm
। আসুন আর্গুমেন্টের জন্য DKMS ব্যবহার করি কারণ আমরা নিশ্চিতভাবে জানি এটি rpm
কমান্ডগুলি চালাতে পারে। যেহেতু প্যাকেজগুলি ইনস্টল বা আপডেট হওয়ার পরে এটি সাধারণত চলতে থাকে, আপনি যে প্যাকেজ ম্যানেজার ব্যবহার করবেন তা পরিবেশে এটি চালিত হয়। আপনি যদি sudo apt-get
প্যাকেজ ইনস্টল করতে ব্যবহার করেন তবে এটি সঠিকভাবে উত্তরাধিকারী হবে $HOME
। আপনি যদি প্যাকেজকিট ব্যবহার করেন তবে এর কোনও $HOME
পরিবর্তনশীল নাও থাকতে পারে । সিনিপটিক বা উবুন্টু সফটওয়্যার সেন্টার কোন পরিবেশ সরবরাহ করেছে তা আমি নিশ্চিত নই।
সুতরাং যদি ডি কেএমএস এমন পরিবেশে চলমান থাকে যার $HOME
ভেরিয়েবল থাকে না , এবং যেভাবে আরপিএম ডাটাবেস সংজ্ঞায়িত করা হয়, তার /.rpmdb
পরিবর্তে একটি খালি আরপিএম ডাটাবেস তৈরি করা হবে /root/.rpmdb
। এটি rpm
14.10 বিকাশের সংস্করণে উবুন্টুর জন্য প্যাকেজে স্থির করা হয়েছে , সুতরাং এটি এখন সংজ্ঞাযুক্ত না /root/.rpmdb
হলেও তৈরি করা উচিত $HOME
।
আমি আশা করি এটি ব্যাখ্যা করে যে কেন .rpmdb
উবুন্টু সিস্টেমে ডাইরেক্টরিগুলি বলা হয়, কেন তারা আপাতদৃষ্টিতে স্বয়ংক্রিয়ভাবে তৈরি হতে পারে এবং কেন সঠিক ডিরেক্টরিতে একটি ডিরেক্টরি ডিরেক্টরিতে তৈরি করা যেতে পারে। এটি উদ্বিগ্ন হওয়ার কিছু নেই, এই ডিরেক্টরিটির অস্তিত্বের মধ্যে দূষিত কিছু নেই এবং এটির উপস্থিতি যদি নান্দনিকতা বা সুরক্ষা স্ক্যানারদের পক্ষে আপত্তিজনক হয় তবে তা কেবল মুছে ফেলা যায়।
আরপিএম (রেড হ্যাট প্যাকেজ ম্যানেজার) একটি প্যাকেজ পরিচালনা সিস্টেম। এটি আরপিএম মূলত ১৯৯ 1997 সালে রেড হ্যাট লিনাক্সে ব্যবহারের জন্য এরিক ট্রোয়ান এবং মার্ক ইউইং দ্বারা রচিত হয়েছিল , তবে এখন অনেক জিএনইউ / লিনাক্স বিতরণে ব্যবহৃত হয়।
প্যাকেজ পরিচালকের পর্দার পিছনে কাজ করা হ'ল RPM ডাটাবেস ( RPMDB ), এতে সঞ্চিত /var/lib/rpm
। এটিতে একটি একক ডাটাবেস (প্যাকেজ) থাকে যা ইনস্টল করা আরপিএমের সমস্ত মেটা তথ্য ধারণ করে । ডাটাবেসটি ব্যবহারকারীর (RPM ব্যবহার করে) একটি প্যাকেজ ইনস্টল করার সময় পরিবর্তিত ও তৈরি সমস্ত ফাইলের উপর নজর রাখতে ব্যবহৃত হয় , ফলে ব্যবহারকারীকে (RPM- এর মাধ্যমে) পরিবর্তনগুলি বিপরীত করতে সক্ষম করে প্যাকেজটি পরে মুছে ফেলা হয়।
alien
/.rpmdb
উবুন্টু সিস্টেমে কেন প্রদর্শিত হবে (যা আরপিএম ব্যবহার করে না) ব্যাখ্যা করার সাথে এটি কীভাবে প্রাসঙ্গিক ?