Cách tốt nhất để dọn sạch kho Yum?


10

Chúng tôi có một repo Yum tùy chỉnh mà các nhà phát triển của chúng tôi tải lên xây dựng.

Vấn đề là sau một thời gian nó trở nên lộn xộn với các phiên bản cũ.

Việc xóa các phiên bản cũ theo cách thủ công khá khó chịu, vì vậy trước khi chúng tôi cố gắng tự động hóa nó, tôi tự hỏi liệu có tập lệnh nào có thể dọn sạch RPM cũ dựa trên phiên bản (ưu tiên) hoặc thời gian tải lên không.

Tốt nhất là nếu chúng ta có thể chỉ định lưu X các phiên bản cuối cùng đơn giản và xóa mọi thứ khác. Sau đó, chúng tôi có thể cron nó và chỉ để nó chạy hàng ngày.

Cảm ơn cho bất kỳ ý tưởng.


Nếu không có kịch bản thì nên có. Chúng tôi đã viết một cái để sử dụng riêng tại công ty của chúng tôi, nhưng tôi sẽ thấy về việc phát hành thứ này vào tự nhiên nếu có thể.
Andrew M.

Tuyệt vời - Tôi sẽ đánh giá cao nếu nó có thể có nguồn mở. Đăng bài trên github sẽ là một odea tuyệt vời.
SyRenity

Câu trả lời:


13

Cách "đơn giản" là chỉ cần kết xuất mọi thứ trong một thư mục và chạy:

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

... cách phức tạp hơn là thiết lập koji / vv. để thực hiện các bản dựng của bạn và tạo các repos.


Thật tuyệt - đó chính xác là những gì tôi cần.
SyRenity

những thứ tuyệt vời, không nhận thức được điều này
dyasny

Về mặt kỹ thuật, bạn nên sử dụng nó cùng với xargsthay vào đó, vì nếu không bạn có thể nhận được rm: missing operand(nếu không có RPM cũ để xóa). Vì vậy:repomanage --keep=2 --old /path/to/repo | xargs rm -f
Danila Vershinin

Lý do để sử dụng xargs là vì rm $(repomanage --keep=2 --old /path/to/repo)có thể dễ dàng vượt quá độ dài lệnh tối đa. xargssẽ chăm sóc một danh sách lớn các đối số. Xem: offbytwo.com/2011/06/26/things-you-didnt-ledge-about-xargs.html
shrewmouse

1

Kiểm tra tiện ích "repomanage" từ RPM yum-utils. Nó thực hiện chính xác những gì bạn đang tìm kiếm.

[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

Tôi sẽ tận dụng hệ thống tạo phiên bản hoặc ghi nhãn mà bạn sử dụng để xác định các bản dựng. Bạn cũng có thể xác định các gói theo ngày với một tập lệnh chạy trên máy chủ lưu trữ kho lưu trữ.


Bạn có nghĩa là bằng cách kiểm tra phiên bản trong tên tập tin? Đây cũng là dòng suy nghĩ của tôi, nhưng sẽ rất tuyệt nếu có một kịch bản tự động cho việc này.
SyRenity

1
Cũng nên nhớ rằng tên tệp không nhất thiết phải là phiên bản. Tức là tôi có thể đổi tên RPM thành bất cứ thứ gì tôi muốn; yum sẽ sử dụng siêu dữ liệu của RPM thay thế.
Andrew M.

0

Nếu việc tải lên diễn ra hàng ngày, tại sao không xem xét xóa các tệp cũ cũ hơn số ngày nhất định (về thời gian truy cập / sửa đổi của chúng)? Tìm và chỉ cần xóa chúng. Nếu bạn có thể yêu cầu các nhà phát triển của mình tải lên các bản dựng sao cho họ đặt tên của tháng hiện tại vào tên tệp khi tải lên, thì sẽ có nghĩa trực tiếp từ tên tệp mà tệp được tải lên trong cái gọi là tháng và có nghĩa là xóa nó đi bằng cơ sở nhìn vào tên tệp. Sẽ dễ dàng cho việc tự động hóa tập lệnh của bạn chỉ cần xem xét xóa các tệp đó hoặc chỉ giữ các tệp phù hợp với tháng trước và tháng hiện tại. Chỉ là một ý nghĩ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.