Fedora'daki Yetim Paketlerini nasıl kaldırabilirim?


42

Ubuntu'dan Fedora14'e yeni geçtim. Ubuntu'da apt-get autoremoveyetim / kullanılmayan paketleri kaldıracağız. Fedora'daki meslektaşı nedir?

Yanıtlar:


36

package-cleanup --quiet --leavesdan yum-utils paketi değil Diğer paketler tarafından güvenerek kütüphane paketleri listeler. Ne yazık ki biraz abartılı olma eğilimindedir. Benim sistemimde, örneğin, libvirt'in kaldırılmasını önerdi. --exclude-binArgüman eklemek yardımcı olur. Önerisinden memnunsanız paketleri temizlemek için şunları yapın:

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

1
Kurduktan ve çıkardıktan sonra test edilmiş netbeans-platformve paket temizleme bazı şeyleri listeler, ancak önceden kurulmuş netbeans-platformbağımlılıkların hiçbirini (Fedora 17 kullanarak).
maxschlepzig

2
Çalışmıyor, @maxschlepzig tarafından belirtildiği gibi
c0da

30

Fedora 22'den beri yum'un yerine geçen DNF, apt-get / yum autoremove komutundan sonra modellenen bir autoremovealt komut da veriyor.

Örnekler:

# dnf autoremove

otomatik olarak kurulan ve aksi takdirde kullanılmayan bağımlılık paketlerini kaldırmaya çalışan - hemen hemen aynı olmalıdır apt-get autoremove.

# dnf autoremove examplepackage

örneklem paketini ve tüm otomatik olarak yüklenen (ve aksi takdirde kullanılmayan) bağımlılıkları ortadan kaldırır.

Yum

Yum, Fedora 19’dan beri otomatik kumanda komutuna sahiptir ve Fedora 20 / RHEL 7’den beri belgelenmiştir.

Kullanım, dnf uygulamasına benzer, örneğin:

# yum autoremove

veya

# yum autoremove examplepackage

Yum 'un davranışını değiştirir

Yum, removealt komutun varsayılan davranışını değiştirmek için bir yapılandırma seçeneğini destekler (örn. /Etc/yum.conf aracılığıyla):

clean_requirements_on_remove=yes

yum.conf (5)

Bu ayarlandığında, bir sonraki yum removeadım, diğer paketler tarafından gerekmediğinde otomatik olarak kurulan bağımlılıkları da kaldırmaya çalışır.

Ayrıca, bu seçeneği aşağıdaki gibi geçici olarak test edebilirsiniz:

# yum --setopt=clean_requirements_on_remove=1 remove examplepackage

Eski Fedora sürümü için geçici çözüm

(Yum autoremove alt komutunun kullanılamadığı ve / veya clean_requirements_on_removeçalışmadığı Fedora sürümleri için )

Her ne kadar paketlerin kurulumu sırasında yüklenen bağımlılıklar böyle işaretlenmiştir (rpm / yum'un nispeten yeni bir özelliği gibi görünmektedir).

Gereksiz bağımlılıkları aşağıdaki yollarla bulabilirsiniz:

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

Bu komut satırı fenris02'nin senaryosundan ilham alıyor .

İncelemesinden tmp(ve belki de küratörlüğünden) sonra, bunları şöyle bir şeyden çıkarabilirsiniz:

# xargs yum remove < tmp

Yüklenen pkg için "geçersiz yumdb querytag 'nedeni' hatası verdi. Adobe-release-x86_64-1.0-1.noarch". Bu şimdi ne?
c0da

@ c0da, yum'ın veritabanına kaydettiği özelliğin, her paket için yükleme nedenini (örneğin,'ep 'veya' kullanıcı ') görece yeni olduğunu düşünüyorum. Belki de Fedora örneğiniz, bu etiketin kullanılmadan kurmuş olduğu (birkaç) eski pakete sahip olmanız için bu özelliğin kullanılmasından önce gelir.
maxschlepzig

Fedora 18'i birkaç gün önce kurdum. Bu yüzden gerekli etiketin orada olması gerektiğini düşünüyorum.
c0da

1
paketi yüklediğiniz çünkü @ c0da, belki 'akıl' kaydedilmedi adobe-releasearacılığıylayum localinstall
maxschlepzig

16

"remove-with-leaves" yum eklentisini yüklemeniz gerekir:

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

kurulduktan sonra:

# yum remove --remove-leaves package

iyi şanslar!


3
ve tüm yüklü uygulamalar için nasıl çalıştırılır?
cnd


1
RHEL / CentOS / Oracle Linux 6'nın yum-plugin-remove-with-leaves.noarchkullanmak için kurulu pakete ihtiyacı varpackage-cleanup
Terry Wang

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

/tmp/junkdosyayı düzenleyin ve komut satırından bilgi alan ilk satırı kaldırın, aşağıdakini girin:

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

1
package-cleanup (1) diyor ki: '- orhons şu anda yapılandırılmış depolarda bulunmayan kurulu paketleri listele.' Bu ne ile aynı değildir apt-get autoremove. apt-get (8) diyor ki: 'otomatik paket, bir paketin bağımlılıklarını karşılamak için otomatik olarak kurulan ve artık gerekmeyen paketleri kaldırmak için kullanılıyor.'
maxschlepzig

1
Çalışmıyor Daha önce yanılmış olmalıydım. Thanks @maxschlepzig
c0da

Bu benim için çalışıyordu ama CentOS 6.6'da sadece yetimleri değil, kurulu tüm paketleri listeliyor.
Gaia,

4

NOT: Bu cevap doğrudur, ancak sadece RHEL 7+ ve Fedora 20+ (otomatik çalıştırma yeni bir özellik olarak eklenmişse) için geçerlidir.

# yum autoremove

Sadece seçilen paketleri kaldırmak için onaylayın.


0

Üzerine bina Larry Mohr cevap :

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

(Merak ediyorsanız, en hızlı ayna için atlama içerir.)


0

Fedora'da yetim paketi, güncellenmesi için hiçbir aday depo anlamına gelmiyor!

  1. Yetim paketleri sizin tarafınızdan oluşturulduysa, yum.repos.d / some.conf dosyasını devre dışı bırakın.

    yum distro-sync
    
  2. Diğer yetim paketlerinde komut tehlikeli olabilir.

    yum remove $(package-cleanup --orphans)
    

    veya sadece güvenlik komutunu kullanın.

    yum remove name-of-page
    

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.