在麒麟V10中安装rlwrap简化达梦数据库disql,drman命令行操作

1.背景

在linux上使用达梦数据库的disql命令的时候,上下键、空格键、删除键都不能使用,非常麻烦。安装了rlwrap之后,这一问题得到解决。

2.前提条件

在安装rlwrap之前需要安装readline,需要提前确认下操作系统是否已经安装了readline工具。
[root@dm8db ~]# rpm -qa | grep readline
readline-7.0-13.ky10.x86_64
如果没有进行安装,如果有YUM源,则可以直接用YUM进行安装
[root@dm8db ~]# yum install readline*
yum install readline*
Last metadata expiration check: 0:04:07 ago on 2022年02月24日 星期四 00时39分32秒.
Package readline-7.0-13.ky10.x86_64 is already installed.
Dependencies resolved.

Package Architecture Version Repository Size

Installing:
readline-devel x86_64 7.0-13.ky10 keylin10 187 k
readline-help noarch 7.0-13.ky10 keylin10 127 k
Installing dependencies:
ncurses-devel x86_64 6.1-14.ky10 keylin10 643 k

Transaction Summary

Install 3 Packages

Total size: 957 k
Installed size: 5.6 M
Is this ok [y/N]: y
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : ncurses-devel-6.1-14.ky10.x86_64 1/3
Installing : readline-devel-7.0-13.ky10.x86_64 2/3
Installing : readline-help-7.0-13.ky10.noarch 3/3
Running scriptlet: readline-help-7.0-13.ky10.noarch 3/3
Verifying : ncurses-devel-6.1-14.ky10.x86_64 1/3
Verifying : readline-devel-7.0-13.ky10.x86_64 2/3
Verifying : readline-help-7.0-13.ky10.noarch 3/3

Installed:
readline-devel-7.0-13.ky10.x86_64 readline-help-7.0-13.ky10.noarch ncurses-devel-6.1-14.ky10.x86_64

3.安装rlwrap

可以利用rpm包进行安装,也可以利用源码包进行安装,本次采用源码方式进行安装,需要先将rlwrap的源码包上传到服务器上,并赋予相应的权限。

[dmdba@dm8db ~]$ tar -zxvf rlwrap-0.41.tar.gz
rlwrap-0.41/
rlwrap-0.41/PLEA
rlwrap-0.41/tools/
rlwrap-0.41/tools/config.sub
rlwrap-0.41/tools/install-sh
rlwrap-0.41/tools/missing
rlwrap-0.41/tools/config.guess
rlwrap-0.41/tools/depcomp
rlwrap-0.41/NEWS
rlwrap-0.41/aclocal.m4
rlwrap-0.41/config.h.in
rlwrap-0.41/configure.ac
rlwrap-0.41/ChangeLog
rlwrap-0.41/completions/
rlwrap-0.41/completions/coqtop
rlwrap-0.41/completions/testclient
rlwrap-0.41/COPYING
rlwrap-0.41/src/
rlwrap-0.41/src/string_utils.c
rlwrap-0.41/src/term.c
rlwrap-0.41/src/main.c
rlwrap-0.41/src/completion.rb
rlwrap-0.41/src/pty.c
rlwrap-0.41/src/utils.c
rlwrap-0.41/src/rlwrap.h
rlwrap-0.41/src/signals.c
rlwrap-0.41/src/redblack.h
rlwrap-0.41/src/completion.c
rlwrap-0.41/src/filter.c
rlwrap-0.41/src/ptytty.c
rlwrap-0.41/src/malloc_debug.h
rlwrap-0.41/src/Makefile.am
rlwrap-0.41/src/readline.c
rlwrap-0.41/src/malloc_debug.c
rlwrap-0.41/src/Makefile.in
rlwrap-0.41/TODO
rlwrap-0.41/BUGS
rlwrap-0.41/doc/
rlwrap-0.41/doc/rlwrap.man.in
rlwrap-0.41/doc/Makefile.am
rlwrap-0.41/doc/Makefile.in
rlwrap-0.41/configure
rlwrap-0.41/Makefile.am
rlwrap-0.41/INSTALL
rlwrap-0.41/README
rlwrap-0.41/test/
rlwrap-0.41/test/testit
rlwrap-0.41/test/testclient
rlwrap-0.41/filters/
rlwrap-0.41/filters/listing
rlwrap-0.41/filters/logger
rlwrap-0.41/filters/pipeline

[root@dm8db rlwrap-0.41]# ./configure
checking build system type… x86_64-unknown-linux-gnu
checking host system type… x86_64-unknown-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… /usr/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 whether the C compiler works… yes
checking for C compiler default output file name… a.out
checking for suffix of executables…
checking whether we are cross compiling… no
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… /usr/bin/grep
checking for egrep… /usr/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… yes
checking curses.h presence… yes
checking for curses.h… yes
checking termcap.h usability… yes
checking termcap.h presence… yes
checking for termcap.h… yes
checking for term.h… yes
checking for ncurses/term.h… yes
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 mkstemps… 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 -ltinfo… yes
checking for readline in -lreadline… yes
checking for tigetnum… yes
checking readline/readline.h usability… yes
checking readline/readline.h presence… yes
checking for readline/readline.h… 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//cwd? let’s see…
checking for /proc/12422/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

[root@dm8db rlwrap-0.41]# make && make install
make all-recursive
make[1]: 进入目录“/opt/rlwrap/rlwrap-0.41”
Making all in doc
make[2]: 进入目录“/opt/rlwrap/rlwrap-0.41/doc”
sed -e ‘s#@DATADIR@#/usr/local/share#’ rlwrap.man > rlwrap.1
make[2]: 离开目录“/opt/rlwrap/rlwrap-0.41/doc”
Making all in src
make[2]: 进入目录“/opt/rlwrap/rlwrap-0.41/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
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 -ltinfo
make[2]: 离开目录“/opt/rlwrap/rlwrap-0.41/src”
Making all in filters
make[2]: 进入目录“/opt/rlwrap/rlwrap-0.41/filters”
make[2]: 对“all”无需做任何事。
make[2]: 离开目录“/opt/rlwrap/rlwrap-0.41/filters”
make[2]: 进入目录“/opt/rlwrap/rlwrap-0.41”
make[2]: 离开目录“/opt/rlwrap/rlwrap-0.41”
make[1]: 离开目录“/opt/rlwrap/rlwrap-0.41”
Making install in doc
make[1]: 进入目录“/opt/rlwrap/rlwrap-0.41/doc”
make[2]: 进入目录“/opt/rlwrap/rlwrap-0.41/doc”
make[2]: 对“install-exec-am”无需做任何事。
/usr/bin/mkdir -p ‘/usr/local/share/man/man1’
/usr/bin/install -c -m 644 rlwrap.1 ‘/usr/local/share/man/man1’
make[2]: 离开目录“/opt/rlwrap/rlwrap-0.41/doc”
make[1]: 离开目录“/opt/rlwrap/rlwrap-0.41/doc”
Making install in src
make[1]: 进入目录“/opt/rlwrap/rlwrap-0.41/src”
make[2]: 进入目录“/opt/rlwrap/rlwrap-0.41/src”
/usr/bin/mkdir -p ‘/usr/local/bin’
/usr/bin/install -c rlwrap ‘/usr/local/bin’
make[2]: 对“install-data-am”无需做任何事。
make[2]: 离开目录“/opt/rlwrap/rlwrap-0.41/src”
make[1]: 离开目录“/opt/rlwrap/rlwrap-0.41/src”
Making install in filters
make[1]: 进入目录“/opt/rlwrap/rlwrap-0.41/filters”
make[2]: 进入目录“/opt/rlwrap/rlwrap-0.41/filters”
make[2]: 对“install-exec-am”无需做任何事。
/usr/bin/mkdir -p ‘/usr/local/share/man/man3’
/usr/bin/install -c -m 644 RlwrapFilter.3pm ‘/usr/local/share/man/man3’
make[2]: 离开目录“/opt/rlwrap/rlwrap-0.41/filters”
make[1]: 离开目录“/opt/rlwrap/rlwrap-0.41/filters”
make[1]: 进入目录“/opt/rlwrap/rlwrap-0.41”
make[2]: 进入目录“/opt/rlwrap/rlwrap-0.41”
make[2]: 对“install-exec-am”无需做任何事。
/usr/bin/mkdir -p ‘/usr/local/share/rlwrap’
/usr/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’
/usr/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]: 进入目录“/opt/rlwrap/rlwrap-0.41”
chmod a+x /usr/local/share/rlwrap/filters/*
make[3]: 离开目录“/opt/rlwrap/rlwrap-0.41”
make[2]: 离开目录“/opt/rlwrap/rlwrap-0.41”
make[1]: 离开目录“/opt/rlwrap/rlwrap-0.41”

3.验证

[root@dm8db rlwrap-0.41]# su - dmdba
上一次登录: 四 2月 24 00:44:34 CST 2022 pts/1 上
[dmdba@dm8db ~]$ rlwrap
Usage: rlwrap [options] command …

Options:
-a[password prompt] --always-readline[=password prompt]
-A --ansi-colour-aware
-b --break-chars=
-c --complete-filenames
-C <name|N> --command-name=<name|N>
-D <0|1|2> --history-no-dupes=<0|1|2>
-e <char|’’> --extra-char-after-completion=<char|’’>
-f --file=
-g --forget-matching=
-h --help
-H --history-filename=
-i --case-insensitive
-I --pass-sigint-as-sigterm
-l --logfile=
-n --no-warnings
-N --no-children
-o --one-shot
-O --only-cook=
-p[colour] --prompt-colour[=colour]
-P --pre-given=
-q --quote-characters=
-m[newline substitute] --multi-line[=newline substitute]
-M <.ext> --multi-line-ext=<.ext>
-r --remember
-R --renice
-v --version
-s --histsize= (negative: readonly)
-S --substitute-prompt=
-t --set-term-name=
-w --wait-before-prompt= (msec, <0 : patient mode)
-W --polling
-z --filter= (-z listing lists installed filters)

bug reports, suggestions, updates:
http://utopia.knoware.nl/~hlub/uck/rlwrap/

3.1 配置环境变量

修改.dmdba的环境变量
[dmdba@dm8db ~]$ vi ~/.bash_profile
[dmdba@dm8db ~]$ source ~/.bash_profile
[dmdba@dm8db ~]$ cat ~/.bash_profile

Source /root/.bashrc if user has one

[ -f ~/.bashrc ] && . ~/.bashrc

export LD_LIBRARY_PATH=" L D L I B R A R Y P A T H : / d m 8 / b i n " e x p o r t D M H O M E = " / d m 8 " e x p o r t P A T H = LD_LIBRARY_PATH:/dm8/bin" export DM_HOME="/dm8" export PATH= LDLIBRARYPATH:/dm8/bin"exportDMHOME="/dm8"exportPATH=DM_HOME/bin:$PATH
alias disql=‘rlwrap disql’
alias drman=‘rlwrap drman’

3.2 登录disql 测试

[dmdba@dm8db ~]$ disql SYSDBA/SYSDBA

服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 2.371(ms)
disql V8
SQL> SELECT * FROM TABL
2 ;
SELECT * FROM TABL
;
第2 行附近出现错误[-2106]:无效的表或视图名[TABL].
已用时间: 9.704(毫秒). 执行号:0

发现可以在disql中进行上下左右翻动,也可以直接使用退格键进行删除操作。大大方便了我们的日常公工作。
同理也可以在drman中进行相关操作。此处省略。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值