首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何知道虚拟包是否在Debian系统上“安装”?

我如何知道虚拟包是否在Debian系统上“安装”?
EN

Unix & Linux用户
提问于 2013-10-16 13:24:29
回答 3查看 7.6K关注 0票数 18

有些包有一个Provides:头。例如,Debian上的包postfixProvides: mail-transport-agent

物理上不存在的包mail-transport-agent被认为是“虚拟”包。

在基于Debian的系统上,

如何知道给定的虚拟包是否已“安装”(或“提供”)?我可以列出每个“提供”的虚拟包吗?

提示:若要列出已安装或未安装的所有现有虚拟包,请执行:aptitude search "~v"

EN

回答 3

Unix & Linux用户

回答已采纳

发布于 2013-10-17 00:40:22

要列出提供mail-transport-agent的包,请执行以下操作:

代码语言:javascript
复制
$ 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'只列出已安装的软件包(如果有的话)。

若要列出由当前安装的软件包提供的所有虚拟包,请执行以下操作:

代码语言:javascript
复制
aptitude search '~Rprovides:~i ~v'

有关搜索模式的解释,请参见智能手册

票数 17
EN

Unix & Linux用户

发布于 2013-10-16 14:53:08

这里的问题是,虚拟包和其他包提供的包之间有细微的区别。

不同的是,一个包也可以提供一个真正的包,而不仅仅是一个虚拟包。

无论如何,下面将搜索提供包的所有包,并同时打印包名及其提供的包:

代码语言:javascript
复制
grep-available -sPackage  -sProvides -FProvides -e '^.'

若要查找是否在系统上安装了任何提供给定包(例如邮件传输代理)的包,请使用

代码语言:javascript
复制
grep-status -sPackage -sProvides -FProvides "mail-transport-agent"
票数 12
EN

Unix & Linux用户

发布于 2013-10-17 09:12:26

您可以从虚拟包名称的权威列表获取所有虚拟包。至于是否安装了虚拟包,我使用dpkg -l,如果包已经安装,它的退出代码为0,如果没有安装,则退出代码为1。

代码语言:javascript
复制
dpkg -l mail-transport-agent &> /dev/null; echo $?
票数 -1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/96309

复制
相关文章

相似问题

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