我有一个 PostgreSQL 的 Initdb 实用程序构建,它在运行 Fedora 的远程构建服务器上编译和链接。在我的系统(Ubuntu 13.04 64 位)上,当使用命令运行该实用程序时,将initdb -D /home/me/postgres_files/ -L /home/me/postgres_init_files/
返回以下内容:
initdb: could not obtain information about current user: Success
如果我在本地构建实用程序,则不会发生这种情况,只有从我们的构建场进行远程构建。到目前为止,我已经设法将问题追溯到以下代码initdb.c
:
pw = getpwuid(geteuid());
if (!pw)
{
fprintf(stderr,
_("%s: could not obtain information about current user: %s\n"),
progname, strerror(errno));
exit(1);
}
似乎对 geteuid() 或 getpwuid() 的调用失败了,但是失败的函数没有设置 errno。不幸的是,我不能轻易进入并直接调试该实用程序,因为这只发生在该实用程序的远程构建版本上!
如果有人能对此有所了解,我将不胜感激。
谢谢。