fpm打包神器
参考文档:https://www.cnblogs.com/flintlovesam/p/6594635.html


FPM的安装:
安装ruby环境和gem命令:

yum -y install ruby rubygems ruby-devel

  

查看当前源:

[root@localhost~]# gem source list
*** CURRENT SOURCES ***
https://rubygems.org/

  

添加国内源:

[root@localhost~]# gem sources -a http://mirrors.aliyun.com/rubygems/

  

移除国外源:

[root@localhost~]# gem sources --remove https://rubygems.org/

  

安装FPM工具:

[root@localhost~]# gem install fpm
[root@loaclhost~]#sed -i 's#keepcache=0#keepcache=1#g' \
/etc/yum.conf //开启yum缓存

  

FPM常用参数:
-s:表示制作包的来源,可以是dir目录,也可以是rpm包,或者deb包等等,通常我们会用dir目录自定义编译
-t:表示制作包的类型,可以是rpm包或者deb包等等
-n:指定包的名字
-v:指定包的版本号
-C:指定源文件目录
-d:指定依赖包名称,如 -d "libevent"
-f:第二次包时目录下如果有同名安装包存在,则覆盖它
-p:输出的安装包的目录,不想放在当前目录下就需要指定
--license 指定license名称,例如GPL
--description 指定描述信息
--url 指定软件的url信息
--iteration 指定迭代版本号,rpm包就叫做release
--post-install:软件包安装完成之后所要运行的脚本;同--offer-install
--pre-install:软件包安装完成之前所要运行的脚本;同--before-install
--post-uninstall:软件包卸载完成之后所要运行的脚本;同--offer-remove
--pre-uninstall:软件包卸载完成之前所要运行的脚本;同—before-remove

  


1 、下载安装python2.7源包

wget https://www.python.org/ftp/python/2.7.16/Python-2.7.16.tar.xz
tar xvf Python-2.7.16.tar.xz

  

2.、编译安装

./configure --prefix=/usr/local 

这个把python安装到/usr/local/下最后生成的可执行文件会到/usr/local/bin/python, /usr/local/bin 在系统环境变量中是在python2.6环境变量位置/usr/bin之前,所以在这个位置安装python2.7系统就会默认使用python2.7, 同时yum依赖的python2.6 /usr/bin/python 没有任何变化.
make && sudo make install DESTDIR=/tmp/installdir-python27
这个/tmp/installdir-python27这个目录是临时文件夹用来专门给 fpm打包用的

3、安装pip2.7

wget https://bootstrap.pypa.io/get-pip.py \
/tmp/installdir-python27/usr/local/bin/python2.7 get-pip.py

#这样pip2.7就会安装到临时文件夹/tmp/installdir-python27/usr/local/bin/下面,不过/tmp/installdir-python27/usr/local/bin/pip2.7中的头部python引用地址会多了/tmp/installdir-python27,把它改成/usr/lobal/bin/python2.7就ok了。

4、fpm 打包:

fpm -s dir -f -t rpm -n python --epoch 0 -v '2.7.16' --verbose -- \
description 'python2.7.16 build' --url 'www.easemob.com' --license \ 'BSD' -C /tmp/installdir-python27

  

5、安装新的python2.7 rpm包

为了更方便的在各个centos6系统中快速的安装python2.7, 我们可以把python2.7 rpm放到yum源中(如果已经有yum源了,可以直接copy过去,并执行createrepo --update /repo/path 来更新yum仓库)。
当然可以直接copy到centos6,直接安装rpm -ivh python-2.7.16-1.x86_64.rpm

6、异常处理

自定义安装的 python退格键和上下箭头无法正常使用
问题解决:
Linux系统自带的python箭头和退格键都可以正常使用,自定义安装的python退格键和箭头不可以正常使用,会出现">>> daf ^H^[[D "这样的怪东西。
其实问过了强大的google 后这个问题很简单,是因为readline库的问题。那么解决的方法就是:
yum install readline-devel.*
然后再去重新configure、make 、make install python 就可以了。

  

fpm打包神奇rpm包升级python2.7.16的更多相关文章

  1. fpm 打包跨平台rpm 包的一个问题

    平时我们开发机器可能使用的是mac 系统,但是部署机器kennel是linux,默认会有一个操作系统的问题, 我们可以在打包的时候指定os版本信息 参考 --rpm-os linux 参考例子 一个构 ...

  2. fpm定制化RPM包之nginx rpm包的制作

    fpm定制化RPM包之nginx rpm包的制作 1.安装ruby模块 # yum -y install ruby rubygems ruby-devel 2.添加阿里云的Rubygems仓库,国外资 ...

  3. FPM简介(定制rpm包)

    FPM简介 fpm是生成rpm包的工具.rpm包的制作,采用fpm工具完成,FPM非常易用,此命令可以把rpm包的安装.卸载做得更加优雅,在安装前可以做一些准备工作,安装后可以做一些收尾工作,在卸载前 ...

  4. 编译制作Linux 3.18内核rpm包(升级centos6.x虚拟机内核)

    介绍 openstack平台需要使用各种Linux发行版模板镜像,其制作方法主要有两种,要么是基于各大Linux发行版ISO光盘手动制作,要么是使用官方提供的模板镜像再做修改 之前制作的opensta ...

  5. 基于FPM制作nginx RPM包

    目录 环境 配置 FPM安装 环境 系统 其它 CentOS 7.5 需提前配置好epel 配置 [root@localhost ~]# yum clean all && yum ma ...

  6. 将 shell 脚本打包到 rpm 包中

    下以操作最好在虚拟机上操作:如 Docker 最方便了 1. 安装 rpmbuild yum -y install rpmbuild  rpmdevtools -y 2. 生成打包路径 使用 rpmd ...

  7. Ceph 客户端的 RPM 包升级问题

    问题 最近想把一个现有的 Ceph 客户端升级为最新的 M 版: [root@overcloud-ovscompute-0 ~]# rpm -qa | grep ceph puppet-ceph-2. ...

  8. fpm来制作rpm包

    转自 http://blog.halfss.com/blog/2013/02/26/fpmbao-guan-li/ 另查看 http://my.oschina.net/lxcong/blog/1438 ...

  9. FPM定制RPM包实践

    1.1 快速部署方案 ✔ 问题:当领导给你 100 台已经安装好系统的服务器,然后让优化,让你提出一个快速部署方案. 解答: 1.tar 打包 先编译安装 打包-->分发-->解包(比如 ...

随机推荐

  1. eclipse基础设置

    主要参考blog https://jingyan.baidu.com/article/d5a880eb6c4f7813f147ccef.html https://blog.csdn.net/Ricar ...

  2. Java ThreadLocal 的使用与源码解析

    GitHub Page: http://blog.cloudli.top/posts/Java-ThreadLocal-的使用与源码解析/ ThreadLocal 主要解决的是每个线程绑定自己的值,可 ...

  3. meterpreter读取hash明文记录

    今天测试某个站点时读hash老出错 这里做下读hash的笔记 进去meterpreter后getuid一 1 2 meterpreter > getuid Server username: NT ...

  4. PHP代码审计辅助脚本

    #!/usr/bin/env python import sys import os def main(): print ''' -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ...

  5. Ubuntu 设置默认以Root用户身份登录

    系统 :Linux ubuntu 4.4.0-31-generic #50-Ubuntu SMP Wed Jul 13 00:07:12 UTC 2016 x86_64 x86_64 x86_64 G ...

  6. 上手Typescript,让JavaScript适用于大型应用开发

    Typescript Typescript是一个基于静态类型的,能编译为JavaScript的JavaScript的超集.也就是说任何JavaScript都可以看成是Typescript,IDE能够更 ...

  7. 一个关于内联优化和调用约定的Bug

    很久没有更新博客了(博客园怎么还不更新后台),前几天在写一个Linux 0.11的实验 [1] 时遇到了一个奇葩的Bug,就在这简单记录一下调试过程吧. 现象 这个实验要求在Linux 0.11中实现 ...

  8. Halcon一日一练:创建AOI

    AOI:Area Of Interesting.感兴趣区域,即你要处理的区域. 一般情况,一整张图像,我们需要对局部进行操作,我们会选择一个我们需要处理的区域,对其进行处理,其他区域进行屏蔽.这个区域 ...

  9. MyBatis 开发手册

    这一遍看Mybatis的原因是怀念一下去年的 10月24号我写自己第一个项目时使用全配置文件版本的MyBatis,那时我们三个人刚刚大二,说实话,当时还是觉得MyBatis挺难玩的,但是今年再看最新版 ...

  10. SQL 方面基础操作,主要针对数据库方面的操作步骤

    SQL 结构化查询语言  适用于所有的SQL数据库 SQL  要求每条指令后末端 都要有分号(;),分号是标准方法,对服务器相同请求中执行一条以上的sql语句. 最终目的: 实现对数据库数据的  增 ...