"অটোমোমো" ব্যবহার করে অব্যবহৃত নির্ভরতা অপসারণ


25

আমি ভেবেছিলাম যে apt-get autoremoveকোনও নিম্নলিখিত যুক্তি ছাড়াই দৌড়ানো সিস্টেমে থাকা সমস্ত অব্যবহৃত নির্ভরতা অপসারণ করে, যখন চলমান apt-get autoremove xxxএক্সএক্সএক্স এবং এর অব্যবহৃত নির্ভরতাগুলি সরিয়ে দেয়।

তবে আমি অন্যথায় আবিষ্কার করেছি। দৌড়াদৌড়ি apt-get autoremove xxxশুধুমাত্র এক্সএক্সএক্সএক্স এবং এর অব্যবহৃত নির্ভরতা অপসারণ করে না, এটি অন্য সমস্ত অব্যবহৃত নির্ভরতাও সরিয়ে দেয়।

আমি তখন দৌড়ানোর চেষ্টা করে apt-get remove --auto-remove xxxভেবেছিলাম যে এটি কেবল xXX এবং এর অব্যবহৃত নির্ভরতাগুলি সরিয়ে ফেলবে। আমার অবাক করে দিয়েছিল, এটি এক্সএক্সএক্স, এর অব্যবহৃত নির্ভরতা এবং অন্যান্য সমস্ত অব্যবহৃত নির্ভরতাও সরিয়ে দিয়েছে।

এটি আমাকে দুটি সম্পর্কিত প্রশ্নের দিকে নিয়ে যায়।

(1) আদেশের কি এটিই উদ্দেশ্যমূলক আচরণ?

(২) অন্যান্য অব্যবহৃত নির্ভরতা অপসারণ না করে কি এক্সএক্সএক্সএক্স এবং এর অব্যবহৃত নির্ভরতা অপসারণের কোন সহজ উপায় আছে?

(এটি প্রদর্শিত হয় যা aptitude removeএকইভাবে আচরণ করে))

উত্তর:


21

cmdline/apt-get.ccসোর্স টার্বল থেকে http://packages.ubuntu.com/source/maverick/apt এ ফাইলটি অনুসন্ধান করাতে , আমি দেখতে পাচ্ছি যে --auto-removeএটি একটি যুক্তি যা APT::Get::AutomaticRemoveসেটিংটি সক্ষম করে ।

কমান্ড autoremoveএবং removeউভয় ফাংশন কল DoInstall

"অটোরেমোভ" কমান্ডটিও সেট APT::Get::AutomaticRemoveকরে এবং এটি একই হিসাবে কাজ করে --auto-remove

তাকিয়ে DoAutomaticRemoveফাংশন, এটা স্পষ্ট দৃশ্যমান যে সক্রিয় APT::Get::AutomaticRemoveসেটিং ( --auto-removeএবং autoremoveএই আছে) সমস্ত ইনস্টল করা প্যাকেজ এবং চিহ্ন মুছে ফেলার জন্য অব্যবহৃত প্যাকেজ মাধ্যমে Apt, looping ঘটায়।

থেকে main():

CommandLine::Args Args[] = {
   // ... stripped to save space
   {0,"auto-remove","APT::Get::AutomaticRemove",0},
   // ...
}
CommandLine::Dispatch Cmds[] = { // ...
                                {"remove",&DoInstall},
                                {"purge",&DoInstall},
                                {"autoremove",&DoInstall},
                                // ...
}
// ...
// Parse the command line and initialize the package library
CommandLine CmdL(Args,_config);

থেকে DoInstall():

 unsigned short fallback = MOD_INSTALL;
   if (strcasecmp(CmdL.FileList[0],"remove") == 0)
      fallback = MOD_REMOVE;
   else if (strcasecmp(CmdL.FileList[0], "purge") == 0)
   {
      _config->Set("APT::Get::Purge", true);
      fallback = MOD_REMOVE;
   }
   else if (strcasecmp(CmdL.FileList[0], "autoremove") == 0)
   {
      _config->Set("APT::Get::AutomaticRemove", "true");
      fallback = MOD_REMOVE;
   }

ফাংশন থেকে DoAutomaticRemove:

   bool doAutoRemove = _config->FindB("APT::Get::AutomaticRemove", false);
   // ...
   // look over the cache to see what can be removed
   for (pkgCache::PkgIterator Pkg = Cache->PkgBegin(); ! Pkg.end(); ++Pkg) {
       if (doAutoRemove) {
       if(Pkg.CurrentVer() != 0 && 
          Pkg->CurrentState != pkgCache::State::ConfigFiles)
          Cache->MarkDelete(Pkg, purgePkgs);
       else
          Cache->MarkKeep(Pkg, false, false);
   }
   }

আমি কথা বলতে পারে না তা অভিপ্রেত যাওয়া বা না হয়, আপনি পূরণ করতে পারে একটি বাগ / জিজ্ঞাসা একটি প্রশ্নlaunchpad.net


এই মুহুর্তে, প্যাকেজগুলি মুছে ফেলা থেকে বাদ দেওয়া সম্ভব নয় apt-get autoremove। আপনি যদি প্যাকেজ রাখতে চান, রান করুন apt-get -s autoremove, তালিকা থেকে প্যাকেজগুলি অনুলিপি করুন এবং সেই তালিকা থেকে প্যাকেজগুলি সরিয়ে রাখতে চান। শেষ অবধি, এই প্যাকেজগুলি সরান: sudo apt-get purge [packages-to-be-removed](শুদ্ধি কনফিগারেশন ফাইলগুলিও সরিয়ে দেয়, যদি থাকে)


আপনি কেবল এক্সএক্সএক্সএক্স এবং এর অব্যবহৃত নির্ভরতা অপসারণ করার জন্য কী প্রস্তাব দিচ্ছেন? আমার শিক্ষার উত্তরে দয়া করে এটি অন্তর্ভুক্ত করুন, ধন্যবাদ!

1
আপনি স্বতঃপরিচালনা থেকে প্যাকেজগুলি বাদ দিতে পারবেন না, আপনি যদি প্যাকেজগুলিকে স্বয়ংক্রিয়-সরানো থেকে রক্ষা করতে চান তবে সেগুলি apt-get purgeবা দিয়ে মুছে ফেলুন apt-get remove
লেকেনস্টেইন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.