yum list installed | grep bind
或
rpm -qa | grep bind
但是我不准确获取其他一些这样的绑定程序包的列表:
bind-utils-9.8.2-0.17.rc1.el6_4.5.x86_64
rpcbind-0.2.0-11.el6.x86_64
bind-libs-9.8.2-0.17.rc1.el6_4.5.x86_64
samba-winbind-3.6.9-151.el6.x86_64
samba-winbind-clients-3.6.9-151.el6.x86_64
ypbind-1.20.4-30.el6.x86_64
那不是我想要的。相反,我想准确检查绑定核心软件包是否已安装。例如。
bind.x86_64 32:9.8.2-0.17.rc1.el6_4.6
我希望有这样的东西:
yum check installed bind
,但希望有人能照亮。
#1 楼
您尝试过吗?$ yum list installed bind
#2 楼
发出此查询的方法要简单得多:rpm -qa | grep bind
或rpm -q bind
。如果您不确定包名,最好使用前者。评论
为rpm -q $ package +1,我相信这是最快的解决方案,因为使用yum进行任何操作都可能会强制进行高速缓存更新(通常很慢)。
– Alex S
17年1月4日在21:11
该解决方案(使用rpm)应该是可以接受的答案,因为它返回干净的退出状态,并且不需要像yum解决方案那样调用大量的远程URL。
–诺亚·萨斯曼(Noah Sussman)
18年1月24日15:37
@NoahSussman在我能想到的所有示例中,yum和rpm的退出代码都遵循相同的行为(0 =已安装,1 =未安装/错误),因此了解您是否看到不同的退出代码将很有用。请查看我以上关于使用缓存以避免网络访问的回复
–plasmid87
18年1月24日在21:54
@ plasmid87我不知道我可以使用yum -C来防止yum花费所有额外的时间与网络主机联系。谢谢,我现在看到在这里如何可以互换使用yum和rpm!
–诺亚·萨斯曼(Noah Sussman)
18年5月1日在15:18
rpm -q [软件包名称] +1
–贡萨洛·佩雷斯龚耀禄
20-10-7在18:41
#3 楼
解析此命令的结果是最完整的答案。您需要知道确切的软件包名称。yum info bind
Loaded plugins: refresh-packagekit, rhnplugin
This system is receiving updates from RHN Classic or RHN Satellite.
Installed Packages
Name : bind
Arch : x86_64
Epoch : 32
Version : 9.8.2
Release : 0.17.rc1.el6_4.6
Size : 7.3 M
Repo : installed
From repo : rhel-x86_64-workstation-6
Summary : The Berkeley Internet Name Domain (BIND) DNS (Domain Name System) server
URL : http://www.isc.org/products/BIND/
License : ISC
Description : BIND (Berkeley Internet Name Domain) is an implementation of the DNS
: (Domain Name System) protocols. BIND includes a DNS server (named),
: which resolves host names to IP addresses; a resolver library
: (routines for applications to use when interfacing with DNS); and
: tools for verifying that the DNS server is operating properly.
评论
嗯,这不是在告诉我bind是可用的/有效的yum软件包,而不是告诉我它是否已安装吗?
–校验和
2013年12月3日15:34
这不是很明显,但是如果Repo标记下列出了已安装,则表示已安装。否则,它将列出可用的存储库。
–弗雷德·神奇狗
13年12月4日,0:12
当我只想查看本地计算机上发生的事情时,这将导致连接到远程yum仓库。
–诺亚·萨斯曼(Noah Sussman)
18年1月24日在15:39
#4 楼
我想出的最好的衬纸(非常适合在脚本中快速使用)是:yum info <package_name> | grep Repo | awk '{ print }'
例如:如果我当前有
git
已安装:yum info git | grep Repo | awk '{ print }'
这将返回
installed
如果我当前未安装
git
,则相同的先前命令将返回:base/7/x86_64
git
的当前可用安装评论
当我只想查看本地计算机上发生的事情时,这将导致连接到远程yum仓库。
–诺亚·萨斯曼(Noah Sussman)
18年1月24日在15:39
@NoahSussman列出您本地计算机上当前安装的所有软件包,您可以使用已安装的yum列表。从那里,您可以使用grep命令来获取您要查找的内容的更精确答案。另外,如果您要检查特定的软件包,可以将其添加到命令中-例如:php70w。 yum list installed php70w将列出已安装软件包的信息,或者返回没有匹配的软件包到列表
–domdambrogia
18年1月24日在17:21
#5 楼
使用Python代码检查是否使用yum在python中安装了软件包:def is_installed(package_name):
return "not installed" in commands.getstatusoutput("rpm -q " + package_name)[1]
评论
这不应该吗?
– Inbar Rose
18年5月23日在8:36
#6 楼
yum list installed bind >/dev/null ; echo $?
如果结果为0(零),则表示已安装软件包
评论
与John的答案中显示的rpm -q bind解决方案相比,这非常慢。
–诺亚·萨斯曼(Noah Sussman)
18年1月24日在15:40
尽管也许使用yum -C ...会很快。
–诺亚·萨斯曼(Noah Sussman)
18年5月1日15:19
评论
我收到错误消息:没有匹配的软件包列表和$?返回1,当我尝试安装安装的绑定库的yum list时,$?返回0。到目前为止应该是正确的。我可以安全地得出结论,您的命令可以准确地确定已安装软件包吗?我确实发现了rpm -q绑定。它也等同于您的命令吗?
–校验和
2013年12月3日15:32
这是正确的AFAIK,只有安装了软件包,才退出代码0。
–plasmid87
2013年12月3日15:35
我认为这是有效的。我喜欢单线解决方案。
–校验和
2013年12月3日15:42
我认为正确的命令是使用通配符:yum list install bind *
–亚历杭德罗·安杰利科(Alejandro Angelico)
17-2-14在12:39
@NoahSussman您可以尝试安装yum -C list bind以避免网络连接。这样可以使所有插件保持启用状态(以防万一您有任何影响yumdb中查找的奇特功能),并告诉您从中安装了软件包的仓库
–plasmid87
18年1月24日在21:47