Cara terbaik untuk membersihkan repositori Yum?

10

Kami memiliki repo Yum khusus yang dibuat untuk unggahan pengembang kami.

Masalahnya adalah bahwa setelah beberapa waktu menjadi berantakan dengan versi lama.

Menghapus versi lama secara manual cukup menjengkelkan, jadi sebelum kita mencoba mengotomasinya sendiri, saya ingin tahu apakah ada skrip yang akan membersihkan RPM lama berdasarkan versi (lebih disukai) atau waktu pengunggahan.

Yang terbaik adalah jika kita bisa menentukan untuk menyimpan X versi terakhir, dan menghapus yang lainnya. Lalu kita bisa mencatatnya dan membiarkannya berjalan setiap hari.

Terima kasih atas ide.

SyRenity
sumber
Jika tidak ada skrip, harus ada. Kami menulis satu untuk kami gunakan sendiri di perusahaan kami, tetapi saya akan melihat tentang melepaskan ini ke alam liar jika memungkinkan.
Andrew M.
Hebat - Saya akan menghargai jika itu bisa bersumber terbuka. Posting di github akan menjadi odea yang bagus.
SyRenity

Jawaban:

13

Cara "sederhana" adalah dengan membuang segala sesuatu di direktori dan menjalankan:

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

... cara yang lebih rumit adalah mengatur koji / etc. untuk melakukan build Anda dan membuat repo.

James Antill
sumber
Keren - itulah yang saya butuhkan.
SyRenity
hal-hal hebat, tidak menyadari yang satu ini
dyasny
Secara teknis, Anda harus menggunakannya bersama xargssebagai gantinya, karena jika tidak Anda mungkin mendapatkan rm: missing operand(jika tidak ada RPM lama untuk menghapus). Jadi:repomanage --keep=2 --old /path/to/repo | xargs rm -f
Danila Vershinin
Alasan untuk menggunakan xargs adalah karena rm $(repomanage --keep=2 --old /path/to/repo)dapat dengan mudah melebihi panjang perintah maksimum. xargsakan mengurus daftar besar argumen. Lihat: offbytwo.com/2011/06/26/things-you-didnt-know-about-xargs.html
shrewmouse
1

Lihatlah utilitas "repomanage" dari RPM yum-utils. Itu tidak persis apa yang Anda cari.

[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 ~]#
Michael V. Pelletier
sumber
0

Saya akan memanfaatkan sistem versi atau label yang Anda gunakan untuk mengidentifikasi build. Anda juga bisa mengidentifikasi paket berdasarkan tanggal dengan skrip yang berjalan di server hosting repositori.

putih
sumber
Maksud Anda dengan memeriksa versi dalam nama file? Ini adalah garis pemikiran saya juga, tetapi akan menyenangkan untuk memiliki skrip otomatis untuk ini.
SyRenity
1
Juga ingat bahwa nama file tidak selalu menunjukkan versi. Yaitu, saya dapat mengubah nama RPM menjadi apa pun yang saya inginkan; yum akan menggunakan metadata RPM sebagai gantinya.
Andrew M.
0

Jika unggahan terjadi setiap hari, mengapa tidak mempertimbangkan menghapus file-file lama yang lebih tua dari beberapa hari tertentu (dalam hal waktu akses / modifikasi mereka)? Temukan dan hapus saja. Jika Anda dapat membuat pengembang Anda mengunggah bangunan sehingga mereka memasukkan nama bulan saat ini ke nama file saat mengunggah, akan masuk akal dari nama file secara langsung bahwa file itu diunggah dalam apa yang disebut month'year dan masuk akal untuk menghapus saja dengan dasar melihat nama file. Ini akan memudahkan otomatisasi skrip Anda untuk hanya mempertimbangkan menghapus file-file itu atau hanya menyimpan file-file yang cocok dengan bulan sebelumnya dan bulan berjalan. Hanya pemikiran saja.

Nikhil Mulley
sumber