Ubuntu中postgresql-contrib-10提示‘purely virtual’是什么意思?
理解APT中“purely virtual”包的含义(以postgresql-contrib-10为例)
先复盘下你的操作场景:你在Ubuntu环境里依次执行了这些APT命令:
apt-cache show postgresql apt-cache show postgresql-10 apt-cache show postgresql-contrib
但当你运行apt-cache show postgresql-contrib-10时,碰到了这个错误提示:
N: Can't select versions from package 'postgresql-contrib-10' as it is purely virtual
N: No packages found
下面给你拆解下这个“purely virtual”的具体意思:
什么是APT里的“purely virtual”包?
在Ubuntu的APT包管理系统中,**虚拟包(virtual package)**本质上是一个“空名头”——它本身没有任何可安装的文件,主要用来做功能标识:比如多个不同的包都能提供同一种功能,就可以让它们都声明“我提供这个虚拟包”,这样其他依赖该功能的包只需要依赖这个虚拟名称就行,不用绑定到具体某个包。
而purely virtual是虚拟包里的特殊情况:
- 它没有任何真实存在的包(real package)来“认领”它——也就是说,没有任何一个实际可安装的包会声明“我提供postgresql-contrib-10这个虚拟包”。
- 出现这种情况的原因通常有几种:要么这个名称对应的包已经被重命名、合并到其他包中;要么这个版本的包已经被软件源移除(比如PostgreSQL 10是比较旧的版本,部分Ubuntu源可能不再维护);甚至可能这个名称从一开始就没有对应的实际包。
针对你的PostgreSQL场景的解决思路
如果你想安装PostgreSQL 10的contrib组件,建议先确认你的软件源是否包含对应版本的PostgreSQL仓库,然后用下面的命令查找实际存在的包:
apt-cache search postgresql-contrib | grep 10
找到正确的包名称后,再执行安装命令即可。
内容的提问来源于stack exchange,提问作者germain
相关产品推荐
相关产品推荐

