Назад | Перейти на главную страницу

Лучший способ очистить репозиторий Yum?

У нас есть собственный репозиторий Yum, в который наши разработчики загружают сборки.

Проблема в том, что через некоторое время он захламляется старыми версиями.

Удаление старых версий вручную довольно раздражает, поэтому, прежде чем мы попытаемся автоматизировать это самостоятельно, мне интересно, есть ли какой-нибудь скрипт, который очищал бы старые RPM на основе версии (предпочтительно) или времени загрузки.

Лучше всего было бы, если бы мы могли указать простое сохранение X последних версий и стереть все остальное. Затем мы могли бы выполнить cron и позволить ему работать ежедневно.

Спасибо за любую идею.

«Простой» способ - просто выгрузить все в каталог и запустить:

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

... более сложный способ - настроить koji / etc. делать ваши сборки и создавать репозитории.

Проверьте утилиту "repomanage" из пакета RPM yum-utils. Он делает именно то, что вы ищете.

[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 ~]#

Я бы использовал систему управления версиями или метками, которую вы используете для идентификации сборок. Вы также можете идентифицировать пакеты по дате с помощью сценария, запущенного на сервере, на котором размещен репозиторий.

Если загрузка происходит каждый день, почему бы не подумать об удалении старых файлов, которые старше определенного количества дней (с точки зрения времени доступа / модификации)? Найдите и просто удалите их. Если бы вы могли заставить своих разработчиков загружать сборки таким образом, чтобы они помещали имя текущего месяца в имя файла при загрузке, было бы понятно из имени файла напрямую, что файл был загружен в так называемом месячном году, и имеет смысл удалить только на основе просмотра имени файла. Для автоматизации вашего скрипта было бы просто рассмотреть возможность удаления этих файлов или просто сохранить те файлы, которые соответствуют предыдущему и текущему месяцам. Просто мысль.