首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >列出将被"yum自动删除“删除的包?

列出将被"yum自动删除“删除的包?
EN

Stack Overflow用户
提问于 2019-08-05 17:19:31
回答 1查看 534关注 0票数 1
代码语言:javascript
复制
Running CentOS 7.6

我目前正在卸载Java在我的启动,后安装脚本yum删除java-1.7*。当java被卸载时,它将关闭python包,然后由yum自动删除-y,因为它现在是一个叶子。

然后,我使用ansible来执行一系列配置,这在试图使用“python”的任务中失败。

是否有办法列出所有包"yum自动删除“将删除和标记为不删除?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-05 17:33:56

最后我看到了重新查询API软件包-清理手册页。使用package-cleanup,我能够通过传递--leaves-all标志来列出系统上的所有叶子。然后,我用管道将输入输入到repoquery中,以确定哪些叶子被标记为依赖项。--qf允许我指定查询格式。查看repoquery API,我可以看到我可以进行的各种api调用。

代码语言:javascript
复制
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 (名称-ver-rel.arche)和yumdb.<attr>标记,我可以查询yumdb中传入的每一叶的全名和reason

然后,我可以执行基本的grepsed,只提取可以存储在数组中的包名。

代码语言:javascript
复制
package-cleanup --leaves -q --all | xargs repoquery --installed --qf '%\{nvra} - %\{yumdb_info.reason}' | grep -- '- dep' | sed "s/\s.*$//"

使用这个数组,我能够逐步完成并将每个项的reason设置为user,这样yum autoremove -y就不会删除我想要的内容。

代码语言:javascript
复制
yumdb set reason user $array_item

或者如果你想要所有的贱民之母.

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57363309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档