生成 RPM 包太麻烦了,最近知道了一个名为 FPM 的神器,在此记录一下。
NOTE:测试系统为 RedHat 系的 CentOS 6.3,编译 Python 2.7.6 的 RPM 包。
由于 FPM 使用 Ruby
写成,因此系统中需要安装 Ruby
的运行环境(这里 gem
的源改为了 taobao 的镜像):
# Install ruby dependencies yum -y installrubyrubygemsruby-devel # Use taobao repo for ruby gems gemsources -a http://ruby.taobao.org/ # Remove origin repo from ruby gems gemsources --removehttp://rubygems.org/
在 Ruby
安装完成后,就可以使用 gem
安装 FPM 了:
geminstallfpm
Good.
在编译 Python 之前,需要安装开发工具和库:
# Install EPEL repository wgethttp://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm wgethttp://rpms.famillecollet.com/enterprise/remi-release-6.rpm rpm -Uvhremi-release-6*.rpmepel-release-6*.rpm # Install build toolchain yum -y groupinstall "Development tools" yum -y installopenssl-develreadline-develbzip2-develsqlite-develzlib-develncurses-develdb4-develexpat-devel
FPM 的使用比较简单,可以参考 FPM 的 使用说明 。
首先,下载 Python-2.7.6 的源码包并解压:
curl --progress-bar -LOhttp://mirrors.sohu.com/python/2.7.6/Python-2.7.6.tgz tarxfPython-2.7.6.tgz cdPython-2.7.6.tgz # Python2.7编译安装后会安装到这个目录,方便打包 exportINTERMEDIATE_INSTALL_DIR=/tmp/installdir-Python-2.7.6 # RPM包安装后Python2.7的目录 exportINSTALL_DIR=/usr/local LDFLAGS="-Wl,-rpath=${INSTALL_DIR}/lib ${LDFLAGS}" / ./configure --prefix=${INSTALL_DIR} --enable-unicode=ucs4 / --enable-shared --enable-ipv6 make makeinstallDESTDIR=${INTERMEDIATE_INSTALL_DIR} # 注意之前导出 INTERMEDIATE_INSTALL_DIR 和 INSTALL_DIR 这两个环境变量,这里还要使用 fpm -s dir -t -f rpm -n python27 -v '2.7.6' / -d 'openssl' / -d 'bzip2' / -d 'zlib' / -d 'expat' / -d 'db4' / -d 'sqlite' / -d 'ncurses' / -d 'readline' / --directories=${INSTALL_DIR}/lib/python2.7/ / --directories=${INSTALL_DIR}/include/python2.7/ / -C ${INTERMEDIATE_INSTALL_DIR} .
包含以下内容:
GitHub 项目地址: python27-rpm