repoquery详解——linux查看包依赖关系的神器

    repoquery是yum扩展工具包yum-utils中的一个工具,所有如果你没有repoquery命令的话,可以先 sudo yum install yum-utils 安装yum-utils包。是为了加强和补充yum功能的工具,重点是查询包的关系。repoquery的官方说明是:query information from Yum repositories,故名意思,它只能查看信息,并不能执行安装卸载更新等实质性的操作。而且要和Yum库配合使用。

    repoquery的命令格式和yum很像,但是又有不同,yum 的命令格式是yun [options] [command] [package ...], repoquery的命令格式是repoquery [options] [item ...],当然,也可以是repoquery -a [options],没有item,表示所有。从命令格式的不同,也可以反映出repoquery只能做查询而不支持实质性的操作。

    repoquery的操作分为5类,分别是常规操作、包查询、包选择、组查询和组选择,下面一一说明:

1.常规操作

    常规操作主要是规定repoquery的查询的范围,包括指定特定的库--repoid以及用url方式指定--repofrompath、增加哪些被禁的库--enablerepo、去除那些库--disablerepo(都是针对配置文件已有的库来说)、用什么插件之类的,还有其它的一些命令行常有的选项比如--quiet --version之类的,也归到这一类里面。

2.包查询

    包查询选项主要是查询包的一些信息,此时的item为包名。在描述时,item是主语,怎么说呢?举个例子: repoquery --provides openssl ,这个命令查询的是: openssh (主语)这个包提供了哪些rpm文件。

    查询功能包括查询基本描述信息--info、文件--list、需要哪些依赖库--requires、提供了哪些包--provides、和谁淘汰--obsoletes、和谁冲突--conflicts、变更日志--changelog,来自哪里location,源rpm包的名字source等等。

    注:--requires只会列出依赖哪些库,但是不会显示这些库来自哪个源包,如果要列出源包,再附上--resolve

    还有一个很重要的操作--show-duplicates,可以显示所有重复的包,这个很有用。

3.包选择

    包选择操作中,item是宾语,也举一个例子说明一下什么意思:比如  repoquery --whatprovides openssl-1.10.2k-8.el7 ,这个命令查询的是:谁提供了  openssl-1.10.2k-8.el7 (宾语)这个包。看到没有,很有意思,包选择的操作中,会多一个whatxxx,和包查询中的xxx操作对于,比如--whatrequiers(哪个包依赖item我,我是宾语)和和包查询中的--requires(item我依赖哪些包,我是主语)。

    包选择提供很多操作,包括whatrequires,whatconflicts等等,就不一一讲了,具体执行以下 man repoquery 命令查看一下就好了。需要注意的是,item可以是具体的报名,也可以是一部分关键字,如果要精确匹配包名,可以用--exactdeps。

    这里还有一个--installed选项也很有用,它似的查询的范围仅仅限定在已经安装了的包上面

4.组查询和组选择

   组查询无非就是list grouppkgs requires四个,很简单。组选择更加简单,只有-g一个,查询所有的组。

 

posted on 2017-10-19 15:33  J.M.Liu  阅读(8401)  评论(0编辑  收藏  举报