在搭建Postgresql测试环境,在安装过程中遇到一个问题,在执行 configure 过程中报以下错误,configure: error: readline library not found,同事说已经在系统中安装 readline 包了,让我帮他看下。 1 环境信息 OS: CentOS release 5.2(Final) PG: postgresql-9.0.0] 2 根据提示,我测试了下 configre命令,果然报这个错 [root@HK81-107postgresql-9.0.0]# ./configure checking build system type... i686-pc-linux-gnu checking host system type... i686-pc-linux-gnu checking which template to use... linux checking whether to build with 64-bit integer date/time support...yes checking whether NLS is wanted... no checking for default port number... 5432 checking for block size... 8kB checking for segment size... 1GB checking for WAL block size... 8kB checking for WAL segment size... 16MB checking for gcc... gcc checking for C compiler default output file name... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking if gcc supports -Wdeclaration-after-statement...yes checking if gcc supports -Wendif-labels... yes checking if gcc supports -fno-strict-aliasing... yes checking if gcc supports -fwrapv... yes checking whether the C compiler still works... yes checking how to run the C preprocessor... gcc -E checking allow thread-safe client libraries... yes checking whether to build with Tcl... no checking whether to build Perl modules... no checking whether to build Python modules... no checking whether to build with GSSAPI support... no checking whether to build with Kerberos 5 support... no checking whether to build with PAM support... no checking whether to build with LDAP support... no checking whether to build with Bonjour support... no checking whether to build with OpenSSL support... no checking for grep that handles long lines and -e.../bin/grep checking for egrep... /bin/grep -E checking for ld used by GCC... /usr/bin/ld checking if the linker (/usr/bin/ld) is GNU ld... yes checking for ranlib... ranlib checking for strip... strip checking whether it is possible to strip libraries... yes checking for ar... ar checking for tar... /bin/tar checking whether ln -s works... yes checking for gawk... gawk checking for a thread-safe mkdir -p... /bin/mkdir -p checking for bison... no configure: WARNING: *** Without Bison you will not be able to build PostgreSQL from CVSnor *** change any of the parser definition files. You can obtain Bison from *** a GNU mirror site. (If you are using theofficial distribution of *** PostgreSQL then you do not need to worry about this, becausethe Bison *** output is pre-generated.) checking for flex... no configure: WARNING: *** Without Flex you will not be able to build PostgreSQL from CVSnor *** change any of the scanner definition files. You can obtain Flex from *** a GNU mirror site. (If you are using theofficial distribution of *** PostgreSQL then you do not need to worry about this because theFlex *** output is pre-generated.) checking for perl... /usr/bin/perl configure: using perl 5.8.8 checking for main in -lm... yes checking for library containing setproctitle... no checking for library containing dlopen... -ldl checking for library containing socket... none required checking for library containing shl_load... no checking for library containing getopt_long... nonerequired checking for library containing crypt... -lcrypt checking for library containing fdatasync... nonerequired checking for library containing gethostbyname_r... nonerequired checking for library containing shmget... none required checking for -lreadline... no checking for -ledit... no configure: error: readline library notfound If you have readline already installed, see config.log for detailson the failure. It is possible the compiler isnt lookingin the proper directory. Use --without-readline to disable readlinesupport. 根据提示,应该是没有安装 readline包。 3 检查系统是否安装 readline 包 [root@HK81-107postgresql-9.0.0]# rpm -qa | grep readline readline-5.1-3.el5 说明系统已经安装了 readline包。 4 通过 yum 搜索相关的readline 包 [root@HK81-107postgresql-9.0.0]# yum search readline lftp.i386 : A sophisticated file transfer program lftp.i386 : A sophisticated file transfer program php-readline.i386 : Standard PHP module provides readline librarysupport lftp.i386 : A sophisticated file transfer program readline.i386 : A library for editing typed commandlines. compat-readline43.i386 : The readline 4.3 library for compatibilitywith older software. readline-devel.i386 : Files needed to develop programs which usethe readline library. readline.i386 : A library for editing typed command lines. 根据提示,有一个包引起了我的注意 "readline-devel",猜想可能与这个包有关。 5 安装 readline-devel 包 [root@HK81-107postgresql-9.0.0]# yum -y install -y readline-devel Setting up Install Process Parsing package install arguments Resolving Dependencies --> Running transaction check ---> Package readline-devel.i386 0:5.1-3.el5 set tobe updated --> Processing Dependency: libtermcap-devel forpackage: readline-devel --> Running transaction check ---> Package libtermcap-devel.i386 0:2.0.8-46.1 setto be updated --> Finished Dependency Resolution Dependencies Resolved ============================================================================= Package Arch Version Repository Size ============================================================================= Installing: readline-devel i386 5.1-3.el5 base 146 k Installing for dependencies: libtermcap-devel i386 2.0.8-46.1 base 56 k Transaction Summary ============================================================================= Install 2Package(s) Update 0Package(s) Remove 0Package(s) Total download size: 201 k Downloading Packages: (1/2): libtermcap-devel-2 100%|=========================| 56kB 00:00 (2/2): readline-devel-5.1 100% |=========================| 146kB 00:00 Running rpm_check_debug Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction Installing:libtermcap-devel ######################### [1/2] Installing:readline-devel ######################### [2/2] Installed: readline-devel.i386 0:5.1-3.el5 Dependency Installed: libtermcap-devel.i386 0:2.0.8-46.1 Complete! 6 再次执行 configure 成功。 7 关于 readline 的解释,来自官网 --without-readline Prevents use of the Readline library (and libedit as well). Thisoption disables command-line editing and history in psql, so it is notrecommended. 说明: 根据步骤2 执行 configure时报错提示,可以加上 "--without-readline" 从而避开这个ERROR, 但Postgresql官方不推荐这么做,所以还是安装吧。 本篇文章来源于 Linux公社网站(www.linuxidc.com) 原文链接:https://www.linuxidc.com/Linux/2012-02/53982.htm