ফেডোরায় আমি কীভাবে অনাথ প্যাকেজগুলি সরিয়ে ফেলতে পারি?


42

আমি সবেমাত্র উবুন্টু থেকে ফেডোরা 14 এ চলেছি। উবুন্টুতে আমাদের apt-get autoremoveএতিম / অব্যবহৃত প্যাকেজগুলি সরিয়ে ফেলার জিনিস ছিল । ফেডোরার অংশটি কী?

উত্তর:


36

package-cleanup --quiet --leavesথেকে ইস-utils প্যাকেজ গ্রন্থাগার প্যাকেজ যা না অন্য প্যাকেজ উপর ওপরেই নির্ভরশীল হয় তালিকা প্রস্তুত করা। দুর্ভাগ্যক্রমে এটি কিছুটা অতিরিক্ত কাজ করে। উদাহরণস্বরূপ, আমার সিস্টেমে এটি libvirt অপসারণের পরামর্শ দিয়েছে। যোগ করা হচ্ছে --exclude-binযুক্তি করতে সাহায্য করে। আপনি যদি এই পরামর্শ দিয়ে খুশি হন তবে প্যাকেজগুলি পরিষ্কার করতে, করুন:

# package-cleanup --quiet --leaves --exclude-bin | xargs yum remove -y

1
এটি ইনস্টল করার পরে এবং মুছে ফেলার পরে পরীক্ষিত হয়েছে netbeans-platform-প্যাকেজ-ক্লিনআপ কিছু স্টাফ তালিকাভুক্ত করে তবে বাস্তবে পূর্বে ইনস্টল করা netbeans-platformনির্ভরতাগুলির মধ্যে কোনওটিই নেই (ফেডোরা 17 ব্যবহার করে)।
maxschlepzig

2
@Maxschlepzig
c0da

30

ফেডোরা ২২-এর পর থেকে ডিএমএফ, ইয়াম প্রতিস্থাপন, autoremoveসাব -কম্যান্ডও সরবরাহ করে যা আপ্ট-গেট / ইয়ম অটোরেমোভের পরে মডেল করা হয়

উদাহরণ:

# dnf autoremove

যা সমস্ত স্বয়ংক্রিয়ভাবে ইনস্টল হওয়া এবং অন্যথায় অব্যবহৃত নির্ভরতা প্যাকেজগুলি মুছে ফেলার চেষ্টা করে - এর তুলনায় বেশ সমতুল্য হওয়া উচিত apt-get autoremove

# dnf autoremove examplepackage

যা উদাহরণস্বরূপ এবং তার সমস্ত স্বয়ংক্রিয়ভাবে ইনস্টল হওয়া (এবং অন্যথায় অব্যবহৃত) নির্ভরতা সরিয়ে দেয়।

ইয়াম

ফেডোরা 19 সাল থেকে ইয়ামের অটোরেমোভ কমান্ড রয়েছে এবং এটি ফেডোরা 20 / আরএইচএল 7 এর পরে নথিভুক্ত করা হয়েছে।

ব্যবহারটি ডিএনএফ বাস্তবায়নের সাথে সাদৃশ্যযুক্ত, যেমন:

# yum autoremove

অথবা

# yum autoremove examplepackage

Yum মুছে ফেলার আচরণ পরিবর্তন করুন

removeসাব কম্যান্ডের ডিফল্ট আচরণ পরিবর্তন করার জন্য ইউম একটি কনফিগার বিকল্পকে সমর্থন করে (যেমন /etc/yum.conf এর মাধ্যমে):

clean_requirements_on_remove=yes

yum.conf (5)

যখন এটি সেট করা থাকে, পরেরটি yum removeঅন্যান্য প্যাকেজগুলির প্রয়োজন না হলে স্বয়ংক্রিয়ভাবে ইনস্টল করা নির্ভরতাগুলি সরিয়ে ফেলার চেষ্টা করে।

আপনি সাময়িকভাবে এই বিকল্পের মাধ্যমেও এই বিকল্পটি পরীক্ষা করতে পারেন:

# yum --setopt=clean_requirements_on_remove=1 remove examplepackage

পুরানো ফেডোরার সংস্করণটির জন্য কর্মশালা

(ফেডোরার সংস্করণগুলির জন্য যেখানে yum অটোমোমো সাবকম্যান্ড পাওয়া যায় না এবং / অথবা clean_requirements_on_removeকাজ করে না))

প্যাকেজ ইনস্টল করার সময় ইনস্টল করা নির্ভরতা যেমন চিহ্নিত করা হয় (rpm / yum এর তুলনামূলকভাবে নতুন বৈশিষ্ট্য বলে মনে হয়)।

আপনি এর মাধ্যমে অপ্রয়োজনীয় নির্ভরতা খুঁজে পেতে পারেন:

$ package-cleanup --leaves -q --all \
    | xargs repoquery --installed --qf '%{nvra} - %{yumdb_info.reason}' \
    | grep -- '- dep' \
    | cut -d' ' -f1 > tmp

এই কমান্ড লাইনটি fenris02 এর স্ক্রিপ্ট দ্বারা অনুপ্রাণিত হয়েছে ।

tmp(এবং সম্ভবত নিরাময়ের) পরিদর্শন করার পরে আপনি এ জাতীয় কিছু মাধ্যমে এগুলি সরিয়ে ফেলতে পারেন:

# xargs yum remove < tmp

এটি ত্রুটিটি দিয়েছে "ইনস্টলড পিকেজি: অ্যাডোব-রিলিজ-x86_64-1.0-1.noarch" এর জন্য অবৈধ yumdb ক্যোয়ারেট্যাগ 'কারণ'। এটা এখন কি?
c0da

@ c0da, আমি অনুমান করি যে ইউম এটির ডাটাবেসে যে বৈশিষ্ট্যটি রেকর্ড করে প্রতিটি প্যাকেজের জন্য ইনস্টলেশনটির 'কারণ' (যেমন 'ডিপ' বা 'ব্যবহারকারী') তুলনামূলকভাবে নতুন। সম্ভবত আপনার ফেডোরা উদাহরণটি সেই বৈশিষ্ট্যটির প্রবর্তনের পূর্বাভাস দেয় যেমন আপনি ট্যাগ ট্যাগ ব্যতীত এখনও কয়েকটি (কয়েকটি) পুরানো প্যাকেজ ইনস্টল করেছেন।
ম্যাক্সচলেপজিগ

আমি কিছুদিন আগে ফেডোরা 18 ইনস্টল করেছি। সুতরাং আমি মনে করি প্রয়োজনীয় ট্যাগটি সেখানে থাকা উচিত।
c0da

1
@ c0da, সম্ভবত 'কারণ' রেকর্ড হয়নি কারণ আপনি প্যাকেজ ইনস্টল করা আছে adobe-releaseমাধ্যমেyum localinstall
maxschlepzig

16

আপনাকে yum প্লাগইন "পাতাগুলি অপসারণ" ইনস্টল করতে হবে:

# yum install yum-plugin-remove-with-leaves.noarch

একবার ইনস্টল:

# yum remove --remove-leaves package

শুভকামনা!


3
এবং এটি সমস্ত ইনস্টল থাকা অ্যাপ্লিকেশনগুলির জন্য কীভাবে চালাবে?
সিএনডি করুন

পাশাপাশি খুব নির্ভরযোগ্য বলে মনে হচ্ছে না: skvidal.wordpress.com/2010/11/09/orphaned-dep-cleanup-in-yum
maxschlepzig

1
আরএইচইএল / সেন্টোস / ওরাকল লিনাক্স 6 yum-plugin-remove-with-leaves.noarchব্যবহারের জন্য প্যাকেজ ইনস্টল করা দরকারpackage-cleanup
টেরি ওয়াং

8
# package-cleanup --orphans >/tmp/junk

/tmp/junkফাইলটি সম্পাদনা করুন এবং কমান্ড লাইন থেকে তথ্যযুক্ত প্রথম লাইনটি সরিয়ে ফেলুন:

for file in `cat /tmp/junk`
do
  yum remove $file
done

1
প্যাকেজ-ক্লিনআপ (1) বলেছেন: '--orphans ইনস্টল হওয়া প্যাকেজগুলির তালিকা প্রস্তুত করুন যা বর্তমানে কনফিগার করা সংগ্রহস্থল থেকে পাওয়া যায় না।' এটি যা apt-get autoremoveকরে তার সমতুল্য নয় । apt-get (8) বলেছেন: 'কিছু প্যাকেজের নির্ভরতা মেটাতে স্বয়ংক্রিয়ভাবে ইনস্টল হওয়া প্যাকেজগুলি অপসারণ করতে অটোরমোভ ব্যবহার করা হয় এবং এগুলি আর প্রয়োজন হয় না' '
maxschlepzig

1
কাজ করে না! আমার অবশ্যই ভুল হয়েছে আগে। ধন্যবাদ @ ম্যাক্সচলেপজিগ
c0da

এটি আমার পক্ষে কাজ করত তবে সেন্টস 6..6 এ এটি কেবলমাত্র অনাথ নয়, সমস্ত ইনস্টল করা প্যাকেজ তালিকাভুক্ত করে।
গাইয়া

4

দ্রষ্টব্য: এই উত্তরটি সঠিক তবে কেবল RHEL 7+ এবং ফেডোরা 20+ (যেখানে অটোরেমোভ একটি নতুন বৈশিষ্ট্য হিসাবে যুক্ত করা হয়েছে) এর ক্ষেত্রে প্রযোজ্য।

# yum autoremove

কেবলমাত্র নির্বাচিত প্যাকেজগুলি সরানোর জন্য নিশ্চিত করুন।


0

উপরে নির্মাণের ল্যারি Mohr এর উত্তর :

package-cleanup --orphans | sed '1d' | sed '/^ * /d' | sed '/Loading mirror speeds from cached hostfile/d' | xargs sudo yum remove

(যদি আপনি অবাক হন তবে দ্রুততম আয়নাতে এড়িয়ে যাওয়াও অন্তর্ভুক্ত রয়েছে))


0

ফেডোরায়, এতিম প্যাকেজটির অর্থ আপডেট হওয়ার জন্য কোনও প্রার্থীর রেপো নেই!

  1. আপনি যদি এতিম প্যাকেজগুলি তৈরি করে থাকেন তবে yum.repos.d / some.conf অক্ষম করুন।

    yum distro-sync
    
  2. অন্যান্য অনাথ প্যাকেজ, আদেশটি বিপজ্জনক হতে পারে।

    yum remove $(package-cleanup --orphans)
    

    বা, কেবল সুরক্ষা কমান্ডটি ব্যবহার করুন।

    yum remove name-of-page
    

0

এই সমস্যাগুলির কারণ না হওয়ার আরেকটি উপায় হ'ল লেনদেন ব্যবহার করা।

সেটআপ বেস সিস্টেমের পরে, আপনি ইয়াম ব্যবহার করে ইনস্টল করার সাথে সাথে এটি লেনদেন তৈরি করে। আপনি যখন জিনিসগুলি সরিয়ে ফেলতে চান তখন লেনদেনগুলি রোলব্যাক করুন।

https://docs.fedoraproject.org/en-US/Fedora/24/html/System_Administrators_Guide/sec-DNF-Transaction_History.html

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