Sybase 12.5 安装 (SunOS) 上的错误系统调用(核心转储)

Bad System Call (core dumped) on Sybase 12.5 installation (SunOS)

我正在尝试在 Sun OS Solaris 11 机器上安装 Sybase ASE 12.5.4,但在启动安装文件时收到以下消息:

-bash-4.1$ ./setup
InstallShield Wizard

Initializing InstallShield Wizard...

Searching for Java(tm) Virtual Machine...
Bad System Call (core dumped)

您知道是什么原因造成的吗?我想 运行 对此进行跟踪以查看究竟缺少什么,但我找不到如何进行。

感谢您的帮助。 干杯

不要在生产系统上使用这个 hack!

许多系统调用在 Solaris 11 中被弃用,access 似乎被删除:

$ grep access /usr/include/sys/syscall.h 
#define SYS_faccessat   45

其中一些仍然可以从 Solaris 10 品牌区访问,一些似乎永远消失了。相反,您必须使用带有 AT_FDCWD 参数的 "at"-函数,在您的情况下它是 faccessatlibc 隐藏了这个变化,但是如果 Sybase 带来了他们自己的 libc 事情就变糟了,如果他们静态地 link ,它更糟。

如果 access 是他们自己的 libc 中的共享库函数,您仍然可以使用 LD_PRELOAD hack 解决该问题。写入以下来源:

#include <unistd.h>
#include <sys/fcntl.h>

int access(const char *fname, int amode) {
        return (faccessat(AT_FDCWD, fname, amode, 0));
}

使用 GCC 或 Solaris Studio(取决于 Sybase 使用的,可能是 Solaris Studio)将其编译到共享库中:

$ gcc -shared -fPIC xaccess.c -o libaccess.so

导出LD_PRELOAD变量:

$ export LD_PRELOAD=./libaccess.so

并祈祷好运,因为它可能会在另一个系统调用时失败,或者您使用了错误的编译器等。请注意,Sybase 二进制文件也可能 运行 不正确!

我是否警告过生产系统上的黑客攻击?相反,使用品牌 Solaris 10 区域或 Solaris 10 LDoms/VMs

谢谢大家的回复。

myaut 说得对:

Many system calls were deprecated in Solaris 11, access seem to be deleted

因此,我的问题似乎与 Sybase ASE 12.5.4 和 Solaris 11 之间的不兼容有关,如 link 所示:http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.dc35889_1254/html/installsol/X22779.htm

Sybase ASE 12.5.4 与 Solaris 2.8(因此与 Solaris 8)兼容,我从 SAP 论坛得知它与 Solaris 9 100% 兼容,而且很可能也与 Solaris 10 兼容,但很明显,它不兼容似乎与 Solaris 11 一起使用。

我已经成功地从 Solaris 10 机器上启动了安装程序,它似乎工作得很好。

感谢您的帮助。 此致,