化鲲为鹏,我有话说【最佳实践】spec语法差异导致的编译错误(持续更新)
化鲲为鹏,我有话说
【背景介绍】
我们在做华为云鲲鹏云服务移植的时候,如果使用源码编译成二进制,安装,如果部署的环境少,可以使用该方式。但是,一旦我们需要部署集群环境,上千台环境,这样使用二进制方式部署就很困难。这种集群场景我们推荐大家使用rpm方式管理包,单独提供一台yum源服务器,将你适配编译好的rpm(鲲鹏服务器上)放在yum源服务器上,其他需要部署业务的服务器只要可以访问yum源服务器即可完成自动安装部署。
推荐几个大家可以下载rpm源码的地址:
第一个、opensuse官网
第二个、fedora官网
但是因为centos与suse、fedora存在微小差异,spec文件语法兼容性需要微调。下面就是我整理的差异点,会持续更新。
1. centos与fedora在spec语法方面的差异
一、%ldconfig_scriptlets
%ldconfig_scriptlets是Fedora独有的,在centos平台编译rpm包时,会因为不识别%ldconfig_scriptlets而报错。
修改方法如下:
比如:%ldconfig_scriptlets 替换为:%post -p /sbin/ldconfig %postun -p /sbin/ldconfig 比如:%ldconfig_scriptlets gnutls 替换为:%post gnutls -p /sbin/ldconfig %postun gnutls -p /sbin/ldconfig |
二、Suggests
提示级别,建议删除后编译
三、Enhances
提示级别,建议删除后编译
四、Recommends
弱依赖,建议删除后编译
五、Supplements
弱依赖,建议删除后编译
2. 参考信息
https://rpm.org/user_doc/dependencies.html
- 点赞
- 收藏
- 关注作者
评论(0)