Greeplum安裝包greenplum-db-6.x.x-rhel7-x86_64.rpm的(斷網)離線下的安裝

一、背景

最近一直在做greenplum數據庫相關的項目,項目中需要做greenplum分佈式數據庫的(分佈式)安裝包,由於greenplum-db-6.x.x-rhel7-x86_64.rpm包需要聯網安裝,所以聯網在線安裝相對比較容易,故已經實現了一個多節點的一鍵安裝(見另一篇博客:https://blog.csdn.net/inrgihc/article/details/105824388);但當Greenplum需要部署在專網(與外網隔離)時,迫切需要通過找到該RPM包的所有依賴,即通過一臺聯網的機器找到RPM所有的依賴後,打包到需要部署的機器,使用yum localinstall命令進行本地安裝。

二、離線安裝

1、找到依賴

通過在離線機器上執行命令:rpm -ivh greenplum-db-6.6.0-rhel7-x86_64.rpm ,會提示如下依賴缺少錯誤提示:

[tang@localhost ~]$ rpm -ivh greenplum-db-6.6.0-rhel7-x86_64.rpm 
error: Failed dependencies:
	apr is needed by greenplum-db-6.6.0-1.el7.x86_64
	apr-util is needed by greenplum-db-6.6.0-1.el7.x86_64
	bzip2 is needed by greenplum-db-6.6.0-1.el7.x86_64
	krb5-devel is needed by greenplum-db-6.6.0-1.el7.x86_64
	libevent is needed by greenplum-db-6.6.0-1.el7.x86_64
	libyaml is needed by greenplum-db-6.6.0-1.el7.x86_64
	perl is needed by greenplum-db-6.6.0-1.el7.x86_64
	rsync is needed by greenplum-db-6.6.0-1.el7.x86_64
	zip is needed by greenplum-db-6.6.0-1.el7.x86_64
	net-tools is needed by greenplum-db-6.6.0-1.el7.x86_64

2、下載依賴

通過上面的提示,我們需要尋找到的依賴包括:apr apr-util bzip2 krb5-devel libevent libyaml perl rsync zip net-tools等。

repotrack命令是linux提供的一個不錯的下載依賴的好工具,使用也比較簡單,使用說明請參考如下地址:

http://man7.org/linux/man-pages/man1/repotrack.1.html

既然找到了工具,那麼我們通過編寫一個腳本工具來實現批量下載依賴,腳本如下:

filename:  find_all_deps_of_rpm_copy.sh

#!/bin/bash
############################################
# Function :  RPM依賴爬取
# Author : tang
# Date : 2020-05-01
#
# Usage: sh find_all_deps_of_rpm_copy.sh
#
############################################

# RPM_DIR下載存放地址
#RPM_DIR=/var/cache/yum/x86_64/
RPM_DIR=./deps
# RPM下載種子
RPM_SEED=(apr apr-util bzip2 krb5-devel libevent libyaml perl rsync zip net-tools)

# 要求必須以root賬號執行
if [ "$(whoami)" != 'root' ]; then
  echo "[ERROR]: You have no permission to run $0 as non-root user."
  exit 1
fi

# CentOS7操作系統檢查
v=$(cat /etc/redhat-release | sed -r 's/.* ([0-9]+)\..*/\1/')
if [ $v -ne 7 ]; then
  echo "[ERROR]: This program only can run for system CentOS 7 version."
  exit 1
fi

# x86_64平臺檢查
platform=$(uname -m)
if [ "$platform" != "x86_64" ]; then
  echo "[ERROR]: This program only can run for x86_64 operation system."
  exit 1
fi

# 檢查並安裝yum-utils工具
if ! rpm -qa | grep -q "yum-utils"; then
  yum install yum-utils -y
  if [ $? != 0 ]; then
    echo "[ERROR]: failed to yum instal yum-utils."
    exit 1
  fi
fi

# 本地安裝EPEL源
if ! rpm -qa | grep -q "epel-release"; then
  yum install epel-release -y
  if [ $? != 0 ]; then
    echo "[ERROR]: failed to yum instal epel-release."
    exit 1
  fi
  yum clean all && yum makecache
fi

# 本地存放目錄
[ -d "$RPM_DIR" ] || mkdir -p "$RPM_DIR"

# 配置下載種子入口
for p in ${RPM_SEED[@]}; do
  repoquery -R --resolve --recursive $p | xargs -r yumdownloader --destdir=$RPM_DIR
  if [ $? != 0 ]; then
    echo "[ERROR]: download dependencies for package [ $p ] failed."
    exit 1
  fi
done

PACKAGES=(`ls $RPM_DIR `)
echo "[INFO]-$LINENO: game over ,total downloaded package count is ${#PACKAGES[@]}."

3、執行與結果

建議用最小化安裝且聯網的CentOS7系統來執行上述腳本抓取依賴,執行過程及其結果如下:

[root@localhost ~]# sh find_all_deps_of_rpm_copy.sh 
Downloading apr-1.4.8-5.el7.x86_64.rpm
Downloading apr-1.4.8-5.el7.i686.rpm
Downloading basesystem-10.0-7.el7.centos.noarch.rpm
Downloading bash-4.2.46-34.el7.x86_64.rpm
Downloading centos-release-7-8.2003.0.el7.centos.x86_64.rpm
Downloading filesystem-3.2-25.el7.x86_64.rpm
Downloading glibc-2.17-307.el7.1.i686.rpm
Downloading glibc-2.17-307.el7.1.x86_64.rpm
Downloading glibc-common-2.17-307.el7.1.x86_64.rpm
Downloading libgcc-4.8.5-39.el7.i686.rpm
Downloading libgcc-4.8.5-39.el7.x86_64.rpm
Downloading libselinux-2.5-15.el7.x86_64.rpm
Downloading libsepol-2.5-10.el7.x86_64.rpm
Downloading libstdc++-4.8.5-39.el7.i686.rpm
Downloading libstdc++-4.8.5-39.el7.x86_64.rpm
Downloading libuuid-2.23.2-63.el7.x86_64.rpm
Downloading libuuid-2.23.2-63.el7.i686.rpm
Downloading ncurses-base-5.9-14.20130511.el7_4.noarch.rpm
Downloading ncurses-libs-5.9-14.20130511.el7_4.x86_64.rpm
Downloading nspr-4.21.0-1.el7.i686.rpm
Downloading nspr-4.21.0-1.el7.x86_64.rpm
Downloading nss-softokn-freebl-3.44.0-8.el7_7.i686.rpm
Downloading nss-softokn-freebl-3.44.0-8.el7_7.x86_64.rpm
Downloading nss-util-3.44.0-4.el7_7.i686.rpm
Downloading nss-util-3.44.0-4.el7_7.x86_64.rpm
.
.
.
.(略)
.
.
[INFO]-69: game over ,total downloaded package count is 231.

[root@localhost~]# ls ./deps/
acl-2.2.51-15.el7.x86_64.rpm                        keyutils-libs-1.5.8-3.el7.x86_64.rpm        libssh2-1.8.0-3.el7.i686.rpm                   perl-Encode-2.51-7.el7.x86_64.rpm
apr-1.4.8-5.el7.i686.rpm                            keyutils-libs-devel-1.5.8-3.el7.i686.rpm    libssh2-1.8.0-3.el7.x86_64.rpm                 perl-Exporter-5.68-3.el7.noarch.rpm
apr-1.4.8-5.el7.x86_64.rpm                          keyutils-libs-devel-1.5.8-3.el7.x86_64.rpm  libstdc++-4.8.5-39.el7.i686.rpm                perl-File-Path-2.09-2.el7.noarch.rpm
apr-util-1.5.2-6.el7.i686.rpm                       kmod-20-28.el7.x86_64.rpm                   libstdc++-4.8.5-39.el7.x86_64.rpm              perl-File-Temp-0.23.01-3.el7.noarch.rpm
apr-util-1.5.2-6.el7.x86_64.rpm                     kmod-libs-20-28.el7.x86_64.rpm              libtasn1-4.10-1.el7.i686.rpm                   perl-Filter-1.49-3.el7.x86_64.rpm
audit-libs-2.8.5-4.el7.i686.rpm                     kpartx-0.4.9-131.el7.x86_64.rpm             libtasn1-4.10-1.el7.x86_64.rpm                 perl-Getopt-Long-2.40-3.el7.noarch.rpm
audit-libs-2.8.5-4.el7.x86_64.rpm                   krb5-devel-1.15.1-46.el7.i686.rpm           libuser-0.60-9.el7.i686.rpm                    perl-HTTP-Tiny-0.033-3.el7.noarch.rpm
basesystem-10.0-7.el7.centos.noarch.rpm             krb5-devel-1.15.1-46.el7.x86_64.rpm         libuser-0.60-9.el7.x86_64.rpm                  perl-libs-5.16.3-295.el7.i686.rpm
bash-4.2.46-34.el7.x86_64.rpm                       krb5-libs-1.15.1-46.el7.i686.rpm            libutempter-1.1.6-4.el7.i686.rpm               perl-libs-5.16.3-295.el7.x86_64.rpm
binutils-2.27-43.base.el7.x86_64.rpm                krb5-libs-1.15.1-46.el7.x86_64.rpm          libutempter-1.1.6-4.el7.x86_64.rpm             perl-macros-5.16.3-295.el7.x86_64.rpm
bzip2-1.0.6-13.el7.x86_64.rpm                       libacl-2.2.51-15.el7.i686.rpm               libuuid-2.23.2-63.el7.i686.rpm                 perl-parent-0.225-244.el7.noarch.rpm
bzip2-libs-1.0.6-13.el7.i686.rpm                    libacl-2.2.51-15.el7.x86_64.rpm             libuuid-2.23.2-63.el7.x86_64.rpm               perl-PathTools-3.40-5.el7.x86_64.rpm
bzip2-libs-1.0.6-13.el7.x86_64.rpm                  libattr-2.4.46-13.el7.i686.rpm              libverto-0.2.5-4.el7.i686.rpm                  perl-Pod-Escapes-1.04-295.el7.noarch.rpm
ca-certificates-2019.2.32-76.el7_7.noarch.rpm       libattr-2.4.46-13.el7.x86_64.rpm            libverto-0.2.5-4.el7.x86_64.rpm                perl-podlators-2.5.1-3.el7.noarch.rpm
centos-release-7-8.2003.0.el7.centos.x86_64.rpm     libblkid-2.23.2-63.el7.i686.rpm             libverto-devel-0.2.5-4.el7.i686.rpm            perl-Pod-Perldoc-3.20-4.el7.noarch.rpm
chkconfig-1.7.4-1.el7.x86_64.rpm                    libblkid-2.23.2-63.el7.x86_64.rpm           libverto-devel-0.2.5-4.el7.x86_64.rpm          perl-Pod-Simple-3.28-4.el7.noarch.rpm
coreutils-8.22-24.el7.x86_64.rpm                    libcap-2.22-11.el7.i686.rpm                 libxml2-2.9.1-6.el7.4.x86_64.rpm               perl-Pod-Usage-1.63-3.el7.noarch.rpm
cpio-2.11-27.el7.x86_64.rpm                         libcap-2.22-11.el7.x86_64.rpm               libyaml-0.1.4-11.el7_0.i686.rpm                perl-Scalar-List-Utils-1.27-248.el7.x86_64.rpm
cracklib-2.9.0-11.el7.i686.rpm                      libcap-ng-0.7.5-4.el7.i686.rpm              libyaml-0.1.4-11.el7_0.x86_64.rpm              perl-Socket-2.010-5.el7.x86_64.rpm
cracklib-2.9.0-11.el7.x86_64.rpm                    libcap-ng-0.7.5-4.el7.x86_64.rpm            lua-5.1.4-15.el7.x86_64.rpm                    perl-Storable-2.45-3.el7.x86_64.rpm
cracklib-dicts-2.9.0-11.el7.x86_64.rpm              libcom_err-1.42.9-17.el7.i686.rpm           lz4-1.7.5-3.el7.i686.rpm                       perl-Text-ParseWords-3.29-4.el7.noarch.rpm
cryptsetup-libs-2.0.3-6.el7.x86_64.rpm              libcom_err-1.42.9-17.el7.x86_64.rpm         lz4-1.7.5-3.el7.x86_64.rpm                     perl-threads-1.87-4.el7.x86_64.rpm
curl-7.29.0-57.el7.x86_64.rpm                       libcom_err-devel-1.42.9-17.el7.i686.rpm     ncurses-5.9-14.20130511.el7_4.x86_64.rpm       perl-threads-shared-1.43-6.el7.x86_64.rpm
cyrus-sasl-lib-2.1.26-23.el7.i686.rpm               libcom_err-devel-1.42.9-17.el7.x86_64.rpm   ncurses-base-5.9-14.20130511.el7_4.noarch.rpm  perl-Time-HiRes-1.9725-3.el7.x86_64.rpm
cyrus-sasl-lib-2.1.26-23.el7.x86_64.rpm             libcurl-7.29.0-57.el7.i686.rpm              ncurses-libs-5.9-14.20130511.el7_4.i686.rpm    perl-Time-Local-1.2300-2.el7.noarch.rpm
dbus-1.10.24-13.el7_6.x86_64.rpm                    libcurl-7.29.0-57.el7.x86_64.rpm            ncurses-libs-5.9-14.20130511.el7_4.x86_64.rpm  pkgconfig-0.27.1-4.el7.i686.rpm
dbus-libs-1.10.24-13.el7_6.x86_64.rpm               libdb-5.3.21-25.el7.i686.rpm                net-tools-2.0-0.25.20131004git.el7.x86_64.rpm  pkgconfig-0.27.1-4.el7.x86_64.rpm
device-mapper-1.02.164-7.el7_8.1.x86_64.rpm         libdb-5.3.21-25.el7.x86_64.rpm              nspr-4.21.0-1.el7.i686.rpm                     popt-1.13-16.el7.i686.rpm
device-mapper-libs-1.02.164-7.el7_8.1.i686.rpm      libdb-utils-5.3.21-25.el7.x86_64.rpm        nspr-4.21.0-1.el7.x86_64.rpm                   popt-1.13-16.el7.x86_64.rpm
device-mapper-libs-1.02.164-7.el7_8.1.x86_64.rpm    libevent-2.0.21-4.el7.i686.rpm              nss-3.44.0-7.el7_7.i686.rpm                    procps-ng-3.3.10-27.el7.i686.rpm
diffutils-3.3-5.el7.i686.rpm                        libevent-2.0.21-4.el7.x86_64.rpm            nss-3.44.0-7.el7_7.x86_64.rpm                  procps-ng-3.3.10-27.el7.x86_64.rpm
diffutils-3.3-5.el7.x86_64.rpm                      libffi-3.0.13-19.el7.i686.rpm               nss-pem-1.0.3-7.el7.i686.rpm                   qrencode-libs-3.4.1-3.el7.x86_64.rpm
dracut-033-568.el7.x86_64.rpm                       libffi-3.0.13-19.el7.x86_64.rpm             nss-pem-1.0.3-7.el7.x86_64.rpm                 readline-6.2-11.el7.i686.rpm
elfutils-default-yama-scope-0.176-4.el7.noarch.rpm  libgcc-4.8.5-39.el7.i686.rpm                nss-softokn-3.44.0-8.el7_7.i686.rpm            readline-6.2-11.el7.x86_64.rpm
elfutils-libelf-0.176-4.el7.i686.rpm                libgcc-4.8.5-39.el7.x86_64.rpm              nss-softokn-3.44.0-8.el7_7.x86_64.rpm          rpm-4.11.3-43.el7.x86_64.rpm
elfutils-libelf-0.176-4.el7.x86_64.rpm              libgcrypt-1.5.3-14.el7.i686.rpm             nss-softokn-freebl-3.44.0-8.el7_7.i686.rpm     rpm-libs-4.11.3-43.el7.x86_64.rpm
elfutils-libs-0.176-4.el7.i686.rpm                  libgcrypt-1.5.3-14.el7.x86_64.rpm           nss-softokn-freebl-3.44.0-8.el7_7.x86_64.rpm   rsync-3.1.2-10.el7.x86_64.rpm
elfutils-libs-0.176-4.el7.x86_64.rpm                libgpg-error-1.12-3.el7.i686.rpm            nss-sysinit-3.44.0-7.el7_7.x86_64.rpm          sed-4.2.2-6.el7.x86_64.rpm
expat-2.1.0-11.el7.i686.rpm                         libgpg-error-1.12-3.el7.x86_64.rpm          nss-tools-3.44.0-7.el7_7.x86_64.rpm            setup-2.8.71-11.el7.noarch.rpm
expat-2.1.0-11.el7.x86_64.rpm                       libidn-1.28-4.el7.i686.rpm                  nss-util-3.44.0-4.el7_7.i686.rpm               shadow-utils-4.6-5.el7.x86_64.rpm
filesystem-3.2-25.el7.x86_64.rpm                    libidn-1.28-4.el7.x86_64.rpm                nss-util-3.44.0-4.el7_7.x86_64.rpm             shared-mime-info-1.8-5.el7.x86_64.rpm
findutils-4.5.11-6.el7.x86_64.rpm                   libkadm5-1.15.1-46.el7.i686.rpm             openldap-2.4.44-21.el7_6.i686.rpm              sqlite-3.7.17-8.el7_7.1.i686.rpm
gawk-4.0.2-4.el7_3.1.x86_64.rpm                     libkadm5-1.15.1-46.el7.x86_64.rpm           openldap-2.4.44-21.el7_6.x86_64.rpm            sqlite-3.7.17-8.el7_7.1.x86_64.rpm
gdbm-1.10-8.el7.x86_64.rpm                          libmount-2.23.2-63.el7.i686.rpm             openssl-libs-1.0.2k-19.el7.i686.rpm            systemd-219-73.el7_8.5.x86_64.rpm
glib2-2.56.1-5.el7.i686.rpm                         libmount-2.23.2-63.el7.x86_64.rpm           openssl-libs-1.0.2k-19.el7.x86_64.rpm          systemd-libs-219-73.el7_8.5.i686.rpm
glib2-2.56.1-5.el7.x86_64.rpm                       libpwquality-1.2.3-5.el7.i686.rpm           p11-kit-0.23.5-3.el7.i686.rpm                  systemd-libs-219-73.el7_8.5.x86_64.rpm
glibc-2.17-307.el7.1.i686.rpm                       libpwquality-1.2.3-5.el7.x86_64.rpm         p11-kit-0.23.5-3.el7.x86_64.rpm                tar-1.26-35.el7.x86_64.rpm
glibc-2.17-307.el7.1.x86_64.rpm                     libselinux-2.5-15.el7.i686.rpm              p11-kit-trust-0.23.5-3.el7.i686.rpm            tzdata-2020a-1.el7.noarch.rpm
glibc-common-2.17-307.el7.1.x86_64.rpm              libselinux-2.5-15.el7.x86_64.rpm            p11-kit-trust-0.23.5-3.el7.x86_64.rpm          ustr-1.0.4-16.el7.x86_64.rpm
gmp-6.0.0-15.el7.i686.rpm                           libselinux-devel-2.5-15.el7.i686.rpm        pam-1.1.8-23.el7.i686.rpm                      util-linux-2.23.2-63.el7.i686.rpm
gmp-6.0.0-15.el7.x86_64.rpm                         libselinux-devel-2.5-15.el7.x86_64.rpm      pam-1.1.8-23.el7.x86_64.rpm                    util-linux-2.23.2-63.el7.x86_64.rpm
grep-2.20-3.el7.x86_64.rpm                          libsemanage-2.5-14.el7.x86_64.rpm           pcre-8.32-17.el7.i686.rpm                      xz-5.2.2-1.el7.x86_64.rpm
groff-base-1.22.2-8.el7.x86_64.rpm                  libsepol-2.5-10.el7.i686.rpm                pcre-8.32-17.el7.x86_64.rpm                    xz-libs-5.2.2-1.el7.i686.rpm
gzip-1.5-10.el7.x86_64.rpm                          libsepol-2.5-10.el7.x86_64.rpm              pcre-devel-8.32-17.el7.i686.rpm                xz-libs-5.2.2-1.el7.x86_64.rpm
hardlink-1.0-19.el7.x86_64.rpm                      libsepol-devel-2.5-10.el7.i686.rpm          pcre-devel-8.32-17.el7.x86_64.rpm              zip-3.0-11.el7.x86_64.rpm
info-5.1-5.el7.x86_64.rpm                           libsepol-devel-2.5-10.el7.x86_64.rpm        perl-5.16.3-295.el7.x86_64.rpm                 zlib-1.2.7-18.el7.i686.rpm
json-c-0.11-4.el7_0.x86_64.rpm                      libsmartcols-2.23.2-63.el7.i686.rpm         perl-Carp-1.26-244.el7.noarch.rpm              zlib-1.2.7-18.el7.x86_64.rpm
keyutils-libs-1.5.8-3.el7.i686.rpm                  libsmartcols-2.23.2-63.el7.x86_64.rpm       perl-constant-1.27-2.el7.noarch.rpm

4、本地安裝GPDB

上面已經將依賴下載到deps目錄了,那麼將其拷貝到部署服務器上,執行如下命令安裝吧:

yum localinstall -y files/greenplum-db-6.6.0-rhel7-x86_64.rpm deps/*.x86_64.rpm

三、總結

是否也可以做一個完全離線(斷網)的安裝包呢,繼續搗鼓吧!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章