我有一个为 Mapserver 6.2.1 自行创建的 rpm,我想支持 Oracle,但要让它全部正常工作我遇到了很多困难。
我已将 oracle-instantclient12.1-basic-12.1.0.1.0-1.x86_64 作为 rpm 安装,并将 sdk 和 sqlplus 作为 zip 文件安装在我的 ORACLE_HOME 中。这似乎是确保 sdk 文件位于正确位置以便地图服务器识别的唯一方法。
因此,我的地图服务器 rpm 已构建,但当我尝试将其安装在构建服务器上时,它会抱怨:
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package mapserver.x86_64 0:6.2.1-2 will be updated
--> Processing Dependency: mapserver = 6.2.1-2 for package: mapserver-perl-6.2.1-2.x86_64
--> Processing Dependency: mapserver = 6.2.1-2 for package: mapserver-python-6.2.1-2.x86_64
---> Package mapserver.x86_64 0:6.2.1-12.el6 will be an update
--> Processing Dependency: libclntsh.so.12.1()(64bit) for package: mapserver-6.2.1-12.el6.x86_64
--> Running transaction check
---> Package mapserver.x86_64 0:6.2.1-12.el6 will be an update
--> Processing Dependency: libclntsh.so.12.1()(64bit) for package: mapserver-6.2.1-12.el6.x86_64
---> Package mapserver-perl.x86_64 0:6.2.1-2 will be updated
---> Package mapserver-perl.x86_64 0:6.2.1-12.el6 will be an update
---> Package mapserver-python.x86_64 0:6.2.1-2 will be updated
---> Package mapserver-python.x86_64 0:6.2.1-12.el6 will be an update
--> Processing Dependency: libclntsh.so.12.1()(64bit) for package: mapserver-python-6.2.1-12.el6.x86_64
--> Finished Dependency Resolution
Error: Package: mapserver-6.2.1-12.el6.x86_64 (geodata)
Requires: libclntsh.so.12.1()(64bit)
Error: Package: mapserver-python-6.2.1-12.el6.x86_64 (geodata)
Requires: libclntsh.so.12.1()(64bit)
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest
显然,libclntsh.so.12.1 已经通过 yum 安装,并且位于与构建包时完全相同的位置。
我究竟做错了什么?
答案1
确认部分RPM
看起来 yum/RPM 正在抱怨,因为未满足要求。我通常会使用此命令来确认文件处于 RPM 的控制之下。
$ locate libclntsh
如果这返回一个路径,则检查 RPM 以查看它是否控制它:
$ rpm -qf <path from locate command>
如果 RPM 不控制该文件,那么它是否在系统上并不重要,从 RPM 的角度来看,它没有安装。
类似的问题?
我发现这个线程看起来与您遇到的问题相同。该线程唯一切实的建议是确保您正在使用的文件位于本地系统上。我不认为这是你的问题,但无论如何看看这个帖子,可能会给你带来一些启发。
答案2
实际上你的问题有两个方面。这不是文件 libclntsh.so.12.1 是否安装在您的机器上的问题,而是任何当前启用的存储库中的任何软件包是否提供设施“libclntsh.so.12.1()(64bit)”的问题
因此,通过查询该途径yum whatprovides 'libclntsh.so.12.1()(64bit)'
,您将看到是否有任何软件包提供了此功能。也许您禁用了一个存储库?
问题的另一部分“为什么 yum 继续抱怨”:因为默认情况下 yum 总是会运行百胜检查确保 rpm 数据库的一致性并报告任何冲突或缺少依赖项。这与 yum 保存的事务历史记录紧密相关能被禁用,尽管有很多副作用。查看人 yum.conf和选项历史记录