yum:两个存储库中的相同软件包,强制从不同的存储库安装软件包

yum:两个存储库中的相同软件包,强制从不同的存储库安装软件包

我正在开发一个 PostgresDB 插件。该插件在 Centos 6.3 中的 Postgres 中运行。为了能够编译我的项目,我必须安装来自 epel 存储库的一些库和来自 rpmforge 的一些库。有趣的是,一些软件包在两个存储库中重复,例如:

# yum whatprovides postgis

Loaded plugins: fastestmirror, presto, priorities, refresh-packagekit
Loading mirror speeds from cached hostfile
 * Webmin: download.webmin.com
 * base: mirror2.hs-esslingen.de
 * epel: mirror.awanti.com
 * extras: mirror2.hs-esslingen.de
 * rpmforge: mirror.nl.leaseweb.net
 * updates: mirror.netcologne.de
postgis-1.5.3-1.el6.x86_64 : Geographic Information Systems Extensions to
                           : PostgreSQL
Repo        : epel
Matched from:



postgis-1.3.6-1.el6.rf.x86_64 : Geographic Information Systems Extensions to
                              : PostgreSQL
Repo        : rpmforge
Matched from:

现在我的项目可以编译,但是没有链接缺少的引用:

/usr/pgsql-9.1/lib/postgis-1.5.so: undefined reference to `accumArrayResult'
/usr/pgsql-9.1/lib/postgis-1.5.so: undefined reference to `TupleDescGetAttInMetadata'
/usr/pgsql-9.1/lib/postgis-1.5.so: undefined reference to `repalloc'
/usr/pgsql-9.1/lib/postgis-1.5.so: undefined reference to `SPI_exec'
/usr/pgsql-9.1/lib/postgis-1.5.so: undefined reference to `init_MultiFuncCall'

这很可能意味着一些包混淆了:一些是从一个存储库安装的,一些是来自另一个存储库。

问题:(i)我如何告诉 yum 从一个存储库安装软件包,然后从另一个存储库重新安装(以查看链接错误是否会消失);(ii)我如何查看系统上的哪些软件包是从一个存储库安装的,哪些软件包是从另一个存储库安装的?

答案1

yum list installed将告诉您从哪个 repo 安装给定的包,例如:

bonnie++.x86_64                     1.96-2.el6                  @epel/6.2  

要选择安装哪个变体,只需从列表中使用要安装的变体的确切名称whatprovides

yum install postgis-1.3.6-1.el6.rf.x86_64

有关详细信息,请参阅specify package names部分man yum

答案2

要从一个软件包中安装软件包,请排除 /etc/yum.repos.d/epel 或 /etc/yum.repos.d/rpmforge 文件中的软件包。

排除= < 包名称 >

在最后添加,如果需要,可以添加多行。

安装的软件包应该列在 /var/log/yum.log 中

相关内容