测试使用fpm将python3的源码打包成rpm来安装
一、基础环境 1、在tvm-base的基础上,复制一个镜像为tvm-rpm来测试。 2、网络: eth0:host-only(用于虚拟内网,手动固定IP,这样从宿主机可以直接连接到这个vm) eth1:NAT(用于上外网,动态IP) [root@tvm-rpm ~]# ip a s dev eth0 |grep global inet 192.168.56.253/24 brd 192.168.56.255 scope global eth0 [root@tvm-rpm ~]# ip a s dev eth1 |grep global inet 10.0.3.15/24 brd 10.0.3.255 scope global eth1 3. 配置yum源 [root@tvm-rpm ~]# mv /etc/yum.repos.d/CentOS* /tmp/ && echo ‘192.168.56.254 mirrors.office.test‘ >> /etc/hosts && wget http://mirrors.office.test/centos/local-office.repo -O /etc/yum.repos.d/local-office.repo && yum makecache [root@tvm-rpm ~]# yum update [root@tvm-rpm ~]# reboot [root@tvm-rpm ~]# mv CentOS-* /etc/yum.repos.d/ /tmp/ 二、配置fpm环境 1、安装ruby和fpm [root@tvm-rpm ~]# yum install ruby rubygems ruby-devel 更换gem的源: [root@tvm-rpm ~]# gem sources --remove http://rubygems.org/ [root@tvm-rpm ~]# gem sources -a http://mirrors.aliyun.com/rubygems/ [root@tvm-rpm ~]# gem sources -a https://ruby.taobao.org/ [root@tvm-rpm ~]# gem sources -l *** CURRENT SOURCES *** http://mirrors.aliyun.com/rubygems/ https://ruby.taobao.org/ [root@tvm-rpm ~]# gem -v 1.3.7 [root@tvm-rpm ~]# ruby -v ruby 1.8.7 (2013-06-27 patchlevel 374) [x86_64-linux] 安装fpm [root@tvm-rpm ~]# gem install fpm -V [root@tvm-rpm ~]# fpm --version 1.3.3 2、fpm的参数 参考:https://github.com/jordansissel/fpm/wiki % fpm -s <source type> -t <target type> [options] -s 源格式 -t 目标格式 -n 包名 -v version值,实际版本号 --iteration release值,发布序列号 --epoch epoch值 --vendor 厂商 --maintainer 维护者 --description 描述 --url 软件主页 --workdir fpm工作目录 -d 依赖的软件包 --directories 递归指定的目录标记为属于这个包 -C 切换到指定的目录 -p 输出到指定的路径 --force 强制覆盖文件 --after-install FILE 包安装后执行的脚本 --before-install FILE 包安装前执行的脚本 --after-remove FILE 包移除后执行的脚本 --before-remove FILE 包移除前执行的脚本 --after-upgrade FILE 包升级后执行的脚本 --before-upgrade FILE 包升级前执行的脚本 -e building前编辑spec文件 三、将python3的源码打包成rpm来安装 1、配置编译python环境所需的包 [root@tvm-rpm ~]# mkdir /data/{download,rpms} [root@tvm-rpm ~]# rpm -Uvh http://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm [root@tvm-rpm ~]# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm [root@tvm-rpm ~]# yum -y groupinstall "Development tools" [root@tvm-rpm ~]# yum -y install openssl-devel readline-devel bzip2-devel sqlite-devel zlib-devel ncurses-devel db4-devel expat-devel 下载最新的python源码包: [root@tvm-rpm ~]# wget https://www.python.org/ftp/python/3.4.3/Python-3.4.3.tgz -O /data/download/Python-3.4.3.tgz [root@tvm-rpm ~]# cd /data/download/ [root@tvm-rpm download]# tar xf Python-3.4.3.tgz [root@tvm-rpm download]# cd Python-3.4.3 [root@tvm-rpm Python-3.4.3]# [root@tvm-rpm Python-3.4.3]# export DIR_PY_SRC_INSTALL=/data/rpms/Python-3.4.3 [root@tvm-rpm Python-3.4.3]# export DIR_PY_RPM_INSTALL=/usr/local [root@tvm-rpm Python-3.4.3]# export LDFLAGS="-Wl,-rpath=${DIR_PY_RPM_INSTALL}/lib ${LDFLAGS}" [root@tvm-rpm Python-3.4.3]# ./configure --prefix=${DIR_PY_RPM_INSTALL} [root@tvm-rpm Python-3.4.3]# make [root@tvm-rpm Python-3.4.3]# make install DESTDIR=${DIR_PY_SRC_INSTALL} [root@tvm-rpm Python-3.4.3]# cd .. 我们来看一下,生成了那些目录和文件: [root@tvm-rpm Python-3.4.3]# cd /data/rpms [root@tvm-rpm Python-3.4.3]# ls Python-3.4.3/usr/local/ bin include lib share 2、开始打包 [root@tvm-rpm Python-3.4.3]# fpm -s dir -t rpm -n python3 -v ‘3.4.3‘ --iteration ‘1.el6‘ --epoch ‘0‘ --vendor ‘ Python Software Foundation‘ --maintainer ‘PC‘ --description ‘use fpm to make a pkg for python-3.4.3‘ --url ‘https://www.python.org/downloads/release/python-343/‘ --workdir /data/rpms -p /data/rpms/pkgs/ -C ${DIR_PY_SRC_INSTALL} --directories=${DIR_PY_RPM_INSTALL}/lib --directories=${DIR_PY_RPM_INSTALL}/include -d ‘openssl‘ -d ‘bzip2‘ -d ‘zlib‘ -d ‘expat‘ -d ‘db4‘ -d ‘sqlite‘ -d ‘ncurses‘ -d ‘readline‘ Created package {:path=>"/data/rpms/pkgs/python3-3.4.3-1.el6.x86_64.rpm"} 我们来看看包的内容: [root@tvm-rpm rpms]# rpm -qpi pkgs/python3-3.4.3-1.el6.x86_64.rpm Name : python3 Relocations: / Version : 3.4.3 Vendor: Python Software Foundation Release : 1.el6 Build Date: Wed 15 Jul 2015 04:55:17 PM CST Install Date: (not installed) Build Host: tvm-rpm Group : default Source RPM: python3-3.4.3-1.el6.src.rpm Size : 126285890 License: unknown Signature : (none) Packager : PC URL : https://www.python.org/downloads/release/python-343/ Summary : use fpm to make a pkg for python-3.4.3 Description : use fpm to make a pkg for python-3.4.3 3、安装测试 1)安装前: [root@tvm-rpm rpms]# ls /usr/local/{bin,include,lib,share/man} /usr/local/bin: /usr/local/include: /usr/local/lib: /usr/local/share/man/man1: 2)开始安装: [root@tvm-rpm rpms]# rpm -ivh pkgs/python3-3.4.3-1.el6.x86_64.rpm Preparing... ########################################### [100%] 1:python3 ########################################### [100%] [root@tvm-rpm rpms]# rpm -qa |grep python3 python3-3.4.3-1.el6.x86_64 3)安装后: [root@tvm-rpm rpms]# ls /usr/local/{bin,include,lib,share/man/man1} /usr/local/bin: 2to3 2to3-3.4 easy_install-3.4 idle3 idle3.4 pip3 pip3.4 pydoc3 pydoc3.4 python3 python3.4 python3.4-config python3.4m python3.4m-config python3-config pyvenv pyvenv-3.4 /usr/local/include: python3.4m /usr/local/lib: libpython3.4m.a pkgconfig python3.4 /usr/local/share/man/man1: python3.1 python3.4.1 执行python命令,查看版本: [root@tvm-rpm rpms]# python3 -c "import sys; print(sys.version)" 3.4.3 (default, Jul 15 2015, 14:40:59) [GCC 4.4.7 20120313 (Red Hat 4.4.7-11)] 4)卸载: [root@tvm-rpm rpms]# rpm -e python3-3.4.3-1.el6.x86_64 [root@tvm-rpm rpms]# ls /usr/local/{bin,include,lib,share/man/man1} /usr/local/bin: /usr/local/include: /usr/local/lib: /usr/local/share/man/man1: 符合预期。 四、TODO 1、打包几个其他的东西,例如php,zabbix-agent,自己的脚本等。 ZYXW、参考 1、fpm/wiki https://github.com/jordansissel/fpm/wiki 2、使用 FPM 创建 Python 的 RPM 包 http://theo.im/blog/2014/05/16/use-fpm-to-create-python-rpm-packages/ 3、使用FPM快速生成RPM包 https://linux.cn/article-3184-1.html
原文地址:http://nosmoking.blog.51cto.com/3263888/1675009