如何从源码创建Postfix 2.11.11 RPM用于CentOS 6.7升级
如何为CentOS 6.7构建Postfix 2.11.11 RPM包用于批量升级
我帮你整理了一套基于CentOS官方配置的方案,不用从零写spec文件,能最大程度保证和现有Postfix安装的兼容性,避免破坏现有配置。步骤如下:
1. 搭建RPM构建环境
先在一台干净的CentOS 6.7机器上安装必要的工具和依赖:
yum install -y rpm-build gcc make openssl-devel db4-devel cyrus-sasl-devel libicu-devel
然后创建标准的rpmbuild目录结构:
mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS} echo '%_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros
2. 获取并修改官方Postfix spec文件
CentOS 6官方的Postfix spec是针对2.11.x分支的,直接拿来修改版本号就行,兼容性拉满:
- 先下载官方的Postfix源码包(SRPM):
yumdownloader --source postfix
- 安装这个SRPM来提取spec文件:
rpm -ivh postfix-2.11.6-*.src.rpm
现在spec文件会出现在~/rpmbuild/SPECS/postfix.spec
- 编辑spec文件,修改关键参数:
用vim或者nano打开文件,做以下修改:- 把
Version: 2.11.6改成Version: 2.11.11 - 将
Source0:对应的URL替换为你下载的postfix-2.11.11.tar.gz的路径(建议把源码包放到~/rpmbuild/SOURCES/目录,然后用相对路径) - 可以调整
Release号,比如改成Release: 1.el6.custom,方便区分自定义包和官方包 - 检查补丁列表:CentOS官方的补丁是针对2.11.6的,大部分在2.11.11上依然适用,如果遇到补丁报错,先注释掉,再去Postfix官网确认对应版本是否需要该补丁
- 把
3. 准备源码包
把你从Postfix官网下载的postfix-2.11.11.tar.gz复制到rpmbuild的源码目录:
cp postfix-2.11.11.tar.gz ~/rpmbuild/SOURCES/
4. 构建RPM包
执行构建命令:
rpmbuild -ba ~/rpmbuild/SPECS/postfix.spec
如果遇到依赖错误,按照提示安装对应的包即可;如果补丁报错,就针对性调整补丁内容或者移除不兼容的补丁。
5. 测试与批量升级
- 构建完成后,RPM包会在
~/rpmbuild/RPMS/[你的架构]/目录下(比如x86_64) - 先在一台测试机器上验证升级:
rpm -Uvh postfix-2.11.11-1.el6.custom.x86_64.rpm
- 验证版本和服务状态:
postconf mail_version service postfix restart && service postfix status
- 确认现有配置文件(
/etc/postfix/main.cf、master.cf)没有被覆盖(默认RPM升级会保留自定义配置,生成.rpmsave备份文件)
测试没问题后,就可以把这个RPM包分发到所有需要升级的机器,批量执行升级命令即可。
关键提示
- 不要用SuSE的SRPM直接编译,SuSE和CentOS的系统路径、依赖配置差异很大,报错是正常的
- 基于官方spec修改的RPM包,升级逻辑和官方包完全一致,不会破坏现有安装
- 如果遇到具体的编译错误,可以把错误信息贴出来,我可以帮你针对性排查
内容的提问来源于stack exchange,提问作者JustWantToLearn
相关产品推荐
相关产品推荐

