當我們在一個沒有公網的環境下去部署一些東西的時候往往是讓人很頭疼的一件事,因為可能會需要各種依賴包,依賴包本身也還有很多依賴關系。如果沒有一次性把全部的依賴包打包下載下傳好,我們下載下傳的過程就能體會到什麼叫俄羅斯套娃。。
一、os依賴包
1、準備一台與生産部署環境核心版本基本一緻的鏡像,安裝mini install版作為本地環境
# cat /proc/version
Linux version 3.10.0-693.el7.x86_64 ([email protected]) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) ) #1 SMP Tue Aug 22 21:09:27 UTC 2017
2、配置好本地環境的yum源、保證可通公網,一般都可以配置阿裡的yum源即可
# cd /etc/yum.repos.d/
# mkdir bak
# mv ./*repo bak
# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# yum clean all
# yum makecache
3、通過yum将所需要的依賴包全部下載下傳至本地目錄
# yum install --downloadonly --downloaddir= <target_dir> <package-name>
備注:為保證生産部署環境可以部署自己的本地yum源,我們需要額外的去下載下傳好 createrepo
# yum install --downloadonly --downloaddir=/myrpm createrepo
4、打包以上所有需要的依賴包到生産部署環境,搭建本地yum源
1)通過rpm手動安裝createrepo
根據提示安裝所需依賴包即可
# rpm -ihv createrepo-0.9.9-28.el7.noarch.rpm
2)搭建本地yum源
#建立本地rpm包repodata的索引目錄
# createrepo /myrpm/
Spawning worker 0 with 197 pkgs
Spawning worker 1 with 197 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
#若後續有更新其他依賴包,不需要重建,隻需要update一下索引目錄就好
# createrepo --update /myrpm/
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
#配置yum源配置檔案
# cd /etc/yum.repos.d/
# mkdir bak
# mv ./*repo bak
# cat local_yum.repo
[local_yum]
name=local_yum
baseurl=file:///myrpm
gpgcheck=0
enabled=1
priority=1
#清除yum緩存
yum clean all
5、通過本地yum源部署安裝
yum install <package-name>
二、python庫安裝
1、下載下傳python依賴包要關注兩者環境的python、pip版本一緻
# /app/python/bin/virtualenv /clean_env
New python executable in /clean_env/bin/python2.7
Not overwriting existing python script /clean_env/bin/python (you must use /clean_env/bin/python2.7)
Installing setuptools, pip, wheel...done.
# source /clean_env/bin/activate
(clean_env) # python --version
Python 2.7.9
(clean_env) # pip --version
pip 20.2b1 from /clean_env/lib/python2.7/site-packages/pip (python 2.7)
2、本地環境下載下傳所需要的庫及其依賴包
#requirements.txt檔案下是我們需要安裝的所有庫
(clean_env) # pip download -d <target-dir> --trusted-host mirrors.aliyun.com -r requirements.txt
or
(clean_env) # pip download -d <target-dir> --trusted-host mirrors.aliyun.com <package-name>
3、将所有python包打包上傳至生産部署環境
4、生産環境指定package目錄安裝庫
# pip install --no-index --find-links=/root/python20/opsinsight/ -r requirements.txt
or
# pip install --no-index --find-links=/root/python20/opsinsight/ <package-name>