我们有一个自定义的 Yum 存储库,我们的开发人员将构建版本上传到其中。
问题是,一段时间后它会变得杂乱无章,充斥着旧版本。
手动删除旧版本非常烦人,因此在我们尝试自己自动化之前,我想知道是否有任何脚本可以根据版本(首选)或上传时间清除旧的 RPM。
最好的办法是,我们可以指定简单地保存 X 个最新版本,并删除其他任何内容。然后我们可以按计划执行,让它每天运行。
感谢您的任何想法。
答案1
“简单”的方法是将所有内容转储到目录中并运行:
rm $(repomanage --keep=2 --old /path/to/repo)
createrepo /path/to/repo
...更复杂的方法是设置 koji/etc. 来进行构建并创建 repos。
答案2
查看 yum-utils RPM 中的“repomanage”实用程序。它正是您要找的。
[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 ~]#
答案3
我会利用您用来识别版本的版本控制或标签系统。您还可以使用托管存储库的服务器上运行的脚本按日期识别软件包。
答案4
如果每天都要上传,为什么不考虑删除超过一定天数的旧文件(就其访问/修改时间而言)?找到并删除它们。如果您可以让开发人员上传构建版本,并在上传时将当前月份的名称放入文件名中,那么直接从文件名中就可以推断出该文件是在所谓的月份年份上传的,并且仅通过查看文件名就可以删除。这将使您的脚本自动化更容易考虑删除这些文件或仅保留与上个月和当前月份匹配的文件。只是一个想法。