Yum deposunu temizlemenin en iyi yolu?


10

Geliştiricilerimizin yüklediği özel bir Yum repo'muz var.

Sorun, bir süre sonra eski sürümlerle dağınık hale gelmesidir.

Eski sürümleri manuel olarak kaldırmak oldukça can sıkıcıdır, bu yüzden kendimizi otomatikleştirmeye çalışmadan önce, sürüme (tercih edilen) veya yükleme süresine göre eski RPM'leri temizleyecek herhangi bir komut dosyası olup olmadığını merak ediyorum.

En iyisi, X'in son sürümlerini basit bir şekilde kaydetmeyi ve başka bir şeyi silmeyi seçebilmemiz olurdu. Sonra onu cron yapabilir ve günlük olarak çalışmasına izin verebiliriz.

Herhangi bir fikir için teşekkürler.


Senaryo yoksa, olmalı. Şirketimizde kendi kullanımımız için bir tane yazdık, ancak mümkünse bunu vahşi olarak bırakmayı göreceğim.
Andrew

Harika - Açık kaynaklı olup olmadığını takdir edeceğim. Github'da yayınlamak harika bir odea olurdu.
SyRenity

Yanıtlar:


13

"Basit" yol sadece bir dizindeki her şeyi dökümü ve çalıştırmaktır:

rm $(repomanage --keep=2 --old /path/to/repo)
createrepo /path/to/repo

... en karmaşık yol koji / etc'yi kurmaktır. yapılarınızı oluşturmak ve depoları oluşturmak için.


Harika - tam da ihtiyacım olan şey bu.
SyRenity

harika şeyler, bunun farkında değildi
dyasny

Teknik olarak, bununla birlikte xargskullanmalısınız, aksi takdirde alabilirsiniz rm: missing operand(kaldırılacak eski RPM yoksa). Yani:repomanage --keep=2 --old /path/to/repo | xargs rm -f
Danila Vershinin

Xargs kullanmanın nedeni rm $(repomanage --keep=2 --old /path/to/repo), maksimum komut uzunluğunu kolayca aşabilmesidir. xargsçok sayıda argümanla ilgilenecek. Bkz: offbytwo.com/2011/06/26/things-you-didnt-know-about-xargs.html
shrewmouse

1

Yum-utils RPM "repomanage" yardımcı programı göz atın. Tam olarak aradığınızı yapar.

[root ~]# repomanage --help
usage:
  repomanage: manage a directory of rpm packages. returns lists of newest
            or oldest packages in a directory for easy piping to xargs
            or similar programs.
  repomanage [--old] [--new] path.


  options:
    -h, --help            show this help message and exit
    -o, --old             print the older packages
    -n, --new             print the newest packages
    -s, --space           space separated output, not newline
    -k KEEP, --keep=KEEP  newest N packages to keep - defaults to 1
    -c, --nocheck         do not check package payload signatures/digests
[root ~]#

0

Yapıları tanımlamak için kullandığınız sürümleme veya etiketleme sisteminden yararlanırım. Ayrıca, depoları barındıran sunucuda çalışan bir komut dosyasıyla paketleri tarihe göre tanımlayabilirsiniz.


Dosya adlarındaki sürümü kontrol etmekle mi kastediyorsunuz? Bu da benim düşüncem. Ama bunun için otomatik bir senaryoya sahip olmak güzel olurdu.
SyRenity

1
Ayrıca dosya adının sürümün göstergesi olmadığını da unutmayın. Yani, bir RPM'yi istediğim her şeye yeniden adlandırabilirim; yum, RPM'nin meta verilerini kullanacaktır.
Andrew M.6

0

Yüklemeler her gün gerçekleşiyorsa, neden belirli gün sayısından daha eski olan eski dosyaları silmeye karar vermiyorsunuz (erişim / değiştirme süreleri açısından)? Bulun ve silin. Geliştiricilerinizin, yükleme sırasında geçerli ayın adını dosya adına koyacakları şekilde yüklemeleri yapabilseniz, dosyanın doğrudan month'year olarak adlandırılan dosyaya yüklenmesi mantıklı olacaktır ve sadece silmek mantıklı olacaktır dosya adına bakarak. Komut dosyası otomasyonunuzun bu dosyaları kaldırmayı veya yalnızca önceki ay ve geçerli ayla eşleşen dosyaları tutmasını kolaylaştırır. Sadece bir düşünce.

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.