Centos7 预编译安装包制作

66次阅读
没有评论

共计 2666 个字符,预计需要花费 7 分钟才能阅读完成。

AI 智能摘要
本文介绍了在 Linux 系统上针对 Python、OpenSSL、Redis 和 Nginx 的预编译安装包的制作方法。通过下载源码、安装依赖、编译、配置和打包,将生成的文件移植到其他环境中。文中详细列出了编译安装步骤,并强调了配置文件的修改与环境变量设置对依赖库查找路径的影响,以提高编译效率及跨环境的一致性与复用性。
— 此摘要由 AI 分析文章内容生成,仅供参考。

预编译安装包

在 Linux 服务器上,经常会安装 Python、Redis、Nginx 等服务,不管离线、在线都需要编译、编译之前还需要安装一些依赖的环境,比如,openssl、gcc、g++ 等,但是 make 编译的时间过于长,严重影响心情,希望制作一个符合当前系统的预先编译好的包,可以拿来即用的。

编译 Python3.9.8

在线环境安装所需依赖

yum install -y ncurses-devel gdbm-devel xz-devel sqlite-devel tk-devel uuid-devel readline-devel bzip2-devel libffi-devel

下载安装包到/usr/local/src

cd /usr/local/src
mkdir python
cd python
wget https://www.python.org/ftp/python/3.9.8/Python-3.9.8.tgz
tar xzf Python-3.9.8.tgz 
cd Python-3.9.8

编译安装到/usr/local/python398

./configure --prefix=/usr/local/python398
make
make install

查看版本

python version

打包编译好的包

cd /usr/local
tar  -zcvf  python3.9.8.tar.gz  python398

复制到别的环境测试,并解压

tar  -zxvf  python3.9.8.tar.gz
cd  python3.9.8

查看结构

[root@centos python398]# ll
total 0
drwxr-xr-x. 2 root root 196 Aug 24 16:43 bin
drwxr-xr-x. 3 root root  23 Aug 24 16:06 include
drwxr-xr-x. 4 root root  62 Aug 24 16:06 lib
drwxr-xr-x. 3 root root  17 Aug 24 16:06 share
[root@centos python398]#

进入 bin 目录,修改以下文件

  • 2to3-3.9
  • idle3.9
  • pip3
  • pip3.9
  • pydoc3.9
#!/usr/local/python398/bin/python3.9  # 替换成自己的解压目录
# -*- coding: utf-8 -*-
import re
import sys
from pip._internal.cli.main import main
if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script.pyw|.exe)?$', '', sys.argv[0])
    sys.exit(main())

设置软连接

ln -s /usr/local/python398/bin/python3.9  /usr/bin/python3.9
ln -s /usr/local/python398/bin/pip3.9  /usr/bin/pip3.9

预编译 openssl

安装依赖

yum install -y gcc gcc-c++ autoconf automake zlib zlib-devel pcre-devel

下载安装/usr/local/src

cd /usr/local/src
mkdir openssl
cd openssl
wget https://www.openssl.org/source/openssl-1.1.1q.tar.gz --no-check-certificate
tar xzf openssl-1.1.1q.tar.gz 
cd openssl-1.1.1q

编译安装

./config --prefix=/usr/local/openssl1.1.1q
make
make install
echo "/usr/local/lib64/" >> /etc/ld.so.conf
ldconfig
mv /usr/bin/openssl /usr/bin/openssl.bak
ln -s /usr/local/bin/openssl /usr/bin/openssl

检查 openssl 版本

openssl version

同样压缩好编译后的安装包,并同步到其他机器, 测试执行 openssl version 检查版本

./openssl: error while loading shared libraries: libssl.so.1.1: cannot open
# 这个文件在系统中没找到,但搜索发现在:/usr/local/openssl1.1.1q/lib/libssl.so.1.1
意思是 openssl 自带了

执行以下命令,注意是自己的路径

export LD_LIBRARY_PATH=//usr/local/openssl1.1.1q/lib:$LD_LIBRARY_PATH

运行时动态库的搜索路径的先后顺序

  • 编译目标代码时指定的动态库搜索路径;
  • 环境变量 LD_LIBRARY_PATH 指定的动态库搜索路径;
  • 配置文件 /etc/ld.so.conf 中指定的动态库搜索路径;
  • 默认的动态库搜索路径 /lib 和 /usr/lib;

预编译 Redis

 wget http://download.redis.io/releases/redis-6.2.12.tar.gz
 tar -zxvf redis-6.2.12.tar.gz
 make 
 make install PREFIX=/usr/local/redis6.2

完成后,/usr/local/redis6.2 下面会生成bin

将解压后的配置文件复制跟 bin 同目录

root@sun75 redis6.2]# pwd
/usr/local/redis6.2
[root@sun75 redis6.2]# ll
total 92
drwxr-xr-x. 2 root root   150 Aug 24 17:30 bin
-rw-r--r--. 1 root root 93843 Aug 24 17:36 redis.conf
[root@sun75 redis6.2]#

编译包已经算是完整,修改配置文件测试

daemonize yes # 后台启动
bind 0.0.0.0 # 开启远程访问
requirepass 123456 # 设置密码

打包,在别的环境测试。

预编译 nginx

类同

cd /usr/soft
mkdir nginx
wget http://nginx.org/download/nginx-1.13.7.tar.gz
tar -xvf nginx-1.13.7.tar.gz
./configure --prefix=/usr/soft/nginx
make
make install

打包即可

正文完
 0
评论(没有评论)