如何使用YUM列出包的内容?

本文翻译自:How to list the contents of a package using YUM?

I know how to use rpm to list the contents of a package ( rpm -qpil package.rpm ). 我知道如何使用rpm列出包的内容( rpm -qpil package.rpm )。 However, this requires knowing the location of the .rpm file on the filesystem. 但是,这需要知道.rpm文件在文件系统上的位置。 A more elegant solution would be to use the package manager, which in my case is YUM. 更优雅的解决方案是使用包管理器,在我的例子中是YUM。 How can YUM be used to achieve this? 如何使用YUM实现这一目标?


#1楼

参考:https://stackoom.com/question/R4J/如何使用YUM列出包的内容


#2楼

I don't think you can list the contents of a package using yum, but if you have the .rpm file on your local system (as will most likely be the case for all installed packages), you can use the rpm command to list the contents of that package like so: 我不认为你可以使用yum列出包的内容,但是如果你的本地系统上有.rpm文件(很可能是所有已安装包的情况),你可以使用rpm命令列出该包的内容如下:

rpm -qlp /path/to/fileToList.rpm

If you don't have the package file (.rpm), but you have the package installed, try this: 如果您没有包文件(.rpm),但安装了包,请尝试以下操作:

rpm -ql packageName

#3楼

Yum doesn't have it's own package type. 百胜没有它自己的包装类型。 Yum operates and helps manage RPMs. 百胜经营并帮助管理RPM。 So, you can use yum to list the available RPMs and then run the rpm -qlp command to see the contents of that package. 因此,您可以使用yum列出可用的RPM,然后运行rpm -qlp命令以查看该程序包的内容。


#4楼

There is a package called yum-utils that builds on YUM and contains a tool called repoquery that can do this. 有一个名为yum-utils的包,它基于YUM构建,并包含一个名为repoquery的工具,可以执行此操作。

$ repoquery --help | grep -E "list\ files" 
  -l, --list            list files in this package/group

Combined into one example: 结合成一个例子:

$ repoquery -l time
/usr/bin/time
/usr/share/doc/time-1.7
/usr/share/doc/time-1.7/COPYING
/usr/share/doc/time-1.7/NEWS
/usr/share/doc/time-1.7/README
/usr/share/info/time.info.gz

On at least one RH system, with rpm v4.8.0, yum v3.2.29, and repoquery v0.0.11, repoquery -l rpm prints nothing. 在至少一个RH系统上,使用rpm v4.8.0,yum v3.2.29和repoquery v0.0.11, repoquery -l rpm打印任何内容。

If you are having this issue, try adding the --installed flag: repoquery --installed -l rpm . 如果您遇到此问题,请尝试添加--installed标志: repoquery --installed -l rpm


DNF Update: DNF更新:

To use dnf instead of yum-utils , use the following command: 要使用dnf而不是yum-utils ,请使用以下命令:

$ dnf repoquery -l time
/usr/bin/time
/usr/share/doc/time-1.7
/usr/share/doc/time-1.7/COPYING
/usr/share/doc/time-1.7/NEWS
/usr/share/doc/time-1.7/README
/usr/share/info/time.info.gz

#5楼

rpm -ql [packageName]

Example

# rpm -ql php-fpm

/etc/php-fpm.conf
/etc/php-fpm.d
/etc/php-fpm.d/www.conf
/etc/sysconfig/php-fpm
...
/run/php-fpm
/usr/lib/systemd/system/php-fpm.service
/usr/sbin/php-fpm
/usr/share/doc/php-fpm-5.6.0
/usr/share/man/man8/php-fpm.8.gz
...
/var/lib/php/sessions
/var/log/php-fpm

No need to install yum-utils, or to know the location of the rpm file. 无需安装yum-utils,也无需知道rpm文件的位置。


#6楼

There are several good answers here, so let me provide a terrible one: 这里有几个很好的答案,所以让我提供一个可怕的答案:

: you can type in anything below, doesnt have to match anything

yum whatprovides "me with a life"

: result of the above (some liberties taken with spacing):

Loaded plugins: fastestmirror
base | 3.6 kB 00:00 
extras | 3.4 kB 00:00 
updates | 3.4 kB 00:00 
(1/4): extras/7/x86_64/primary_db | 166 kB 00:00 
(2/4): base/7/x86_64/group_gz | 155 kB 00:00 
(3/4): updates/7/x86_64/primary_db | 9.1 MB 00:04 
(4/4): base/7/x86_64/primary_db | 5.3 MB 00:05 
Determining fastest mirrors
 * base: mirrors.xmission.com
 * extras: mirrors.xmission.com
 * updates: mirrors.xmission.com
base/7/x86_64/filelists_db | 6.2 MB 00:02 
extras/7/x86_64/filelists_db | 468 kB 00:00 
updates/7/x86_64/filelists_db | 5.3 MB 00:01 
No matches found

: the key result above is that "primary_db" files were downloaded

: filelists are downloaded EVEN IF you have keepcache=0 in your yum.conf

: note you can limit this to "primary_db.sqlite" if you really want

find /var/cache/yum -name '*.sqlite'

: if you download/install a new repo, run the exact same command again
: to get the databases for the new repo

: if you know sqlite you can stop reading here

: if not heres a sample command to dump the contents

echo 'SELECT packages.name, GROUP_CONCAT(files.name, ", ") AS files FROM files JOIN packages ON (files.pkgKey = packages.pkgKey) GROUP BY packages.name LIMIT 10;' | sqlite3 -line /var/cache/yum/x86_64/7/base/gen/primary_db.sqlite 

: remove "LIMIT 10" above for the whole list

: format chosen for proof-of-concept purposes, probably can be improved a lot
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值