如何分析GBase 8s对操作系统的依赖

如何分析GBase 8s对操作系统的依赖

问题

由于国际形势变化,目前对国产数据库提出新的要求:

  • 支持国产CPU
  • 支持国产操作系统

目前国产操作系统中,麒麟操作系统是比较主流的操作系统,在与麒麟V10操作系统适配时,偶尔会出现在一个麒麟V10下编译的数据库,在另一个麒麟V10下安装不成功现象。这个产品适配中出现的现象,可能是麒麟操作系统内核变化的原因,也不排除是现场人员安装的问题。

为了定位在适配中出现的安装问题,给数据库确定它的依赖库和rpm软件包很有必要。下面以GBase 8s为例,介绍如何生成数据库在Linux下的依赖库和rpm包。其它厂商的数据库,也可以借鉴,看是否可以帮忙数据库产品生成其所依赖的环境检查清单。

解决方法

我们可以在一个完全满足安装要求的环境下,先部署一个GBase 8s,然后在root下执行一个脚本,得到数据库的环境检查清单。

下面是一个Shell脚本,在root下执行,需要传入数据库安装目录。如:

sh mkchklst.sh /opt/gbase

其中/opt/gbase是GBase 8s的安装路径。

下面是mkchklst.sh的内容:

#!/bin/bash

export LANG=C

if [ $# -eq 0 ]; then
#echo "GBASEDBTDIR is not set."
echo "mkchklst.sh <gbase8s_dir>"
exit
fi

GBASEDBTDIR=$1

echo "GBASEDBTDIR:${GBASEDBTDIR}"

echo "Clean tmp file: gbase8s_cmd.lst"

if [ -f /tmp/gbase8s_cmd.lst ]; then
rm -rf /tmp/gbase8s_cmd.lst
fi

echo "Clean tmp file: gbase8s_dep.lst"

if [ -f /tmp/gbase8s_dep.lst ]; then
rm -rf /tmp/gbase8s_dep.lst
fi

if [ -f /tmp/gbase8s_lib.lst ]; then
rm -rf /tmp/gbase8s_lib.lst
fi

if [ -f /tmp/gbase8s_rpm.lst ]; then
rm -rf /tmp/gbase8s_rpm.lst
fi

echo "Make GBase 8s Execute File list."

ls $GBASEDBTDIR/bin | while read cmd
do
echo $cmd >> /tmp/gbase8s_cmd.lst
done 

while read cmd
do
#echo $cmd
ldd $GBASEDBTDIR/bin/$cmd >> /tmp/gbase8s_dep.lst 
done < /tmp/gbase8s_cmd.lst

cat /tmp/gbase8s_dep.lst | grep -v "not a dynamic executable" | grep "=>" | awk -F= '{print $1}' | sed 's/\t//g' | sort | uniq >> /tmp/gbase8s_lib.lst
cat /tmp/gbase8s_dep.lst | grep -v "not a dynamic executable" | grep -v "=>" | sed 's/\t//g' | awk -F\( '{print $1}' | awk -F / '{print $3}' | sort | uniq >> /tmp/gbase8s_lib.lst

echo "######################################################################"
echo "# The lib files GBase 8s depends on are list in /tmp/gbase8s_lib.lst #"
echo "######################################################################"


while read lib
do
if [[ $lib != 'linux-vdso.so.1' && $lib != 'libApiTSM64.so' ]]; then
rpm -qf /lib64/$lib >> /tmp/gbase8s_rpm.lst
fi
done < /tmp/gbase8s_lib.lst

echo
echo 

echo "######################################################################"
echo "# The rpm files GBase 8s depends on are list in /tmp/gbase8s_rpm.lst #"
echo "######################################################################"
echo
echo "rpm depends:"
echo
cat /tmp/gbase8s_rpm.lst

echo
echo "cmd depends:"
echo
echo "rm grep unzip gzip cut md5sum echo awk ls tar tr eval expr"
echo

运行效果:

[root@train ~]# sh mkchklst.sh /opt/gbase
GBASEDBTDIR:/opt/gbase
Clean tmp file: gbase8s_cmd.lst
Clean tmp file: gbase8s_dep.lst
Make GBase 8s Execute File list.
ldd: warning: you do not have execution permission for `/opt/gbase/bin/about.html'
ldd: /opt/gbase/bin/about_files: not regular file
ldd: /opt/gbase/bin/configuration: not regular file
ldd: warning: you do not have execution permission for `/opt/gbase/bin/nosql_sdk.zip'
ldd: /opt/gbase/bin/plugins: not regular file
######################################################################
# The lib files GBase 8s depends on are list in /tmp/gbase8s_lib.lst #
######################################################################


######################################################################
# The rpm files GBase 8s depends on are list in /tmp/gbase8s_rpm.lst #
######################################################################

rpm depends:

libX11-1.6.3-3.el7.x86_64
libXau-1.0.8-2.1.el7.x86_64
libXext-1.3.3-3.el7.x86_64
libXrender-0.9.8-2.1.el7.x86_64
audit-libs-2.6.5-3.el7.x86_64
glibc-2.17-157.el7.x86_64
libcap-ng-0.7.5-4.el7.x86_64
glibc-2.17-157.el7.x86_64
glibc-2.17-157.el7.x86_64
elfutils-libelf-0.166-2.el7.x86_64
expat-2.1.0-8.el7.x86_64
fontconfig-2.10.95-10.el7.x86_64
nss-softokn-freebl-3.16.2.3-14.4.el7.x86_64
freetype-2.4.11-12.el7.x86_64
libgcc-4.8.5-11.el7.x86_64
glibc-2.17-157.el7.x86_64
ncurses-libs-5.9-13.20130511.el7.x86_64
pam-1.1.8-18.el7.x86_64
glibc-2.17-157.el7.x86_64
readline-6.2-9.el7.x86_64
glibc-2.17-157.el7.x86_64
libstdc++-4.8.5-11.el7.x86_64
ncurses-libs-5.9-13.20130511.el7.x86_64
glibc-2.17-157.el7.x86_64
libxcb-1.11-4.el7.x86_64
zlib-1.2.7-17.el7.x86_64
glibc-2.17-157.el7.x86_64

cmd depends:

rm grep unzip gzip cut md5sum echo awk ls tar tr eval expr

[root@train ~]#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值