有些包有一个Provides:头。例如,Debian上的包postfix有Provides: mail-transport-agent。
物理上不存在的包mail-transport-agent被认为是“虚拟”包。
在基于Debian的系统上,
提示:若要列出已安装或未安装的所有现有虚拟包,请执行:aptitude search "~v"
发布于 2013-10-17 00:40:22
要列出提供mail-transport-agent的包,请执行以下操作:
$ aptitude search '~Pmail-transport-agent'
p citadel-mta - complete and feature-rich groupware server
p courier-mta - Courier mail server - ESMTP daemon
p dma - lightweight mail transport agent
p esmtp-run - user configurable relay-only MTA - the reg
p exim4-daemon-heavy - Exim MTA (v4) daemon with extended feature
p exim4-daemon-light - lightweight Exim MTA (v4) daemon
p masqmail - mail transport agent for intermittently co
p msmtp-mta - light SMTP client with support for server
p nullmailer - simple relay-only mail transport agent
i postfix - High-performance mail transport agent
p sendmail-bin - powerful, efficient, and scalable Mail Tra
p ssmtp - extremely simple MTA to get mail off the s
p xmail - advanced, fast and reliable ESMTP/POP3 mai使该aptitude search '~Pmail-transport-agent ~i'只列出已安装的软件包(如果有的话)。
若要列出由当前安装的软件包提供的所有虚拟包,请执行以下操作:
aptitude search '~Rprovides:~i ~v'有关搜索模式的解释,请参见智能手册。
发布于 2013-10-16 14:53:08
这里的问题是,虚拟包和其他包提供的包之间有细微的区别。
不同的是,一个包也可以提供一个真正的包,而不仅仅是一个虚拟包。
无论如何,下面将搜索提供包的所有包,并同时打印包名及其提供的包:
grep-available -sPackage -sProvides -FProvides -e '^.'若要查找是否在系统上安装了任何提供给定包(例如邮件传输代理)的包,请使用
grep-status -sPackage -sProvides -FProvides "mail-transport-agent"发布于 2013-10-17 09:12:26
您可以从虚拟包名称的权威列表获取所有虚拟包。至于是否安装了虚拟包,我使用dpkg -l,如果包已经安装,它的退出代码为0,如果没有安装,则退出代码为1。
dpkg -l mail-transport-agent &> /dev/null; echo $?https://unix.stackexchange.com/questions/96309
复制相似问题