适用版本:centOS 6gcc 4.4.7Python 3.10

有时因为在内网环境里,禁止连接公网,但是又要安装gccpython,这时就要借助一台联网的电脑,下载rpm安装包和python源码包,再通过 U 盘复制到目标主机,进行离线安装。

1. 事前准备

操作之前准备好以下物品:

1. 一台联网的计算机
2. 一个 U 盘
3. 目标主机

联网的计算机用于下载各类安装包,U 盘则将安装包通过物理接口转移到目标主机中。

2. 下载 rpm 包

在联网的计算机中下载需要的rpm包。

centOS 6的相关镜像在官方、阿里、清华等镜像站均已下线,但可以在以下网站中找到:

https://vault.centos.org/6.9/os/x86_64/Packages/

按照下面两节下载相应的包,下载完成后如图:

图 1-1 下载 rpm 包

2.1. gcc 相关包

在提供的网站上ctrl+f搜索以下包,并点击下载:

1. cloog-ppl
2. cpp
3. gcc
4. glibc-devel
5. glibc-headers
6. kernel-headers
7. libgomp
8. mpfr
9. ppl

python在编译安装过程中需要用到gcc编译器。

2.2. python 相关包

在提供的网站上ctrl+f搜索以下包,并点击下载:

1. zlib-devel

python在编译安装过程中需要用到此包。

3. 下载 Python 源码包

在联网的计算机中打开官方网站下载源码包:

图 2-1 下载 python 3.10 源码包

4. 安装 gcc 等 rpm 包

rpm包通过 U 盘复制到目标主机的任一目录下,并在此目录下执行:

bash
1
rpm -ivh *.rpm --force --nodeps

5. 编译安装 python

python源码包通过 U 盘复制到目标主机的任一目录下,并在此目录下执行:

bash
1
2
3
4
5
tar -xzvf Python-3.10.0.tgz
cd Python-3.10.0
# --prefix 定义了安装目录
./configure --prefix=/usr/local/python3 --enable-shared
sudo mkdir /usr/local/python3

上述代码完成了源码包的解压与配置,继续执行代码完成编译安装:

bash
1
2
make
sudo make install

接下来建立软链,便与直接通过python3pip3命令执行pythonpip,通过这样的方法,可以将python 2python 3共存:

bash
1
2
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

6. 复现 python 环境

第四节只是安装了python主程序,但是实际工程中需要通过pip下载很多依赖包,不幸的是,目标主机并没有联网,该怎么办?

我们在联网的计算机上配置好我们需要的python环境,通过pip下载好我们需要的依赖包,全部完成后,新建一个目录执行:

bash
1
pip freeze > requirements.txt

requirements.txt中即包含了当前环境的所有依赖包,接下来执行以下命令,将依赖包全部下载到pip_packages目录下:

bash
1
pip download -r requirements.txt -d ./pip_packages

requirements.txtpip_packages目录通过 U 盘复制到目标主机的任一目录,执行以下命令安装全部依赖:

bash
1
pip3 install --no-index --find-links=./pip_packages -r requirements.txt

至此,python环境复现完成。

7. 参考

  1. Linux离线安装gcc4.8
  2. Linux中源码编译安装Python3
  3. 打包某个Python包所有依赖,进行离线安装–以pyecharts为例