gpt4 book ai didi

ansible - 列出将被 "yum autoremove"删除的包?

转载 作者:太空宇宙 更新时间:2023-11-03 17:23:00 25 4
gpt4 key购买 nike

Running CentOS 7.6

我目前正在 kickstart 安装后脚本 yum remove java-1.7* 中卸载 Java。卸载 java 时,它会孤立 python-lxml 包,然后通过 yum autoremove -y 将其删除,因为它现在是一片叶子。

然后我使用 ansible 进行了一系列配置,但在尝试使用“python-lxml”的任务中失败了。

有没有办法列出所有“yum autoremove”将删除的包并将它们标记为不要删除

最佳答案

我最终查看了 repoquery APIpackage-cleanup man page .使用 package-cleanup通过传递 --leaves,我能够列出系统上所有的叶子-all旗帜。然后我将该输入通过管道传输到 repoquery找出哪些叶子被标记为依赖项。 --qf允许我指定查询格式。看着 repoquery API 我可以看到我可以进行的各种 API 调用。

querytags = [ 'name', 'version', 'release', 'epoch', 'arch', 'summary',
'description', 'packager', 'url', 'buildhost', 'sourcerpm',
'vendor', 'group', 'license', 'buildtime', 'filetime',
'installedsize', 'archivesize', 'packagesize', 'repoid',
'requires', 'provides', 'conflicts', 'obsoletes',
'weak_requires', 'info_requires',
'weak_reverse_requires', 'info_reverse_requires',
'relativepath', 'hdrstart', 'hdrend', 'id',
'checksum', 'pkgid', 'committer', 'committime',
'ui_evr', 'evr', 'ui_nevra', 'ui_envra',
'ui_from_repo', 'base_package_name', 'size', 'xattr_origin_url',
'ui_evra', 'ui_nevr', 'na', 'vr', 'vra', 'evr', 'evra',
'nvr', 'nvra', 'nevr', 'nevra', 'envr', 'envra',

'repo.<attr of the repo object>',
'yumdb.<attr of the yumdb object>',
'<attr of the yum object>'
]

注意 nvra (name-ver-rel.arch) 和 yumdb.<attr>我可以查询的标签 yumdb全名和reason传入的每片叶子。

然后我可以做基本的 grepsed仅提取我可以存储在数组中的包名称。

package-cleanup --leaves -q --all | xargs repoquery --installed --qf '%\{nvra} - %\{yumdb_info.reason}' | grep -- '- dep' | sed "s/\s.*$//"

使用这个数组,我能够遍历并设置每个项目的 reasonuser所以yum autoremove -y不会删除我打算在那里的内容。

yumdb set reason user $array_item

或者,如果您想要所有 bash one liner 之母...

array=$(package-cleanup --leaves -q --all | xargs repoquery --installed --qf '%{nvra} - %{yumdb_info.reason}' | grep -- '- dep' | sed "s/\s.*$//"); a=($array); if [ ${#a[@]} -gt "0" ]; then for i in "${array[@]}"; do yumdb set reason user $i; done; fi

关于ansible - 列出将被 "yum autoremove"删除的包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57363309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com