Chinaunix首页 | 论坛 | 博客
  • 博客访问: 926552
  • 博文数量: 146
  • 博客积分: 3321
  • 博客等级: 中校
  • 技术积分: 1523
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-29 10:32
文章分类

全部博文(146)

文章存档

2014年(2)

2013年(5)

2012年(4)

2011年(6)

2010年(30)

2009年(75)

2008年(24)

分类: LINUX

2009-08-25 17:54:14

编译LFS时遇到问题,在网上看到这篇帖子,竟然在这篇帖子中找到了答案,呵呵,这里就拿来分享了。个人认为总结的还不错

1.1)    我需要对 src/Makefile.global 或
        src/Makefile.custom 文件做什么修改以及我还需要做其他修改吗?
1.2)    为什么我在缺少 libreadline 时会有麻烦?
1.3)    [REDHAT] 为什么我缺少 libdl 和 dlfcn.h 时会有麻烦?
1.4)    [SLACKWARE 3.1] 为什么我缺少 libdl 和 dlfcn.h 时会有麻烦?
1.5)    我编译后端时退出了,并且报错说缺少头文件dlfcn.h
1.6)    GCC 抱怨说选项 -fpic 被忽略
1.7)    我收到下面形式的警告
        warning: cast from pointer to integer of different size
1.8)    [SuSE-Linux 4.2-4.4] curses 和 termcap 在那里?
1.9)    为什么我的 ld.so 有问题?
1.10)   为什么我收到 `yy_flush_buffer undefined' 错误?
1.11)   我怎样在一个 a.out 系统上编译 PostgreSQL ?
1.12)   为什么制作带着下面信息退出:
        yacc -d /disk2/PostgreSQL/src/backend/parser/gram.y
        make: /usr/bin/make: cannot execute binary file
1.13)   在 src/Makefile.global 里 X11_LIB 对 libsocket 和 libnsl 的引用在那里?
1.14)   [DEBIAN] libtermcap 在那里?
1.15)   [REDHAT] 我能把 PostgreSQL 做成 RPM 吗?
1.16)   当我试图在 Linux 下编译一个开发版本时,编译带着
        类似下面的信息退出了:
        In file included from /usr/include/sys/sem.h:8,
                 from ipc.c:37:
        /usr/include/asm/bitops.h:32: warning: no previous prototype for Set_bit'
        ....
        make: *** [ipc.o] Error 1
1.17)   当编译 postgres 时,gcc 报告信号 11 并退出。
1.18)   我能否在 MkLinux 里安装 6.1.1?
1.19)   为什么制作退出或崩溃?
1.20)   我如何为 486 或 pentium 处理器做优化?
1.21)   为什么我打印时间时会得到奇怪的结果(例如
        在蜕变测试 'timespan' 时)?
1.22)   为什么我编译 6.3.2 时为什么我没有生成任何 libqp 的共享库?
1.23)   为什么编译失败,并且说 F_BOOLIN,F_BOOLOUT 和 F_BYTEAIN 未定义?
2.1)    在编译 pgtclsh 时,链接器没有找到 libX11
3.1)    在运行象 createuser 这样的脚本时,我收到一个错误,说 _fUnKy_POSTPORT_sTuFf_ 未定义
3.2)    我运行 postmaster 然后系统告诉我 'Bad system call(Core dumped)'(系统调用错误(内核倾倒))
3.3)    当我试图启动 Postmaster,为何我会收到下面形式的错误信息
        Failed Assertion("!(file != 0):(null)", File:
        "/usr/local/PostgreSQL/src/backend/storage/file/fd.c", Line: 257)
        !(file != 0) (0)
        initdb: could not create template database
        initdb: cleaning up.
3.4)    为什么 createuser 不管用?
3.5)    为什么我会收到下面这样的信息:
        IpcMemoryCreate: memKey=155356396 , size=760632 ,
        permission=384IpcMemoryCreate: shmget(..., create, ...)
        failed: Invalid argument
3.6)    为什么 psql 带着下面的错误信息失效了:
        psql: can't load library 'libpq.so.1'
3.7)    其他奇怪的表现
3.8)    当 PostgreSQL 运行时宕掉系统,重起时 Linux
        总是对磁盘进行 fsck。
3.9)    为什么蜕变测试中 Query 32 用了很长时间?
3.10)   为什么在一些日期/时间运算中我得到一些有趣的圆整?
        例如
           select '4 hours'::timespan;
        returning '3 hours 59 minutes 60 seconds'?    

1.1)    我需要对o src/Makefile.global 或
        src/Makefile.custom 文件做什么修改以及我还需要做其他修改吗?

运行 src 目录里面的客户化脚本是修改 makefile 的最简单方法,
        它会为你生成一个 Makefile.custom 。

        你可能需要做的其他修改是替换 2.5.3 Flex,
        因为这个版本有臭虫,通常表现为 createuser 失败(参阅问题 3.4)

        如果你手工修改 makefiles,你*必须*设置下面的变量
                PORTNAME=       linux

       你还需要把下面的变量改变为你自己的安装:
                POSTGRESDIR

       如果你打开了 USE_TCL 选项,你将需要设置下面的内容:
                TCL_INCDIR=
                TCL_LIBDIR=
                TCL_LIB=
                TK_INCDIR=
                TK_LIBDIR=
                TK_LIB=
                X11_INCDIR=
                X11_LIBDIR=
                X11_LIB=

        在我的 Slackware3.0 系统上,这些是:
                TCL_INCDIR=     /usr/include/tcl
                TCL_LIBDIR=     /usr/lib
                TCL_LIB=        -ltcl
                TK_INCDIR=      /usr/include/tcl
                TK_LIBDIR=      /usr/lib
                TK_LIB=         -ltk
                X11_INCDIR=     /usr/include/X11
                X11_LIBDIR=     /usr/X386/lib
                X11_LIB=        -lX11

        你可能还要按照  INSTALL 文件和 Makefile.global 文档里描述的那样做其他修改。


1.2)    为什么我在缺少 libreadline 时会有麻烦?

        Linux 系统通常不自带 GNU readline 库。
        要么确信自己没有在 src/Makefile.global 或 src/Makefile.custom 里激活 readline 选项
        要么把 GNU readline 库装上。

        请注意t Debian Linux (象 FreeBSD 一样)的确自带 readline。

1.3)    [REDHAT] 为什么我缺少 libdl 和 dlfcn.h 时会有麻烦?

        这表明它在编译的最后阶段不能链接到象 dlopen(),dlclose() 等函数上

        libdl 库是用于在运行时动态链接用户支持函数的。
        由于某种原因,这个库在 Redhat 的发布中漏了。
        好象最新的 Redhat 4.0 版本(Colgate,译注:太老了,现在估计大家都没事了。)已经打了补丁。

        RedHat 在他们的 FTP 站上有一个新的 ld.so RPM 包。
        只需要抓取:

                ftp://ftp.redhat.com/pub/redhat/devel/i386/RedHat/RPMS/ld.so-1.7.14-4.i386.rpm

        用通常的方法安装这个 RPM 文件,你就能用了!

        注意!你在安装完这个库以后,在编译前不用重新运行 configure 和进行 make clean

        有一次报告说在升级这个库的时候,因为有程序访问这个库而导致系统崩溃
        (一点也不让人奇怪)。因此,在安装新库之前重起系统,并且尽可能少运行程序
        是个好主意。进入单用户模式可能是最好的方法。

        如果你想用难一点的方法做这些事情,你可以从下面站点获取库和头文件:
        
                ftp://tsx-11.mit.edu/pub/linux/packages/GCC/ld.so-1.7.14.tar.gz

        另外,你可以在下面位置找到预编译的二进制
        distributions/debian/buzz/binary-i386/base/ld.so-1.7.14-4.deb
        在同一个站点,或者按照问题 1.2 给出的指示可以修正 Slackware 3.1 的早期版本
        的同样错误。除非你知道自己在干什么,否则不要用这个方法!



1.4)    [SLACKWARE 3.1] 为什么我缺少 libdl 和 dlfcn.h 时会有麻烦?

        这表明它在编译的最后阶段不能链接到象 dlopen(),dlclose() 等函数上

        参阅问题 1.3 的回答。Slackware 一直到版本 3.0 都提供了这个库和相应头文件
        并且看起来在最新的版本 3.1 里面好象也有这个库了,但是 3.1 的早期版本(早于
        1996年9月9日)里面缺少这个库而且许多 CD-ROM 版本是用第一个 3.1 版本印制的。

        有一次报告说在升级这个库的时候,因为有程序访问这个库而导致系统崩溃
        (一点也不让人奇怪)。因此,在安装新库之前重起系统,并且尽可能少运行程序
        是个好主意。进入单用户模式可能是最好的方法。

        最简单的修补是从最近的 Slackware 版本的 a4 磁盘获取文件 ldso.tgz
        然后在根(/)目录解包这个文件,再

                sh install/doinst.sh

        要完成安装。在这个后面做一次

                ldconfig

        注意!在完成库的安装和重新编译之前,你需要重新运行 configure 和做一次 make clean。

        如果你想手工安装,你首先必须安装文件
        dlfcn.h 到 /usr/include 目录。

        第二,把文件 libdl.so.1.7.14 (或者任何最新的版本)
        安装到 /lib,然后做:

                cd /lib
                ln -sf libdl.so.1.7.14 libdl.so.1
                ln -sf libdl.so.1 libdl.so

        在某些系统上(取决于你的 GCC 的配置),可能还有必要做:

                cd /usr/lib
                ln -sf /lib/libdl.so .

        最后

                ldconfig

        注意!在完成库的安装和重新编译之前,你需要重新运行 configure 和做一次 make clean。


1.5)    M我编译后端时退出了,并且报错说缺少头文件 dlfcn.h

        参阅问题 1.3/1.4 的回答。如果你使用 a.out 的系统,别忘了你必需首先安装
        dld 包(这个包在大多数 a.out 系统上都没有提供),以获取 dlfcn.h。参阅问题 1.11。


1.6)    GCC 抱怨说选项 -fpic 被忽略

        早期的 GCC 可以接受 -fpic 或 -fPIC。
        现在的版本的 GCC (V2.7.2?)要求使用 -fPIC。
        如果你正在使用一个 ELF 版本的 Linux,你可以放心的忽略这个选项,因为 -fPIC 是却省的。

        你可以通过编辑 src/Makefile.global 和修改 CFLAGS_SL 来修正这些。


1.7)    我收到下面形式的警告
        warning: cast from pointer to integer of different size

        这些在早期的 Postgres95 版本中出现并且可以安全的忽略
        PostgreSQL V6.0 应该编译时不带警告,除了那些与系统头文件有关的(
        也可以安全的忽略)。

1.8)    [SuSE-Linux 4.2-4.4]  curses 和 termcap 在那里?

        SuSE-Linux 4.2 有 ncurses 但没有 curses。4.4 好象两个都有。
        SuSE-Linux 的 termcap 库在 /usr/lib/termcap
        而不是在 /usr/lib。

        PostgreSQL (up to V6.0)
        -----------------------
        把 src/Makefile.custom 里面的 CURSES_LIB 的值设置为 -lncurses
        (或者客户化脚本来做这些事情)。
        向 src/Makefile.custom 文件里面加下面的行:

                LDADD_BE+= -L/usr/lib/termcap

        你可能要编辑 src/bin/psql/Makefile 然后修改:
                ifeq ($(PORTNAME), linux)
                   LD_ADD+=
        为:
                ifeq ($(PORTNAME), linux)
                   LD_ADD+= -ltermcap

        PostgreSQL (V6.1)
        -----------------
        configure 脚本不会到 /usr/lib/termcap 里面查找
        termcap 库,因此,当向你询问附加的搜索路径时,你应该把这个路径声明为
        其中之一。

        如果这些不生效(我手头没有 SuSE 以检验这样的处理是否正确)
        那么在运行完 configure 后,你需要编辑
        src/Makefile.global 并向 LDFLAGS 行增加 -ltermcap(在 -lreadline 之后)。(另外,你也可以
        在运行 configure 之前修改 src/Makefile.custom。)

        有些 SuSE 版本只提供 ncurses,因此你可能需要强制使用
        ncurses 而不是 curses —— 通过把
        -lcurses 改为 -lncurses。(据报告对 SuSE 5.1 有效)


1.9)    为什么我的 ld.so 有问题?

        如果你碰到 ld.so 的毛病,在 ELF 里面需要另外一个库来动态链接,
        那么你已经把你的安装和(很有可能是)Linux 的升级搞混了。

        参阅问题 1.3/1.4 的回答。你可能需要安装 ld.so.x.y.z 到 /lib 然后运行 ldconfig。

        最近的稳定的 ld 包的版本是 1.7.14。
        在我写作的时候,版本 1.8.x 的 ld 正处在试验阶段。

1.10)   为什么我收到 `yy_flush_buffer undefined' 错误?

        这个毛病不是 Linux 特有的,但是在老的 Linux 安装里比较常见。
        你必须拥有最近版本的 flex (2.5.2 或更新)来编译
        PostgreSQL。请注意 flex 2.5.3 有一个臭虫:参阅问题 3.4。

1.11)   我怎样在一个 a.out 系统上编译 PostgreSQL ?

        首先,你必须先安装 dld 库。这些可以在
        Sunsite 获取:
        Linux/libs/dld.3.2.7.tar.gz
        (ftp://sunsite.unc.edu/pub/Linux/libs/dld.3.2.7.tar.gz)

        其次,向你的 src/Makefile.custom 里增加下面一行:
                LINUX_ELF=
        (或者使用客户化脚本)

1.12)   为什么制作带着下面信息退出:
        yacc -d /disk2/PostgreSQL/src/backend/parser/gram.y
        make: /usr/bin/make: cannot execute binary file

        这些是早期版本的 Postgres95 的毛病。缺省时
        PostgreSQL 是使用 bison -y 而不是 yacc。

        yacc 通常是通过一个调用 bison -y 的脚本实现的。
        由于某种原因(某个版本的 make? 某个版本的 bash?),make 不能执行这个脚本文件。

        要修补这些,只需要编辑 src/mk/port/postgres.mk.linux
        以及,在该文件的末尾,修改:
                # YACC = bison -y
        为
                YACC = bison -y

1.13)   在 src/Makefile.global 里 X11_LIB 对 libsocket 和 libnsl 的引用在那里?

        这是一个 1.08 里的毛病(那是与 Sun Solaris 相关的)。
        在 1.09 和 6.0 里修补好了。

1.14)   [DEBIAN] libtermcap 在那里?

        Debian Linux 是不带 termcap 库的,而且使用 ncurses
        (它用 terminfo 代替 termcap)。我们不需要修改
        src/bin/psql/Makefile 里面的 CURSES_LIB 变量,因为 Debian 提供了一个
        从 libncurses 到 libcurses 的链接(不象 SuSE-Linux --- 参阅问题 1.8)。

        你可能需要编辑 src/bin/psql/Makefile 并把下面的行:
                ifeq ($(PORTNAME), linux)
                   LD_ADD+= -ltermcap
        改成:
                ifeq ($(PORTNAME), linux)
                   LD_ADD+=


1.15)   [REDHAT] 我能把 PostgreSQL 做成 RPM 吗?

        当然啦!Michal Mosiewicz (~mimo)已经为大家把
        PostgreSQL V6.0 的 Intel 体系的软件包做成了一个 RPM 上载到了
        ftp://ftp.redhat.org/pub/Incoming/Postgres-6.0-1.i386.rpm

        这是一个预编译的版本,源文件 RPM 在我写作(1997年二月3日)还在制作。

1.16)  当我试图在 Linux 下编译一个开发版本时,编译带着类似下面的信息退出了:
        In file included from /usr/include/sys/sem.h:8,
                 from ipc.c:37:
        /usr/include/asm/bitops.h:32: warning: no previous prototype for Set_bit'
        ....
        make: *** [ipc.o] Error 1

        The problem is that Linux provides no prototypes for these
        inline functions. The solution is to go into the
        .../src/backend/storage/ipc directory and edit the Makefile.
        Change the line
           CFLAGS+=$(INCLUDE_OPT)
        to
           CFLAGS+=$(INCLUDE_OPT) -Wno-error

        Do the same in the ../src/backend/storage/lmgr directory.

1.17)   当编译 postgres 时,gcc 报告信号 11 并退出。
        More specifically:
           gcc: Internal compiler error: program cc1 got fatal
                signal 11

        这可能是硬件/内存问题。PortgreSQL 是一个大程序,而大的
        gcc 编译(类似制作 PostgreSQL 或编译内核)象其他几个程序一样
        对内存施加了较高的负荷,导致在平常操作中不出现的错误。轻负荷的
        操作系统不会对硬件有这样高的压力,因此你可能永远不会在 DOS/Window上看到这个毛病。

        关于这个问题的更多信息在:
           

        通过这个 Sig11 FAQ,好象运行在 Cyrix 处理器上的
        Redhat 5.0 gcc 有特别的问题。参阅上面的 URL 获取更多细节!

1.18)   我能否在 MkLinux 里安装 6.1.1?

        Tatsuo Ishii 在 MkLinux DR2.1 升级2 里成功完成了这个工作,做了一个小补丁:
        ftp://ftp.sra.co.jp/pub/cmd/postgres/6.1.1/mklinux.patch.gz

1.19)   为什么制作退出或崩溃?

        有一些人报告说 gmake 要么是提前推出,要么是段错误(seg faulting)。后者被
        发现在 gmake 3.74 上出现 - 升级到 3.76.1 可以解决这个问题。不过,
        3.74 被认为在其他人的安装中工作得很好。简而言之,在报告这个问题之前先
        把 gmake 升级到你能找到的最新版本。

1.20)   我如何为 486 或 pentium 处理器做优化?

        缺省的编译选项不会对 486 或 Pentium 处理器做任何优化。要增加这样的优化,
        编辑 Makefile.custom,并且增加一行:

           CFLAGS+= -m486

        或(对于大多数人还没有开始使用的新的编译器)

           CFLAGS+= -mpentium
        或
           CFLAGS+= -mpentiumpro

1.21)   为什么我打印时间时会得到奇怪的结果(例如在蜕变测试 'timespan' 时)?
        时间显示为:'4 hours 59 mins 60.00 secs'
        而不是 '5 hours'

        这是 Redhat 5.0 附带的 glibc2 库的问题。
        对于 v5.0/hurricane 把你的 glibc 升级为最新 RedHat 版本。
        任何早于 glibc-2.0.7 的库都可能有这个错误。
        
1.22)   为什么我编译 6.3.2 时为什么我没有生成任何 libqp 的共享库?

        v6.3.2 的 Linux 配置有一些最后阶段的破损。
        参阅 ftp://postgresql.org/pub/patches/ 获取几个补丁,
        包括一个 linux_elf 补丁。

1.23)   为什么编译失败,并且说 F_BOOLIN,F_BOOLOUT 和 F_BYTEAIN 未定义?

        实际的信息象下面的东西:

        -I/usr/include/readline -O2 -Wall -Wmissing-prototypes -I..
        -Wno-error -c bootstrap.c -o bootstrap.o
        bootstrap.c:160: `F_BOOLIN' undeclared here (not in a function)
        bootstrap.c:160: initializer element for `Procid[0].inproc' is not
        constant
        bootstrap.c:160: `F_BOOLOUT' undeclared here (not in a function)
        bootstrap.c:160: initializer element for `Procid[0].outproc' is not
        constant
        bootstrap.c:161: `F_BYTEAIN' undeclared here (not in a function)
        bootstrap.c:161: initializer element for `Procid[1].inproc' is not
        constant

        这是一个陷阱,除非你知道为什么会发生这些事情,因为这些常量好象在任何地方都
        没有定义。

        解决方法是在你开始制作前确保 cpp 包含在你的路径里。

        在 Redhat 5.1,cpp 在 /usr/lib/gcc-lib/i386-redhat-linux/2.7.2.3



----------------------------------------------------------------------
第一节:      编译附加的程序
----------------------------------------------------------------------

2.1)    在编译 pgtclsh 时,链接器没有找到 libX11

        向 src/Makefile.custom 增加下面一行
                X11_LIBDIR = /usr/X11R6/lib


----------------------------------------------------------------------
第二节:      运行时问题
----------------------------------------------------------------------

3.1)    在运行象 createuser 这样的脚本时,我收到一个错误,说 _fUnKy_POSTPORT_sTuFf_ 未定义

        在 Postgres V1.06-V1.07 里面有一个臭虫,在 V1.08 及以上版本被修补了。

3.2)    我运行 postmaster 然后系统告诉我 'Bad system call(Core dumped)'(系统调用错误(内核倾倒))

        着表明你没有在你的内核里面编译进共享内存支持。你需要重新编译 Linux 内核并增加这个特性。


3.3)    当我试图启动 Postmaster,为何我会收到下面形式的错误信息
        Failed Assertion("!(file != 0):(null)", File:
        "/usr/local/PostgreSQL/src/backend/storage/file/fd.c", Line: 257)
        !(file != 0) (0)
        initdb: could not create template database
        initdb: cleaning up.

        你对文件 /dev/null 的权限不够。

        ls -l /dev/null 应该显示类似下面的东西:

                crw-rw-rw-  1 root  wheel    2,   2 Oct  8 18:41 /dev/null

        用下面的命令修正权限:

                chmod a+rw /dev/null

3.4)    为什么 createuser 不管用?

        版本 2.5.3 的 GNU flex 和 createuser 有问题。
        你可以把 flex 的版本降为 V2.5.2,升为 V2.5.4,
        或者对 V2.5.3 应用在 doc/README.flex 里面写出的补丁。
        你可以从下面站点获取 V2.5.4
        ftp://prep.ai.mit.edu/pub/gnu/flex-2.5.4.tar.gz

3.5)    为什么我会收到下面这样的信息:
        IpcMemoryCreate: memKey=155356396 , size=760632 ,
        permission=384IpcMemoryCreate: shmget(..., create, ...)
        failed: Invalid argument

        你的 Linux 内核没有 IPC 支持。你必须重新编译内核
        并打开这个选项。

3.6)    为什么 psql 带着下面的错误信息失效了:
        psql: can't load library 'libpq.so.1'

Psql 被编译成动态地与 libpq 库进行联接。

要解决这个问题,你应该以 root 身份登陆并且编辑文件
/etc/ld.so.conf
在该文件最后增加一行,给出 PostgreSQL 库目录的名称
(你的 PostgreSQL 安装的 lib 子目录的名称)然后运行
/sbin/ldconfig -v

        另外,(也是在你没有 root 权限的情况下),你可以使用
        LD_LIBRARY_PATH 环境变量。

        LD_LIBRARY_PATH 变量包含一个冒号分隔的共享库搜索路径列表。
        这个列表在 ldconfig 声明的库(路径)之前首先被搜索。

        因此在 Bash 里,你将做类似下面的设置:
                export LD_LIBRARY_PATH='PathToPGSQL'/lib
        或者,如果你使用 tcsh
                setenv LD_LIBRARY_PATH 'PathToPGSQL'/lib
        把 'PathToPGSQL' 你的 PostgreSQL 的正确的顶级路径

        请注意,你可以对一个动态链接的可执行文件使用 ldd 列出该可执行文件
        所依赖的所有共享库


3.7)    其他奇怪的表现

        我不知道如果没有一样东西工作正常是什么症状,不过有人曾指出我们要
        注意让动态装载器装载正确版本的 libpq 库。如果你在库路径里面存在旧版本的库
        (例如在 /usr/lib),那么有可能装载这些旧库,而不是你想装载的新库。确保
        你已经把它们删除了并且参照问题 Q3.6 获取关于装载库的详细信息。

3.8)    当 PostgreSQL 运行时宕掉系统,重起时 Linux 总是对磁盘进行 fsck。

        有一些人报告说出现这个现象,并且看起来这是因为人们按照 INSTALL
        文档建议的那样通过 /etc/inittab 运行 PostgreSQL 的原因。

        因此我们建议你通过一个 rc 脚本来运行 postmaster。在一个类似 Slackware 的版本里,
        你要修改 /etc/rc.d/rc.local 以启动 postmaster。在一个类似 RedHat 的版本里,
        你要在 /etc/rc.d/rc3.d 里以 /etc/rc.d/init.d 骨架文件为基础创建一个 SysV 风格
        的脚本。

        有一个在 contrib/linux/postgres.init 里的例子脚本

        下面是另外一个 John Robinson 提供的另外一个例子文件,
        你要根据需要做一定的修改:

#!/bin/sh
#
# postgreSQL.init This shell script takes care of starting and stopping
#               the PostgreSQL postmaster.
#

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0

# See how we were called.
case "$1" in
  start)
        # Start daemons.
        echo -n "Starting postgres Postmaster daemon:"
        if [ -z "`pidofproc postmaster`" ]
        then
                su postgres -c "/usr/local/pgsql/bin/postmaster -D /home/postgreSQL/data -p 5432 &"
                echo -n " postmaster"
        else
                echo -n " (already running)"
        fi
        echo
        touch /var/lock/subsys/postgres
        ;;
  stop)
        # Stop daemons.
        echo -n "Shutting down postgres Postmaster daemon: "
        killall -TERM postmaster 2>;/dev/null
        killall -TERM postgres 2>;/dev/null
        echo
        rm -f /var/lock/subsys/postgres
        ;;
  *)
        echo "Usage: postgres {start|stop}"
        exit 1
esac

exit 0



3.9)    为什么蜕变测试中 Query 32 用了很长时间?

        这是一个只有 linux 机器里才跳出来的蜕变脚本的臭虫。
        据我所知有两个绕过去的办法
        (是 Tatsuo Ishii 告诉我的):

        1. 修改 regress.sh 里下面的行:
                time postgres -texecutor -tplanner -Q bench  & bench.out.perquery



3.10)   为什么在一些日期/时间运算中我得到一些有趣的圆整?例如
           select '4 hours'::timespan;
        returning '3 hours 59 minutes 60 seconds'?

        你正使用新的 glibc2 库,而且版本早于 2.0.7。这是一个该库的数学圆整问题。升级你的库。
阅读(2709) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~