安装rpmReBuild
下载并安装到指定目录(如/opt/tools/installed):
步骤1:创建主目录并下载安装包
cd /opt/tools/installed
mkdir rpmrebuild
cd rpmrebuild
wget https://sourceforge.net/projects/rpmrebuild/files/rpmrebuild/2.14/rpmrebuild-2.14.tar.gz
步骤2:解压并安装
tar xvfz rpmrebuild-2.14.tar.gz
make
make install
得到rpmrebuild主目录:/opt/tools/installed/ rpmrebuild
RPM包制作(hadoop例)
步骤1:解压hadoop_*.x86_64.rpm并复制到SPECS目录
rpmrebuild -s ./hadoop.spec -p hadoop_*.x86_64.rpm #解析出spec文件
cp hadoop.spec /root/rpmbuild/SPECS #复制生成的文件到指定目录
并编辑hadoop.spec文件,修改改文件关于x86_x64为aarch64
步骤2:创建编译文件夹
cd /root/rpbuild/BUILDROOT
mkdir hadoop_*.aarch64
步骤3:解压HDP的主rpm包,并复制到BUILDROOT
rpm2cpio hadoop_*.x86_64.rpm | cpio –dim ##进入hdp主包目录,解压rpm包(x86的)
cp –r usr /root/rpmbuild/BUILDROOT #复制生成的解压目录如:usr目录文件到指定目录
步骤4:checkso 分析usr目录,决定替换文件
步骤5:移植替换文件
结合HDP主组件包源代码编译生成的jar包和库与二进制包等和checkso分析的结果想结合,分别替换/root/rpmbuild/BUILDROOT目录下的文件jar文件(参考:JarResult.log)、库文件和二进制文件(参考NoJarResult.log)、tar文件(out.csv)等。
注意:
每次替换完成后,使用checkso重新检查。实在无法替换的,考虑寻找源码编译替换,如个别库文件。
替换原则:越精细越好;不能删除rpm解压包中的二进制文件。建议点对点一对一替换。
步骤6:执行打包
当checkso都没有问题时,考虑使用如下指令打包
rpmbuild -bb /root/rpmbuild/SPECS/hadoop.spec
生成成功后,会在/root/rpmbuild/RPMS文件家中生成新的rpm包
hadoop_*.aarch64.rpm