fpm打包神奇rpm包升级python2.7.16
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的更多相关文章
- fpm 打包跨平台rpm 包的一个问题
平时我们开发机器可能使用的是mac 系统,但是部署机器kennel是linux,默认会有一个操作系统的问题, 我们可以在打包的时候指定os版本信息 参考 --rpm-os linux 参考例子 一个构 ...
- fpm定制化RPM包之nginx rpm包的制作
fpm定制化RPM包之nginx rpm包的制作 1.安装ruby模块 # yum -y install ruby rubygems ruby-devel 2.添加阿里云的Rubygems仓库,国外资 ...
- FPM简介(定制rpm包)
FPM简介 fpm是生成rpm包的工具.rpm包的制作,采用fpm工具完成,FPM非常易用,此命令可以把rpm包的安装.卸载做得更加优雅,在安装前可以做一些准备工作,安装后可以做一些收尾工作,在卸载前 ...
- 编译制作Linux 3.18内核rpm包(升级centos6.x虚拟机内核)
介绍 openstack平台需要使用各种Linux发行版模板镜像,其制作方法主要有两种,要么是基于各大Linux发行版ISO光盘手动制作,要么是使用官方提供的模板镜像再做修改 之前制作的opensta ...
- 基于FPM制作nginx RPM包
目录 环境 配置 FPM安装 环境 系统 其它 CentOS 7.5 需提前配置好epel 配置 [root@localhost ~]# yum clean all && yum ma ...
- 将 shell 脚本打包到 rpm 包中
下以操作最好在虚拟机上操作:如 Docker 最方便了 1. 安装 rpmbuild yum -y install rpmbuild rpmdevtools -y 2. 生成打包路径 使用 rpmd ...
- Ceph 客户端的 RPM 包升级问题
问题 最近想把一个现有的 Ceph 客户端升级为最新的 M 版: [root@overcloud-ovscompute-0 ~]# rpm -qa | grep ceph puppet-ceph-2. ...
- fpm来制作rpm包
转自 http://blog.halfss.com/blog/2013/02/26/fpmbao-guan-li/ 另查看 http://my.oschina.net/lxcong/blog/1438 ...
- FPM定制RPM包实践
1.1 快速部署方案 ✔ 问题:当领导给你 100 台已经安装好系统的服务器,然后让优化,让你提出一个快速部署方案. 解答: 1.tar 打包 先编译安装 打包-->分发-->解包(比如 ...
随机推荐
- cocos2dx 3.2 内存管理
一.引用计数(cocos2d-x3.2的Node类中用到) 概念:记录当前对象被引用的次数.当次数为0时释放. 1 . retain 与 release 每调用一次retain()使计数+1 每调用 ...
- ThinkPhp3.1.3执行存储过程返回false
1.Tp在调用存储过程的时候,每次都显示false 返回一大片,下面是我自己的代码.
- B/S 端基于 HTML5 + WebGL 的 VR 3D 机房数据中心可视化
前言 在 3D 机房数据中心可视化应用中,随着视频监控联网系统的不断普及和发展, 网络摄像机更多的应用于监控系统中,尤其是高清时代的来临,更加快了网络摄像机的发展和应用. 在监控摄像机数量的不断庞大的 ...
- linux下执行脚本失败的解决办法
现象: 1的解决办法:赋予该文件可执行权限即可,chmod +x docker.sh 2的解决办法:https://blog.csdn.net/youzhouliu/article/details/7 ...
- vue element NavMenu 莫名出现蓝色边框
最近在开发一款官网,使用的是element,在头菜单NavMenu,的时候没有设置任何的边框属性,结果出现了如下图所示的边框线. 点击有二级菜单时出现 找了好多方法发现是有一个属性影响到了,:focu ...
- 百万年薪python之路 -- 面向对象之继承
面向对象之继承 1.什么是面向对象的继承 继承(英语:inheritance)是面向对象软件技术当中的一个概念. 通俗易懂的理解是:子承父业,合法继承家产 专业的理解是:子类可以完全使用父类的方法和属 ...
- [UWP]使用GetAlphaMask制作阴影
1. 前言 最近常常接触到GetAlphaMask,所以想写这篇文章介绍下GetAlphaMask怎么使用.其实GetAlphaMask的使用场景十分有限,Github上能搜到的内容都是用来配合Dro ...
- Linux下部署Jenkins
前提:已部署好JAVA 1.下载Jenkins库并添加到yum库: wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redha ...
- Apollo报错找不到apollo.meta的问题解决方案
问题描述 Apollo报错,找不到apoll.meta,但是明明配置了apollo-env.properties到apollo-client内了. apollo-env.properties pro. ...
- Java网络编程(一)Socket套接字
一.基础知识 1.TCP:传输控制协议. 2.UDP:用户数据报协议. 二.IP地址封装 1.InetAddress类的常用方法 getLocalHost() 返回本地主机的InetAddress对象 ...