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. 机器学习回顾篇(7):决策树算法(ID3、C4.5)

    .caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px so ...

  2. MVC ValidationAttribute 验证一个字段必须大于另一个字段

    [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter)] pu ...

  3. [Luogu3420][POI2005]SKA-Piggy Banks

    题目描述 Byteazar the Dragon has NNN piggy banks. Each piggy bank can either be opened with its correspo ...

  4. Luogu1119灾后重建

    题目背景 BBB 地区在地震过后,所有村庄都造成了一定的损毁,而这场地震却没对公路造成什么影响.但是在村庄重建好之前,所有与未重建完成的村庄的公路均无法通车.换句话说,只有连接着两个重建完成的村庄的公 ...

  5. 测试中常用sql

    1.增删改查 2.同一服务器下,要从一个数据库复制某张表到另一个数据库 create table test.sf_audit_plan as select * from v3_0_sf_full.sf ...

  6. c语言-----劫持原理

    1. 劫持原理介绍 (1) 通过劫持技术我们可以实现某些进程的拦截,比如禁止创建文件,禁止打开qq,禁止关机等等一系列的操作 (2) 弹窗拦截就是最常见的一种劫持技术的实现. 2. 使用的工具 (1) ...

  7. 在非洲运营互联网系统-PAYGo方案

    ​ 尼日利亚当地经济.支付.网络.供电.交通等基建都比较落后,虽然各方面都在缓慢增长,但当地人对高额的刚需产品仍望而却步. 其他非洲国家也有同样的问题. 同理国内,一些低收入人群都想买房,但房价动辄几 ...

  8. 2018.8.9 python中的动态传参与命名空间

    主要内容: 1.函数参数 ----动态传参 2.名称空间与作用域 3.函数的嵌套 4.global,nonlocal关键字 一.函数参数 ------动态传参 形参的第三种:动态传参 动态传参分为两种 ...

  9. MySQL字符集与排序规则总结

      字符集与排序规则概念 在数据库当中都有字符集和排序规则的概念, 很多开发人员甚至包括有些DBA都会将这个混淆,当然这个情况也有一些情有可原的原因.一来两者本来就是相辅相成,相互依赖关联: 另外一方 ...

  10. Luogu P1098 字符串的展开

    这几天划了划水看了看初赛的试题,没写什么随笔. 今天刷刷洛谷试炼场.(不要问为什么我还在普及区) 题目描述 在初赛普及组的“阅读程序写结果”的问题中,我们曾给出一个字符串展开的例子:如果在输入的字符串 ...