如何离线安装所有依赖包

当我们在一个没有公网的环境下去部署一些东西的时候往往是让人很头疼的一件事,因为可能会需要各种依赖包,依赖包本身也还有很多依赖关系。如果没有一次性把全部的依赖包打包下载好,我们下载的过程就能体会到什么叫俄罗斯套娃。。

一、os依赖包

1、准备一台与生产部署G ` * C @环境内核版本基本一致的镜像,安装mini insF V B p v ]tall版作为本地环境

# cat /proc/version
Linux version 3.10.0-693.el7.x8r 9 C [  { 6_64 (buildeQ ! Z 0 ^ -r@kbuilder.dev, L y ` i ` b.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.= a % #8.5-16) (GCC) ) #1 SMP Tue Aug 22 21:09:27 UTC 2017

2、配置好本地环境的yum源、保m o 0 { s [ 7 ? {证可通公网,一般都可以配置阿里的yum源即可

# cd /etc/yum.ro U _ V N [ q O 4epos.d/
# mkdir bak
# mv ./*rep0 u / [ m wo bak
# curl -o /e[ : , x 8 Y w Stc/yum.re1 | r  qpos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo_ X H { 5 k , /
# yJ / h 6um clean all
# yum makecache

3、通过yum将所需要的依* ( ) T :赖包全部下载至` I _ } G D G本地目录

# yum install --downloadonly --downloaddir= <tar% | a D % j ? 6 nget_dir> <package-name>

备注:为保证生产部署环境可以部署自己的本地yum源,我# M [ E v i们需要额外的去下载好 createrepo

# yum iX 4 H * V R q Q install --d3 ] j F W h |ownloadonly --downloaddir=/myrpm createrepo

4、打包以上所有需要的依赖包到生产部署环境,搭建本地yum源

1)通过rpm手动安装createrepo

根据提示安装所需依赖包即可
# rpm -ihv createrepo-0.9.9-28.el7.noarch.rpm

2)搭建_ = / d本地yum源

#创p + h J L k ) ?建本地rpm包repodata的索引目录
# createrepo /myrpm/
Spawning worker 0 with 1# J H  % 1 &97 pkgs
Spawning worker 1 wx g J f 6ith 197 pkgs
Workers Finished
Saving Primary metadata
Saving file lists met$ A Z s G z r 2adata
Saving other metadal w Zta
Generating sqlite DBs
Sqlit0 m A f }e DBs complete
#若后续有更新其他依赖包,不需要重建,J w n只需要update一下索引D R + H目录就好
# createrepo --update /myrpm/
Saving Primary/ o $ ) : v , metadata
Saving file lists metadata
Saving other metadata
Generating~ 6 a 7 D ~ 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={ 4 M 7 x G1
priority=1
#清除yum缓存
yum cleanU O E ] allw J v p 8 L

5、通过本地yum源部署安装

yum insu F 5tall <package-name>

二、python库安装

1、下载python依赖包要关注l g Z I两者环境的python、pip版本一致

# /app/python/bin/virtualenv /clean_env
New python executable in /cle( I y = W I .an_env/bin/python2.7
Not overwriting existing python sn E = L ?cript /clean_env/bin/python (you mO 5 d ~ | h ; 2 Hust use /clean_env/bin/python2.7)
Installing setuptools, pip, wheel.H C @ k m I |..done.
# source /clean_env/bin/actit q 3 ivate
(% y w J fclean_env) # python --version
Python 2.7.9
(clean_env) # pip --version
pip 20.2b1 fromQ K ` h + w /clean_env/lib/python2.7/site-packages/pip (python 2.7)

2、本地环境下载所需要的库及其依赖包

#requirements.txt9 q V O z N &文件下是我们需要安装的所有库
(clean_env) # pipp & ~ _ % download -d <target-dir9 q i G / + F .>  --trusted-host mi] ; & O M Rrrors.# 7 6 G waliyun.cop @ f am -r requirements.txt
or
(clean_env) # pip download -d <targ; M J $ zet-dir>  --trusted-host mirrors.aliyun.com <pack. T ^ .age-name>

3、将所有pytho1 l _ d 6 : b r bn包打包上传至生产部署环境

4、生产环境* I E J K指定package目录安E L =装库

# pip install --no-index --find-links=/root/python20/opsinsight/ -r requirements.txt
or
# pip install --no-index --find-links=/root/pythonS  8 N | [ # *20/opsin` 4 -sight/ <packaT j C [ge-D D t A / ( [ j ;name>