首页 > 技术文章 > fpm打包神奇rpm包升级python2.7.16

southtianmen 2019-04-17 23:20 原文

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 就可以了。

  

 

推荐阅读