zoukankan      html  css  js  c++  java
  • 【转载】sqlplus中上下方向键回调历史命令--rlwrap安装

    rlwrap 可用来支持Oracle下sqlplus历史命令的回调功能,提高效率。
    1、下载
    从http://utopia.knoware.nl/~hlub/uck/rlwrap/下载rlwrap-0.37.tar.gz,然后上传到相应目录
    0.37版本在redhat6上安装的时候会报没有依赖包,其实是高版本的依赖包软件找不到,不想摆弄了。我在网上其他地方搜了一个 rlwrap-0.42,可以在redhat6上直接装。
     
    2.安装
    2.1主要步骤是:
    ./configure
    make
    make install
     
    2.2下面包含了具体的安装调试信息
    [root@localhost soft]# gzip -d rlwrap-0.37.tar.gz
    [root@localhost soft]# tar -xvf rlwrap-0.37.tar
    [root@localhost rlwrap-0.37]# ./configure
    checking build system type... i686-pc-Linux-gnu
    checking host system type... i686-pc-linux-gnu
    checking for a BSD-compatible install... /usr/bin/install -c
    checking whether build environment is sane... yes
    checking for a thread-safe mkdir -p... /bin/mkdir -p
    checking for gawk... gawk
    checking whether make sets $(MAKE)... yes
    checking whether make sets $(MAKE)... (cached) yes
    checking whether build environment is sane... yes
    checking for style of include used by make... GNU
    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 dependency style of gcc... gcc3
    checking how to run the C preprocessor... gcc -E
    checking for grep that handles long lines and -e... /bin/grep
    checking for egrep... /bin/grep -E
    checking for ANSI C header files... yes
    checking for sys/types.h... yes
    checking for sys/stat.h... yes
    checking for stdlib.h... yes
    checking for string.h... yes
    checking for memory.h... yes
    checking for strings.h... yes
    checking for inttypes.h... yes
    checking for stdint.h... yes
    checking for unistd.h... yes
    checking minix/config.h usability... no
    checking minix/config.h presence... no
    checking for minix/config.h... no
    checking whether it is safe to define __EXTENSIONS__... yes
    checking for gcc... (cached) gcc
    checking whether we are using the GNU C compiler... (cached) yes
    checking whether gcc accepts -g... (cached) yes
    checking for gcc option to accept ISO C89... (cached) none needed
    checking dependency style of gcc... (cached) gcc3
    checking how to run the C preprocessor... gcc -E
    checking for perl... /usr/bin/perl
    checking for strip... strip
    checking for ANSI C header files... (cached) yes
    checking for sys/wait.h that is POSIX.1 compatible... yes
    checking errno.h usability... yes
    checking errno.h presence... yes
    checking for errno.h... yes
    checking fcntl.h usability... yes
    checking fcntl.h presence... yes
    checking for fcntl.h... yes
    checking libutil.h usability... no
    checking libutil.h presence... no
    checking for libutil.h... no
    checking for stdlib.h... (cached) yes
    checking for string.h... (cached) yes
    checking sched.h usability... yes
    checking sched.h presence... yes
    checking for sched.h... yes
    checking sys/ioctl.h usability... yes
    checking sys/ioctl.h presence... yes
    checking for sys/ioctl.h... yes
    checking for sys/wait.h... (cached) yes
    checking sys/resource.h usability... yes
    checking sys/resource.h presence... yes
    checking for sys/resource.h... yes
    checking stddef.h usability... yes
    checking stddef.h presence... yes
    checking for stddef.h... yes
    checking termios.h usability... yes
    checking termios.h presence... yes
    checking for termios.h... yes
    checking for unistd.h... (cached) yes
    checking for stdint.h... (cached) yes
    checking time.h usability... yes
    checking time.h presence... yes
    checking for time.h... yes
    checking getopt.h usability... yes
    checking getopt.h presence... yes
    checking for getopt.h... yes
    checking regex.h usability... yes
    checking regex.h presence... yes
    checking for regex.h... yes
    checking curses.h usability... no
    checking curses.h presence... no
    checking for curses.h... no
    checking termcap.h usability... no
    checking termcap.h presence... no
    checking for termcap.h... no
    checking for term.h... no
    checking for ncurses/term.h... no
    checking argument type of tputs putc function... char
    checking whether your getopt() correctly understands double colons in option string... yes
    checking for an ANSI C-conforming const... yes
    checking for pid_t... yes
    checking whether time.h and sys/time.h may both be included... yes
    checking whether gcc needs -traditional... no
    checking return type of signal handlers... void
    checking for getopt_long... yes
    checking for getopt_long... (cached) yes
    checking for isastream... yes
    checking for mkstemp... yes
    checking for pselect... yes
    checking for putenv... yes
    checking for readlink... yes
    checking for sched_yield... yes
    checking for setenv... yes
    checking for setitimer... yes
    checking for setsid... yes
    checking for setrlimit... yes
    checking for sigaction... yes
    checking for snprintf... yes
    checking for strlcpy... no
    checking for strlcat... no
    checking for strnlen... yes
    checking for system... yes
    checking for openpty in -lutil... yes
    checking for openpty... yes
    checking for getpty... no
    checking for grantpt... yes
    checking for unlockpt... yes
    checking for getpt... yes
    checking for pty/tty type... checking pty.h usability... yes
    checking pty.h presence... yes
    checking for pty.h... yes
    OPENPTY
    configure: checking for pty ranges...
    checking for tgetent... no
    checking for tgetent in -lcurses... yes
    checking for readline in -lreadline... no
    configure: error:
    You need the GNU readline library(ftp://ftp.gnu.org/gnu/readline/ ) to build
    this program!
     
    [root@localhost rlwrap-0.37]# make
    make: *** No targets specified and no makefile found.  Stop.
    出现上面错误是因为缺少三个安装包:
    libtermcap-devel-2.0.8-39.i386.rpm
    readline-4.3-13.i386.rpm
    readline-devel-4.3-13.i386.rpm
    以上安装包在安装光盘中可以找到。
    [root@localhost rlwrap-0.37]# rpm -qa|grep read
    readline-4.3-13
    安装以下三个包:
    [root@localhost rpms]# rpm -Uvh readline*
    [root@localhost rpms]# rpm -ivh libtermcap-devel-2.0.8-39.i386.rpm
    检查是否安装成功:
    [root@localhost rpms]# rpm -qa|grep readline
    readline-4.3-13
    readline-devel-4.3-13
    [root@localhost rpms]# rpm -qa|grep libter
    libtermcap-2.0.8-39
    libtermcap-devel-2.0.8-39
    [root@localhost rpms]#
    重新安装:
    [root@localhost rlwrap-0.37]# ./configure
    [root@localhost rlwrap-0.37]# make
    make  all-recursive
    make[1]: Entering directory `/soft/rlwrap-0.37'
    Making all in doc
    make[2]: Entering directory `/soft/rlwrap-0.37/doc'
    sed -e 's#@DATADIR@#/usr/local/share#'  rlwrap.man > rlwrap.1
    make[2]: Leaving directory `/soft/rlwrap-0.37/doc'
    Making all in src
    make[2]: Entering directory `/soft/rlwrap-0.37/src'
    gcc -DHAVE_CONFIG_H -I. -I..    -DDATADIR="/usr/local/share"  -g -O2 -MT main.o -MD -MP -MF .deps/main.Tpo -c -o main.o main.c
    mv -f .deps/main.Tpo .deps/main.Po
    gcc -DHAVE_CONFIG_H -I. -I..    -DDATADIR="/usr/local/share"  -g -O2 -MT signals.o -MD -MP -MF .deps/signals.Tpo -c -o signals.o signals.c
    mv -f .deps/signals.Tpo .deps/signals.Po
    gcc -DHAVE_CONFIG_H -I. -I..    -DDATADIR="/usr/local/share"  -g -O2 -MT readline.o -MD -MP -MF .deps/readline.Tpo -c -o readline.o readline.c
    mv -f .deps/readline.Tpo .deps/readline.Po
    gcc -DHAVE_CONFIG_H -I. -I..    -DDATADIR="/usr/local/share"  -g -O2 -MT pty.o -MD -MP -MF .deps/pty.Tpo -c -o pty.o pty.c
    mv -f .deps/pty.Tpo .deps/pty.Po
    gcc -DHAVE_CONFIG_H -I. -I..    -DDATADIR="/usr/local/share"  -g -O2 -MT completion.o -MD -MP -MF .deps/completion.Tpo -c -o completion.o completion.c
    mv -f .deps/completion.Tpo .deps/completion.Po
    gcc -DHAVE_CONFIG_H -I. -I..    -DDATADIR="/usr/local/share"  -g -O2 -MT term.o -MD -MP -MF .deps/term.Tpo -c -o term.o term.c
    mv -f .deps/term.Tpo .deps/term.Po
    gcc -DHAVE_CONFIG_H -I. -I..    -DDATADIR="/usr/local/share"  -g -O2 -MT ptytty.o -MD -MP -MF .deps/ptytty.Tpo -c -o ptytty.o ptytty.c
    mv -f .deps/ptytty.Tpo .deps/ptytty.Po
    gcc -DHAVE_CONFIG_H -I. -I..    -DDATADIR="/usr/local/share"  -g -O2 -MT utils.o -MD -MP -MF .deps/utils.Tpo -c -o utils.o utils.c
    mv -f .deps/utils.Tpo .deps/utils.Po
    gcc -DHAVE_CONFIG_H -I. -I..    -DDATADIR="/usr/local/share"  -g -O2 -MT string_utils.o -MD -MP -MF .deps/string_utils.Tpo -c -o string_utils.o string_utils.c
    string_utils.c: In function `colourless_strlen':
    string_utils.c:626: warning: assignment discards qualifiers from pointer target type
    mv -f .deps/string_utils.Tpo .deps/string_utils.Po
    gcc -DHAVE_CONFIG_H -I. -I..    -DDATADIR="/usr/local/share"  -g -O2 -MT malloc_debug.o -MD -MP -MF .deps/malloc_debug.Tpo -c -o malloc_debug.o malloc_debug.c
    mv -f .deps/malloc_debug.Tpo .deps/malloc_debug.Po
    gcc -DHAVE_CONFIG_H -I. -I..    -DDATADIR="/usr/local/share"  -g -O2 -MT filter.o -MD -MP -MF .deps/filter.Tpo -c -o filter.o filter.c
    mv -f .deps/filter.Tpo .deps/filter.Po
    gcc -DDATADIR="/usr/local/share"  -g -O2   -o rlwrap main.o signals.o readline.o pty.o completion.o term.o ptytty.o utils.o string_utils.o malloc_debug.o filter.o  -lutil  -lreadline -lcurses
    make[2]: Leaving directory `/soft/rlwrap-0.37/src'
    Making all in filters
    make[2]: Entering directory `/soft/rlwrap-0.37/filters'
    make[2]: Nothing to be done for `all'.
    make[2]: Leaving directory `/soft/rlwrap-0.37/filters'
    make[2]: Entering directory `/soft/rlwrap-0.37'
    make[2]: Nothing to be done for `all-am'.
    make[2]: Leaving directory `/soft/rlwrap-0.37'
    make[1]: Leaving directory `/soft/rlwrap-0.37'
    [root@localhost rlwrap-0.37]#
    [root@localhost rlwrap-0.37]# make install
    Making install in doc
    make[1]: Entering directory `/soft/rlwrap-0.37/doc'
    make[2]: Entering directory `/soft/rlwrap-0.37/doc'
    make[2]: Nothing to be done for `install-exec-am'.
    test -z "/usr/local/share/man/man1" || /bin/mkdir -p "/usr/local/share/man/man1"
     /usr/bin/install -c -m 644 rlwrap.1 '/usr/local/share/man/man1'
    make[2]: Leaving directory `/soft/rlwrap-0.37/doc'
    make[1]: Leaving directory `/soft/rlwrap-0.37/doc'
    Making install in src
    make[1]: Entering directory `/soft/rlwrap-0.37/src'
    make[2]: Entering directory `/soft/rlwrap-0.37/src'
    test -z "/usr/local/bin" || /bin/mkdir -p "/usr/local/bin"
      /usr/bin/install -c rlwrap '/usr/local/bin'
    make[2]: Nothing to be done for `install-data-am'.
    make[2]: Leaving directory `/soft/rlwrap-0.37/src'
    make[1]: Leaving directory `/soft/rlwrap-0.37/src'
    Making install in filters
    make[1]: Entering directory `/soft/rlwrap-0.37/filters'
    make[2]: Entering directory `/soft/rlwrap-0.37/filters'
    make[2]: Nothing to be done for `install-exec-am'.
    test -z "/usr/local/share/man/man3" || /bin/mkdir -p "/usr/local/share/man/man3"
     /usr/bin/install -c -m 644 RlwrapFilter.3pm '/usr/local/share/man/man3'
    make[2]: Leaving directory `/soft/rlwrap-0.37/filters'
    make[1]: Leaving directory `/soft/rlwrap-0.37/filters'
    make[1]: Entering directory `/soft/rlwrap-0.37'
    make[2]: Entering directory `/soft/rlwrap-0.37'
    make[2]: Nothing to be done for `install-exec-am'.
    test -z "/usr/local/share/rlwrap" || /bin/mkdir -p "/usr/local/share/rlwrap"
    /bin/mkdir -p '/usr/local/share/rlwrap/filters'
     /usr/bin/install -c -m 644  filters/README filters/RlwrapFilter.pm filters/RlwrapFilter.3pm filters/count_in_prompt filters/pipeto filters/logger filters/null filters/unbackspace filters/pipeline filters/ftp_filter filters/history_format filters/simple_macro filters/template filters/scrub_prompt filters/paint_prompt filters/censor_passwords filters/listing '/usr/local/share/rlwrap/filters'
    /bin/mkdir -p '/usr/local/share/rlwrap/completions'
     /usr/bin/install -c -m 644  completions/testclient completions/coqtop '/usr/local/share/rlwrap/completions'
    make  install-data-hook
    make[3]: Entering directory `/soft/rlwrap-0.37'
    chmod a+x /usr/local/share/rlwrap/filters/* 
    make[3]: Leaving directory `/soft/rlwrap-0.37'
    make[2]: Leaving directory `/soft/rlwrap-0.37'
    make[1]: Leaving directory `/soft/rlwrap-0.37'
    [root@localhost rlwrap-0.37]#
    3、验证安装结果
    [root@localhost rlwrap-0.37]#su – oracle
    [oracle@localhost ~]$ rlwrap
    4、安装报错
        rlwrap: error while loadingshared libraries: libreadline.so.5: cannot open shared object file: No suchfile or directory
    解决办法:
    在oracle下的.bash_profile中$PATH路径中增加/usr/local/bin路径
        PATH=/usr/local/bin:$PATH;export PATH
    5、编辑oracle用户下的.bash_profile
    增加
    alias sqlplus=’rlwrap sqlplus’
    alias rman=’rlwrap rman’
    6.其他
    临时解决办法
    避免 backspace 出现奇怪的符号,可以在xshell中
    文件-->打开-->属性-->键盘
    delete键序列配置为:ASCII 127
    backspace键序列配置为:backspace
     
    在环境变量中增加
    stty erase '^H'
  • 相关阅读:
    krdoc 工程
    在ubuntu16.04 上安装php5.6.30
    https自签名 证书签发
    websocket 实现 前端vue-socket.io 服务端 koa2(socket.io)
    工作杂项 0528未 整理
    python 创建django项目;
    关于conda,pip使用杂项:
    笔记 日常
    ubuntu 16.04下 django 1.11.1项目启动问题(kr_doc)
    react-native如何看待 this.setState()
  • 原文地址:https://www.cnblogs.com/xingkan/p/6973655.html
Copyright © 2011-2022 走看看