অব্যবহৃত প্যাকেজগুলি সরান


62

আমি আমার ফেডোরা 17 তে কিছু আরপিএম প্যাকেজ ইনস্টল করেছি Some কিছু প্যাকেজের প্রচুর নির্ভরতা ছিল। আমি কিছু প্যাকেজ সরিয়ে ফেলেছি তবে আমি yum অপসারণের সাথে অব্যবহৃত নির্ভরতা অপসারণ করতে ভুলে গেছি।

আমি এখন এটি কিভাবে করতে পারি?



উত্তর:


39

এটা সহজ না. "আমি যে ফাইলটি চাইছিলাম তার চেয়ে" অপসারণের পরে "মুছে ফেলা" এমন একটি ফাইলের মধ্যে কীভাবে পার্থক্য করবেন?

আপনি আপনার প্যাকেজ নির্ভরতা গ্রাফে "লিফ নোডগুলি" তালিকাভুক্ত package-cleanupকরতে yum-utilsপ্যাকেজ থেকে কমান্ডটি ব্যবহার করতে পারেন । এগুলি হ'ল প্যাকেজগুলি যা অন্য কোনও কিছুকে প্রভাবিত না করে মুছে ফেলা যায়:

$ package-cleanup --leaves

এটি "লাইব্রেরি" এর একটি তালিকা তৈরি করবে যার উপর অন্য কিছুই নির্ভর করে না। বেশিরভাগ ক্ষেত্রে আপনি নিরাপদে এই প্যাকেজগুলি মুছে ফেলতে পারেন। আপনি যদি --allকমান্ড লাইনে যুক্ত হন:

$ package-cleanup --leaves --all

আপনি প্যাকেজগুলি পাবেন যা গ্রন্থাগারগুলি বিবেচিত হয় না, তবে এই তালিকাটি এত দীর্ঘ হতে চলেছে যে সম্ভবত এটি কার্যকর হবে না।


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

101

যদি আপনি এটির সাথে প্যাকেজ ইনস্টল করেন yum install, বলুন pdftk, এটি অনেকটা নির্ভরশীলতা টানবে:

Installed:
  pdftk.x86_64 0:1.44-10.fc18

Dependency Installed:
  bouncycastle.noarch 0:1.46-6.fc18     
  itext-core.noarch 0:2.1.7-14.fc18     
  libgcj.x86_64 0:4.7.2-8.fc18          
  bouncycastle-mail.noarch 0:1.46-6.fc18
  java-1.5.0-gcj.x86_64 0:1.5.0.0-40.fc18
  sinjdoc.x86_64 0:0.5-13.fc18
  bouncycastle-tsp.noarch 0:1.46-5.fc18
  java_cup.noarch 1:0.11a-10.fc18
  itext.x86_64 0:2.1.7-14.fc18   
  javamail.noarch 0:1.4.3-12.fc18

Complete!

yum remove pdftk কেবলমাত্র সেই প্যাকেজটি সরিয়ে ফেলবে এবং সমস্ত নির্ভরতা নয়।

তবে আপনি সমস্ত 'লেনদেন' (ইনস্টল, অপসারণ ইত্যাদি) দেখতে পারেন:

$ sudo yum history list pdftk
ID     | Command line             | Date and time    | Action(s)      | Altered
-------------------------------------------------------------------------------  
    88 | install pdftk            | 2012-12-14 13:35 | Install        |   11   

এবং তারপরে আপনি সেই লেনদেনটিকে পূর্বাবস্থায় ফিরিয়ে আনতে পারেন:

$ sudo yum history undo 88
Undoing transaction 88, from Fri Dec 14 13:35:34 2012
    Dep-Install bouncycastle-1.46-6.fc18.noarch       @fedora
    Dep-Install bouncycastle-mail-1.46-6.fc18.noarch  @fedora
    Dep-Install bouncycastle-tsp-1.46-5.fc18.noarch   @fedora
    Dep-Install itext-2.1.7-14.fc18.x86_64            @fedora
    Dep-Install itext-core-2.1.7-14.fc18.noarch       @fedora
    Dep-Install java-1.5.0-gcj-1.5.0.0-40.fc18.x86_64 @fedora
    Dep-Install java_cup-1:0.11a-10.fc18.noarch       @fedora
    Dep-Install javamail-1.4.3-12.fc18.noarch         @fedora
    Dep-Install libgcj-4.7.2-8.fc18.x86_64            @fedora
    Install     pdftk-1.44-10.fc18.x86_64             @fedora
    Dep-Install sinjdoc-0.5-13.fc18.x86_64            @fedora
    ...
    Complete!

14
+1 অসাধারণ সমাধান এবং করা খুব সহজ। আমি কখনও শুনিনি yum history। ধন্যবাদ!
স্টিফান লাসিউইস্কি

8
এবং 89 যদি জাভা_ক্যাপ বা লিবিজিসিজে নির্ভর করে?
ওয়ার্নার সিডি

2
এটি কি গ্রহণযোগ্য উত্তর হওয়া উচিত নয়?
সিল্ডার

61

ফেডোরা 18 থেকে শুরু করে আপনি কেবল এই আদেশটি ব্যবহার করতে পারেন

yum autoremove

অথবা

yum remove --setopt=clean_requirements_on_remove=1

আপনি নির্দিষ্ট প্যাকেজ সহ অটোরেমও কমান্ড প্রয়োগ করতে পারেন

yum autoremove <package>

যা ইনস্টল করা প্যাকেজ থেকে অপরিবর্তিত নির্ভরতা সরিয়ে ফেলবে। autoremoveএটির বেশিরভাগই একটি উপনাম remove --setopt=clean_requirements_on_remove=1তবে কিছু কারণে এখনও অননুমোদিত।


5
কমান্ডটি yum remove --setopt=clean_requirements_on_remove=1সেন্টোজে আমার জন্য কাজ করে
বিএমডাব্লু

আমার জন্য package-cleanup --leaves && yum autoremoveসরানো লাইবোরবিস এবং তাই ইন্টারনেট-রেডিও-স্ট্রিমিংয়ের "আইসস" অ্যাপ্লিকেশনটি মারা যায় - সম্ভবত এটি রেপোসে নেই এবং আমাকে এটি সংকলন করতে হয়েছিল।
নাকিলন

কমান্ড yum autoremoveCentOS 7.6 এও কাজ করে।
স্ক্রুটারি

ইয়ম অটোরমোভ CentOS 7
ব্যবহারকারীর 11323275 4

5

আমি লারস্কের আরও এক ধাপ উত্তর নিয়েছি।

$ package-cleanup -q --leaves | xargs -l1 yum -y remove 

এটি এমন সমস্ত নির্ভরশীলতা দখল করে যা অন্য কোনও কিছুকে প্রভাবিত না করে মুছে ফেলা যায় এবং তারপরে সেগুলি সরিয়ে দেয়। একের পর এক করে দিয়ে যাওয়াই ভাল।

"-Q" এমন কিছু সিস্টেমে দরকারী যা "yum সেটআপ করা" প্রিন্ট করে, অন্যথায় এই কমান্ডটি yum সরিয়ে দেয়। এবং আপনি কি চান না।


2
package-cleanupআমার মেশিনে "সেট আপ ইয়াম" আউটপুটস, যার ফলস্বরূপ ইয়াম নিজেকে মুছে ফেলে। আমি এখন এটি কীভাবে বাছাই করব তা বোঝার চেষ্টা করছি।
পল ল্যামার্টসমা

@ পলল্যামার্টসমা কেবল -qপ্যাকেজ- ক্লিনআপের জন্য বিকল্প যুক্ত করুন । আমার সাথে
এটিও

1
package-cleanup -q --leaves | xargs -r -l1 yum -y removeপ্যাকেজ-ক্লিনআপ আউটপুট যদি খালি থাকে তবে নীরবে xargs এড়িয়ে যাবে, জবাবদিহী, শেফ, পুতুল, অসম্পূর্ণ যেমন স্বয়ংক্রিয় স্ক্রিপ্টগুলির জন্য দরকারী
ইলিয়া শিয়ারশফ

এই উত্তর।
xCovelus

1

আরও নতুন ফেডোরাসে dnf, আপনি এর dnf repoquery --unneededপ্রতিস্থাপন হিসাবে ব্যবহার করতে পারেন package-cleanup --leaves

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