1

我的测试程序运行良好。我可以创建一个客户端和一个服务器并将它们相互运行。我可以设置我的 KRB5_CONFIG 环境变量并使用本地配置进行测试。

出于某种原因,当我将代码放在我们的生产软件中时,它失败了。即使我将 main() 函数剥离为仅使用硬编码名称调用 gss_import_name() ,我最终也会收到消息“无法打开配置文件”。

如果我运行 truss,那么我会看到很多 Oracle 正在运行。它尝试打开许多不同的 Oracle 跟踪文件。它也试图打开

/krb5/krb.conf

而不是我指定的文件。

就好像 Oracle 给了我们错误的 gss,或者我们庞大而复杂的构建系统中的其他选项。我注意到 -L/usr/lib/sparcv9 虽然这是在我的 -lgss 之后,如果这很重要的话(因为我经常在 C 中工作太久了!)。该目录中的 libgss.so.1 比 /usr/lib 中的大 - 尽管将该选项放入我的测试程序的链接命令中并不会破坏它。

有什么帮助吗?

谢谢 - 理查德

4

3 回答 3

1

这解决了对我们来说似乎类似的问题:

export KRB5_CONFIG=/etc/krb5.conf

如果尚未设置此环境变量,Oracle 似乎确实可能错误地设置了它。

$ grep -r KRB5_CONFIG $ORACLE_HOME 
Binary file /usr/lib/oracle/11.1.0.1/client64/lib/libclntsh.so matches 
Binary file /usr/lib/oracle/11.1.0.1/client64/lib/libclntsh.so.11.1 matches 
$ grep -r '/krb5/krb.conf' $ORACLE_HOME 
Binary file /usr/lib/oracle/11.1.0.1/client64/lib/libclntsh.so matches 
Binary file /usr/lib/oracle/11.1.0.1/client64/lib/libclntsh.so.11.1 matches
于 2012-12-12T14:35:30.390 回答
0

我发现 Oracle 库包含 GSS 的实现。为了使我的代码正常工作,我确保在链接任何 Oracle 库之前链接了“-lgss”。

我还没有测试过这是否会在单点登录中扰乱 Oracle,因为我们使用 Oracle 的用户名和密码。这很好用。

于 2011-08-02T13:31:47.223 回答
0

我在 HP-UX 11.31 上遇到了与 Oracle 11.2.0.4.0 完全相同的问题,为此浪费了几乎一整天的时间。putenv确实,糟糕的 Oracle 库运行起来,而 Richard Corfield/opt/krb5/krb.conf的提示甚至使应用程序崩溃。唯一的解决方法是创建符号链接。我已针对该问题向 Oracle 创建了服务请求。

更新 (2014-06-02):我收到了来自 Oracle 的更新。他们确认了这个错误。似乎有一个私有 GSS-API 正在重新定义符号。

Bug 10184681 - ORACLE NEEDS TO USE VERSIONED SYMBOLS TO AVOID EXTERNAL SYMBOL CONFLICTS

此问题自 2010 年 10 月以来一直开放。糟糕的。

于 2014-03-27T13:38:45.723 回答