预编译安装包

在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

注意

遇到以下错误则执行make MALLOC=libc

cc: error: ../deps/jemalloc/lib/libjemalloc.a: No such file or directory
make[1]: *** [redis-server] Error 1
make[1]: Leaving directory `/root/test/redis-6.2.12/src'
make: *** [all] Error 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

打包即可

Python预安装包制作的更多相关文章

  1. (转)python 模块安装包 制作

    转自: http://testerhome.com/topics/539 用过python的同学对于python setup.py install肯定不会陌生.那么我们自己如果封装了很多的方法怎么很好 ...

  2. 安装包制作工具 SetupFactory使用1 详解

    2014-11-19 Setup Factory 是一个强大的安装程序制作工具.提供了安装制作向导界面,即使你对安装制作不了解,也可以生成专业性质的安装程序.可建立快捷方式,也可直接在 Windows ...

  3. [程序安装包制作] Advanced Installer 备忘

    原文:[程序安装包制作] Advanced Installer 备忘 Product Information - Product Details 这个重点是Product Version.讲这个之前, ...

  4. 安装包制作工具 SetupFactory 详解

    Setup Factory 是一个强大的安装程序制作工具.提供了安装制作向导界面,即使你对安装制作不了解,也可以生成专业性质的安装程序.可建立快捷方式,也可直接在 Windows 系统的注册表加入内容 ...

  5. 使用Setup Factory安装包制作工具制作安装包

    在我们开发完软件后,除了极个别案例我们把整个目录复制给客户用外,我们一般都需要做成安装包,方便整个软件的部署操作,以安装包的部署操作可能简单的是复制文件,也可能包括一些注册表.数据库等额外的操作,不过 ...

  6. 基于InstallShield2013LimitedEdition的安装包制作

    在VS2012之前,我们做安装包一般都是使用VS自带的安装包制作工具来创建安装包的,VS2012.VS2013以后,微软把这个去掉,集成使用了InstallShield进行安装包的制作了,虽然思路差不 ...

  7. vs2017 rc 离线安装包制作

    vs2017 rc 离线安装包制作 1.下载在线安装包:https://aka.ms/vs/15/release/vs_Enterprise.exe 2.制作离线安装包: vs_Enterprise. ...

  8. Mac OS平台下应用程序安装包制作工具Packages的使用介绍

    一.介绍 Windows下面开发好的应用程序要进行分发时有很多打包工具可供选择,如Inno Setup, InstallShield, NSIS, Advanced Installer, Qt Ins ...

  9. Windows版的各种Python库安装包下载地址与安装过程

    在用Python开发时(Windows环境),会碰到需要安装某个版本的第三方库,为了以后查找.安装方便,总结如下: windows版的各种Python库安装包下载地址:http://www.lfd.u ...

  10. Windows安装包制作指南——Advanced Installer的使用

    1. 前言 最近需要制作windows的安装包,据说Advanced Installer比较强大,遂拿它来制作安装包.在网上少量资料以及官网简约文档中摸索前进,总算是制作出可用的安装包,在此记录,仅供 ...

随机推荐

  1. P4823 [TJOI2013] 拯救小矮人

    感觉这个题的操作很新奇,做个记录. P4823 [TJOI2013] 拯救小矮人 大概题面: 一群小矮人掉进了一个很深的陷阱里,由于太矮爬不上来,于是他们决 定搭一个人梯.即:一个小矮人站在另一小矮人 ...

  2. FFmpeg开发笔记(四十九)助您在毕业设计中脱颖而出的几个流行APP

    ​对各高校即将毕业的学子来说,毕业设计算是在大学里的最后一个大作业.特别是软件.计算机.电子等相关专业,毕业设计非常讲究实操,往往要求实现一个实用的.可用的.易用的软件系统或手机APP. 不管是软件还 ...

  3. SpringMVC:文件上传和下载

    文件下载 ResponseEntity用于控制器方法的返回值类型,该控制器方法的返回值就是响应到浏览器的响应报文 使用ResponseEntity实现下载文件的功能 @RequestMapping(& ...

  4. vue导出word文档

    具体需求 在我的疫情可视化项目中有一个功能需要导出word文档,在页面点击按钮后处理数据生成word文件,然后自动下载文档. 实现步骤 多番查询后发现前端导出word,使用docxtemplater较 ...

  5. Angular Material 18+ 高级教程 – CDK Accessibility の Focus

    介绍 CDK Focus 是对原生 DOM focus 的上层封装和扩展. Focus Origin 原生 DOM focus 我们只能知道 element 被 focus 了,但是无法知道它是怎么被 ...

  6. TEN Framework 入坑记

    TL;DR TEN Framework 最初叫 Astra,后改为 TEN,即 Transformative Extensions Network. 我第一次见到 TEN (那时还叫 Astra)是在 ...

  7. PHP中几种常见的开发模式

     设计模式 单例模式 $_instance必须声明为静态的私有变量 构造函数和析构函数必须声明为私有,防止外部程序new 类从而失去单例模式的意义 getInstance()方法必须设置为公有的,必须 ...

  8. ARM SMMU原理与IOMMU技术(“VT-d” DMA、I/O虚拟化、内存虚拟化)

    名词缩写 ASID:Address Space ID 地址空间标识符 CD:Context Descriptor: 上下文描述符: CTP:Context-table pointer 上下文表指针 E ...

  9. gadget驱动框架(二)

    usb_composite_driver的创建于注册 源码:drivers/usb/legacy/serial.c //创建usb_composite_driver static struct usb ...

  10. ADO.NET 连接数据库 【vs2022 + sqlServer】

    using System.Data; using System.Data.SqlClient; namespace Zhu.ADO.NET { internal class Program { pri ...