安装rlwrap
下载:http://utopia.knoware.nl/~hlub/uck/rlwrap/
或者 百度云盘:http://pan.baidu.com/s/1ntM8YXr
需要先安装readline,否则会报一下错误:You need the GNU readline library(ftp://ftp.gnu.org/gnu/readline/ ) to build this program!
如下:
[[email protected] ~]# cd /opt/
[[email protected] opt]# ll
total 256
drwxr-xr-x 3 root root 4096 Apr 22 09:54 ORCLfmap
-rw-r--r-- 1 root root 251438 May 6 10:12 rlwrap-0.37.tar.gz
[[email protected] opt]# cd rlwrap-0.37
[[email protected] rlwrap-0.37]# ll
total 408
-rw-rw-r-- 1 oracle dba 35029 Apr 30 2010 aclocal.m4
-rw-r--r-- 1 oracle dba 638 Aug 15 2006 AUTHORS
-rw-r--r-- 1 oracle dba 4267 May 5 2010 BUGS
-rw-r--r-- 1 oracle dba 105 Aug 10 2003 ChangeLog
drwxrwxr-x 2 oracle dba 4096 May 5 2010 completions
-rw-rw-r-- 1 oracle dba 7042 Apr 30 2010 config.h.in
-rwxr-xr-x 1 oracle dba 222847 Apr 30 2010 configure
-rw-r--r-- 1 oracle dba 11521 Apr 30 2010 configure.ac
-rw-r--r-- 1 oracle dba 17992 Aug 8 2006 COPYING
drwxrwxr-x 2 oracle dba 4096 May 5 2010 doc
drwxrwxr-x 2 oracle dba 4096 May 5 2010 filters
-rw-r--r-- 1 oracle dba 2019 Nov 23 2009 INSTALL
-rw-r--r-- 1 oracle dba 1272 Jan 23 2010 Makefile.am
-rw-rw-r-- 1 oracle dba 28316 Apr 30 2010 Makefile.in
-rw-r--r-- 1 oracle dba 16788 Apr 30 2010 NEWS
-rw-r--r-- 1 oracle dba 1394 Oct 24 2007 PLEA
-rw-r--r-- 1 oracle dba 3070 Jan 8 2010 README
drwxrwxr-x 2 oracle dba 4096 May 5 2010 src
drwxrwxr-x 2 oracle dba 4096 May 5 2010 test
-rw-r--r-- 1 oracle dba 310 Apr 16 2010 TODO
drwxrwxr-x 2 oracle dba 4096 May 5 2010 tools
[[email protected] rlwrap-0.37]#
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... no
checking for tgetent in -lncurses... no
checking for tgetent in -ltermcap... no
configure: WARNING: No termcap nor curses library found
checking for readline in -lreadline... no
configure: error:
You need the GNU readline library(ftp://ftp.gnu.org/gnu/readline/ ) to build
this program!
[[email protected] rlwrap-0.37]#
##############################################################################################################
1.安装readline
[[email protected] ~]# mount /dev/cdrom /media/
mount: block device /dev/cdrom is write-protected, mounting read-only
[[email protected] ~]# cd /media/Server/
[[email protected] Server]# rpm -Uvh readline-
readline-5.1-3.el5.i386.rpm readline-devel-5.1-3.el5.i386.rpm
[[email protected] Server]# rpm -Uvh readline-5.1-3.el5.i386.rpm
warning: readline-5.1-3.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159
Preparing... ########################################### [100%]
package readline-5.1-3.el5.i386 is already installed
[[email protected] Server]# rpm -Uvh readline-devel-5.1-3.el5.i386.rpm
warning: readline-devel-5.1-3.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159
error: Failed dependencies:
libtermcap-devel is needed by readline-devel-5.1-3.el5.i386
[[email protected] Server]# rpm -Uvh libtermcap-devel-2.0.8-46.1.i386.rpm
warning: libtermcap-devel-2.0.8-46.1.i386.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159
Preparing... ########################################### [100%]
1:libtermcap-devel ########################################### [100%]
[[email protected] Server]# rpm -Uvh readline-devel-5.1-3.el5.i386.rpm
warning: readline-devel-5.1-3.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159
Preparing... ########################################### [100%]
1:readline-devel ########################################### [100%]
2.安装rlwrap
[[email protected] Server]# cd /opt/rlwrap-0.37
[[email protected] rlwrap-0.37]# ll
total 480
-rw-rw-r-- 1 oracle dba 35029 Apr 30 2010 aclocal.m4
-rw-r--r-- 1 oracle dba 638 Aug 15 2006 AUTHORS
-rw-r--r-- 1 oracle dba 4267 May 5 2010 BUGS
-rw-r--r-- 1 oracle dba 105 Aug 10 2003 ChangeLog
drwxrwxr-x 2 oracle dba 4096 May 5 2010 completions
-rw-rw-r-- 1 oracle dba 7042 Apr 30 2010 config.h.in
-rw-r--r-- 1 root root 67255 May 6 10:16 config.log
-rwxr-xr-x 1 oracle dba 222847 Apr 30 2010 configure
-rw-r--r-- 1 oracle dba 11521 Apr 30 2010 configure.ac
-rw-r--r-- 1 oracle dba 17992 Aug 8 2006 COPYING
drwxrwxr-x 2 oracle dba 4096 May 5 2010 doc
drwxrwxr-x 2 oracle dba 4096 May 5 2010 filters
-rw-r--r-- 1 oracle dba 2019 Nov 23 2009 INSTALL
-rw-r--r-- 1 oracle dba 1272 Jan 23 2010 Makefile.am
-rw-rw-r-- 1 oracle dba 28316 Apr 30 2010 Makefile.in
-rw-r--r-- 1 oracle dba 16788 Apr 30 2010 NEWS
-rw-r--r-- 1 oracle dba 1394 Oct 24 2007 PLEA
-rw-r--r-- 1 oracle dba 3070 Jan 8 2010 README
drwxrwxr-x 2 oracle dba 4096 May 5 2010 src
drwxrwxr-x 2 oracle dba 4096 May 5 2010 test
-rw-r--r-- 1 oracle dba 310 Apr 16 2010 TODO
drwxrwxr-x 2 oracle dba 4096 May 5 2010 tools
[[email protected] 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... yes
checking termcap.h presence... yes
checking for termcap.h... yes
checking for term.h... no
checking for ncurses/term.h... no
checking argument type of tputs putc function... int
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... no
checking for tgetent in -lncurses... no
checking for tgetent in -ltermcap... yes
checking for readline in -lreadline... yes
checking whether your readline headers know about rl_set_screen_size... yes
checking whether your readline library knows about rl_set_screen_size... checking for rl_set_screen_size... yes
checking whether your readline knows about rl_variable_value... yes
checking whether your readline knows about rl_readline_version... yes
Will rlwrap find command's working directory under /proc/<commands pid>/cwd? let's see...
checking for /proc/8714/cwd/configure.ac... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating filters/Makefile
config.status: creating doc/Makefile
config.status: creating src/Makefile
config.status: creating doc/rlwrap.man
config.status: creating config.h
config.status: executing depfiles commands
Now do:
make (or gmake) to build rlwrap
make check for instructions how to test it
make install to install it
[[email protected] rlwrap-0.37]#
make all-recursive
make[1]: Entering directory `/opt/rlwrap-0.37'
Making all in doc
make[2]: Entering directory `/opt/rlwrap-0.37/doc'
sed -e [email protected]@#/usr/local/share#' rlwrap.man > rlwrap.1
make[2]: Leaving directory `/opt/rlwrap-0.37/doc'
Making all in src
make[2]: Entering directory `/opt/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 鈥榗olourless_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 -ltermcap
make[2]: Leaving directory `/opt/rlwrap-0.37/src'
Making all in filters
make[2]: Entering directory `/opt/rlwrap-0.37/filters'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/opt/rlwrap-0.37/filters'
make[2]: Entering directory `/opt/rlwrap-0.37'
make[2]: Nothing to be done for `all-am'.
make[2]: Leaving directory `/opt/rlwrap-0.37'
make[1]: Leaving directory `/opt/rlwrap-0.37'
[[email protected] rlwrap-0.37]#
Making install in doc
make[1]: Entering directory `/opt/rlwrap-0.37/doc'
make[2]: Entering directory `/opt/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 `/opt/rlwrap-0.37/doc'
make[1]: Leaving directory `/opt/rlwrap-0.37/doc'
Making install in src
make[1]: Entering directory `/opt/rlwrap-0.37/src'
make[2]: Entering directory `/opt/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 `/opt/rlwrap-0.37/src'
make[1]: Leaving directory `/opt/rlwrap-0.37/src'
Making install in filters
make[1]: Entering directory `/opt/rlwrap-0.37/filters'
make[2]: Entering directory `/opt/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 `/opt/rlwrap-0.37/filters'
make[1]: Leaving directory `/opt/rlwrap-0.37/filters'
make[1]: Entering directory `/opt/rlwrap-0.37'
make[2]: Entering directory `/opt/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 `/opt/rlwrap-0.37'
chmod a+x /usr/local/share/rlwrap/filters/*
make[3]: Leaving directory `/opt/rlwrap-0.37'
make[2]: Leaving directory `/opt/rlwrap-0.37'
make[1]: Leaving directory `/opt/rlwrap-0.37'
[[email protected] rlwrap-0.37]#
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export ORACLE_SID=TEST0422
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export PATH=$ORACLE_HOME/bin:$PATH
PATH=$PATH:$HOME/bin
export PATH
stty erase ^H
alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'
~
~
~
"/home/oracle/.bash_profile" 25L, 455C written
3.使用rlwrap
[[email protected] ~]$ sqlplus "/as sysdba"
SQL*Plus: Release 10.2.0.2.0 - Production on Tue May 6 10:31:02 2014
Copyright (c) 1982, 2005, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - Production
With the Partitioning, OLAP and Data Mining options
[email protected]>select * from scott.emp;
即现在就可以使用上下键来调用命令了。
#################################################################################################################