首页 > 编程语言 >Python预安装包制作

Python预安装包制作

时间:2023-09-07 16:34:19浏览次数:44  
标签:bin tar Python 安装包 openssl local usr root 制作

预编译安装包

在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

打包即可

标签:bin,tar,Python,安装包,openssl,local,usr,root,制作
From: https://www.cnblogs.com/nwnusun/p/17685301.html

相关文章

  • Python循环语句
    Python循环语句while基础使用条件需提供布尔类型结果,True继续,False停止规划好循环终止条件,否则会一直循环i=0whilei<100:print("输出了",i,"次哈哈哈")i+=1#结果输出了0次哈哈哈输出了1次哈哈哈输出了2次哈哈哈输出了3次哈哈哈...省......
  • 七天入门Python(一)
    七天入门Python(一)大家好,我是Antvictor,一个励志要成为架构师的程序员。闲话少说,接下来请和我一起进入《七天入门Python》,首先是Python安装。Python安装从Python官网找到Download下载对应的安装包,python3.6及以上即可。Python官网会根据系统默认展示对应系统的最新版本安装包,下载成......
  • 8天长假快来了,Python分析【去哪儿旅游攻略】数据,制作可视化图表
    目录前言环境使用模块使用数据来源分析代码实现导入模块请求数据解析保存数据可视化导入模块、数据年份分布情况月份分布情况出行时间情况费用分布情况人员分布情况前言2023年的中秋节和国庆节即将来临,好消息是,它们将连休8天!这个长假为许多人提供了绝佳的休闲机会,让许多人都迫不......
  • Python实现自动登录+获取数据
    前言Dy这个东西想必大家都用过,而且还经常刷,今天就来用代码,获取它的视频数据环境使用Python3.8Pycharm模块使用requestsseleniumjsonre一.数据来源分析1.明确需求明确采集网站以及数据内容网址:https://www.dy.com/user/MS4wLjABAAAAB0-gppwu15DtJJZmMpgUqakr7Jw_pmr7skR3I......
  • 小红书美食秘籍:制作令人垂涎的甜点
    小红书美食秘籍:制作令人垂涎的甜点嘿,小红书的朋友们!今天我要分享一些令人垂涎欲滴的甜点制作秘籍,让你成为家庭中的烘焙达人。无论是为了自己还是为了招待客人,这些甜点都能给你带来绝对的口感享受。废话不多说,让我们开始吧!1.......
  • Automate the Boring Stuff with Python(读后感)
    这里主要就是记录下这本书的主要内容,自己以后想起来的时候可以直接看这个博客整本书的内容看目录就很清楚了,所以下面就是目录加自己的一点心得体会Python编程基础基础中的基础,但有个很重要的轮子PrettyPrint:把输出打印的更漂亮自动化任务这是重点,一次性肯定记不下来,智能以后......
  • 【爬虫笔记】Python爬虫简单运用爬取代理IP
    一、前言近些年来,网络上的爬虫越来越多,很多网站都针对爬虫进行了限制,封禁了一些不规则的请求。为了实现正常的网络爬虫任务,爬虫常用代理IP来隐藏自己的真实IP,避免被服务器封禁。本文将介绍如何使用Python爬虫来获取代理IP,以及如何在爬虫中使用代理IP。二、获取代理IP获取代理IP有两......
  • python基础 06while循环和for循环
    while循环当你需要重复干一件事情的时候,叫做循环age=17whileTrue:inp_age=int(input('age:'))ifinp_age>age:print('猜大了')elifinp_age<age:print('猜小了')else:print('猜对了')......
  • Python判断多个文件夹的文件夹名是否包含“分公司”或“营销中心”怎么处理?(方法一)
    大家好,我是皮皮。一、前言前几天在Python最强王者群【哎呦喂 是豆子~】问了一个Python自动化办公的问题,一起来看看吧。大佬们请问下 判断多个文件夹的文件夹名是否包含“分公司”或“营销中心” 有没有什么简便的办法可以实现呀?二、实现过程这里粉丝自己其实已经给了一......
  • 软件测试|Python random模块,超乎想象的强大
    Python的random模块是一个非常强大的工具,用于生成随机数和随机选择。它提供了许多函数和方法,可以满足各种随机化需求。本文将介绍random模块的基本功能和常见用法,以帮助读者更好地理解和利用这个模块。返回整数random.randange()语法如下:random.randrange(stop)random.ran......