前言
yum install 是使用centos时都肯定会用到的命令,而在使用yum时国内大部分也肯定配过镜像源比如清华、网易、人大的等等。这一切都建立在一个前提下——服务器能上外网。
但假如你突然被派到一个公司做外包,他们公司的服务器只能是离线环境,且服务器是一个清清白白的纯天然无污染centos,该如何部署你所需要的各种开发环境呢?
一种解决方案是自己先配置一个yum本地源带过去,就可以直接在那边离线安装了。
一、准备工作
网上很多配置yum本地源的教程都是要挂在一个iso镜像云云,但实际用的也只是镜像中的包含所有rpm包的pakage文件夹和一个配置文件夹。我们直接将一个目录作为源目标即可。
构建本地源目录之前还需要一个工具createrepo,否则你在创建配置文件设置该目录为本地源时就会报错blabla,参考这篇博客
首先是将createrepo的全量依赖包都下下来,使用的是repotrack,它将将目标包的全量依赖rpm下载到当前路径下。
$ yum -y install yum-utils
$ repotrack createrepo
接下来面临如何安装同时解决包依赖的问题。一般而言是yum帮我们做,但很不幸,createrepo是创建yum本地源的基础,而离线环境下安装工具解决依赖又靠得是yum本地源,那离线环境下安装createrepo得怎么办呢?一百多个依赖包啊。
这里记录下手动安装rpm的过程,可能因服务器环境的版本与初始程度有一些差异。
# 先将路径下能安的.rpm包安一遍。其中有几个包与固有的底层包有冲突,需要单独安一下
[root@localhost createrepo]# rpm -ivh *
[root@localhost createrepo]# rpm -ivh deltarpm-3.6-3.el7.x86_64.rpm
[root@localhost createrepo]# rpm -ivh python-deltarpm-3.6-3.el7.x86_64.rpm
[root@localhost createrepo]# rpm -ivh libxml2-2.9.1-6.el7.5.i686.rpm
[root@localhost createrepo]# rpm -ivh libxml2-python-2.9.1-6.el7.5.x86_64.rpm
[root@localhost createrepo]# rpm -ivh createrepo-0.9.9-28.el7.noarch.rpm
至此createrepo离线安装成功,个人认为离线环境最麻烦的一步完成了。
二、yum本地源搭建
参考这篇博客,很简单,只有三步。
- 创建一个目录,将所需rpm包都放进去;
- 用指令
createrepo /yourdict
为其创建一个repodata目录,使之成为rpm仓库; - 创建.repo配置文件指向到本地仓库的路径,注意文件名一定要是.repo结尾。
$ vi /etc/yum.repos.d/test.repo
# 如果之前yum.repos.d下有东西,给它改名 .bak
[test]
name=test #yum仓库的名字
baseurl=file:///yourdict #仓库路径,由于是放在本地的只能用file协议而不是http
enabled=1 #开启该仓库
gpgcheck=0 #不做gpg检查
只需要将python3所需的全量依赖放到源目录下,到离线环境中直接 yum install python3
即可,yum会自动为我们解决依赖问题,久违地方便。
这里注意是python3,如果只写python的话默认是python2.
且检查是否安装成功时,是 python3 -V
,返回是python 3.6.8
三、配置python3各种包
如果windows用pycharm远程连接服务器,参考这篇博客
注意:pycharm 社区版的Tools中没有远程Deployment功能,必须得用专业版才行。
服务器上Python环境的外部包储存路径是/usr/local/lib64/python3.6/site-packages
,只需要将这个路径拷到离线环境中即可调用其中的包。