오프라인 설치를 위한 RPM 다운로드

#!/bin/bash
###########################################################
#
# 오프라인 설치를 위한 RPM을 다운로드 받는다.
# 의존성 패키지까지 다운로드하기 위해서는 minimum 설치
# 상태의 리눅스 시스템에서 스크립트를 실행해야 한다.
#
###########################################################
RPMDIR="/root/rpm"

###########################################################
#
# yumdownloader 설치
#
###########################################################
install_yumdownloader() {
  mkdir -p "${RPMDIR}/yum-utils"
  yum install -y --downloadonly --downloaddir="${RPMDIR}/yum-utils" yum-utils
  if [ ! -f /usr/bin/yumdownloader ]
  then
    rpm -Uvh --nodeps ${RPMDIR}/yum-utils/*.rpm
  fi
}

###########################################################
#
# RPM+의존성 패키지 다운로드
#
###########################################################
download_rpm() {
  echo "###########################################################"
  echo "#"
  echo "# ${FUNCNAME[0]}: ${1}"
  echo "#"
  echo "###########################################################"
  if [ ! -d ${RPMDIR}/${1} ]
  then
    mkdir -p "${RPMDIR}/${1}"
  fi
  mkdir -p "${RPMDIR}/${1}"
  yum deplist ${1}
  yumdownloader --downloadonly --resolve --destdir="${RPMDIR}/${1}" ${1}
}

special_p7zip() {
  echo "###########################################################"
  echo "#"
  echo "# ${FUNCNAME[0]}"
  echo "#"
  echo "###########################################################"

  wget -Nq --no-check-certificate "https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/epel/7/x86_64/Packages/p/p7zip-16.02-20.el7.x86_64.rpm"
  mkdir -p "${RPMDIR}/p7zip"
  mv -fv p7zip-16.02-20.el7.x86_64.rpm "${RPMDIR}/p7zip"
}

special_docker() {
  echo "###########################################################"
  echo "#"
  echo "# ${FUNCNAME[0]}"
  echo "#"
  echo "###########################################################"

  download_rpm device-mapper-persistent-data
  download_rpm lvm2
  yum -y remove docker-ce docker-ce-cli containerd.io docker-ce-rootless-extras docker-scan-plugin
  rm -rf /var/lib/docker
  rm -rf /var/lib/containerd
  yum-config-manager --add-repo "https://download.docker.com/linux/centos/docker-ce.repo"
  yum repolist
  download_rpm docker-ce
  curl -L "https://github.com/docker/compose/releases/download/v2.3.3/docker-compose-linux-x86_64" -o "${RPMDIR}/docker-compose"
  chmod 755 "${RPMDIR}/docker-compose"
}

special_mysql() {
  echo "###########################################################"
  echo "#"
  echo "# ${FUNCNAME[0]}"
  echo "#"
  echo "###########################################################"

  rpm -Uvh "https://repo.mysql.com/mysql80-community-release-el7-3.noarch.rpm"
  sed -i 's/enabled=0/enabled=1/' /etc/yum.repos.d/mysql-community.repo
  download_rpm mysql-community-server
  sed -i 's/enabled=1/enabled=0/' /etc/yum.repos.d/mysql-community.repo
}

# yumdownloader 다운로드&설치
install_yumdownloader

# 일반 RPM 다운로드
download_rpm at
download_rpm conntrack
download_rpm createrepo
download_rpm curl
download_rpm ftp
download_rpm git
download_rpm hdparm
download_rpm httpd
download_rpm ipset-service
download_rpm java-11-openjdk-devel.x86_64
download_rpm lftp
download_rpm lm_sensors
download_rpm lrzsz
download_rpm lsof
download_rpm mailx
download_rpm man
download_rpm mc
download_rpm nc
download_rpm net-tools
download_rpm ntp
download_rpm openldap
download_rpm openldap-clients
download_rpm rdate
download_rpm rsync
download_rpm sendmail
download_rpm sharutils
download_rpm svn
download_rpm tcpdump
download_rpm telnet
download_rpm unzip
download_rpm vsftpd
download_rpm wget
download_rpm whois
download_rpm xinetd
download_rpm zip

# 리포지터리를 별도로 설치해야하는 패키지 다운로드
special_p7zip
special_docker
special_mysql
위로 스크롤