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"-函数,在您的情况下它是 faccessat
。 libc 隐藏了这个变化,但是如果 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 机器上启动了安装程序,它似乎工作得很好。
感谢您的帮助。
此致,
我正在尝试在 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"-函数,在您的情况下它是 faccessat
。 libc 隐藏了这个变化,但是如果 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 机器上启动了安装程序,它似乎工作得很好。
感谢您的帮助。 此致,