2022-12-27
说明
服务器系统升级,某些安装包官方停止更新,也找不到替代方案,尝试很多办法,只能反编译安装包,修改后使用。
分享
- 大数据博客列表
- 开发记录汇总
- 个人java工具库 项目https://gitee.com/wangzonghui/object-tool
- 包含json、string、集合、excel、zip压缩、pdf、bytes、http等多种工具,欢迎使用。
安装软件
安装 rpm-build
- yum直接安装:
yum install rpm-build -y
安装rpmrebuild
- 下载页面:
https://sourceforge.net/projects/rpmrebuild/files/rpmrebuild/2.15/rpmrebuild-2.15.tar.gz/download
- 下载地址:
wget https://jaist.dl.sourceforge.net/project/rpmrebuild/rpmrebuild/2.15/rpmrebuild-2.15.tar.gz
- 下载地址:
- 解压到:
/opt/rpm/rpmbuild/
- 配置rpm编译目录:
vi ~/.rpmmacros
,添加内容为:%_topdir /opt/rpm/rpmbuild/
- 创建目录:
mkdir /opt/rpm/rpmbuild/BUILDROOT && mkdir /opt/rpm/rpmbuild/SPECS
反编译
安装原软件
- 在可以安装的服务器上安装该软件:
yum install 软件名
查看包信息
- 安装服务:
yum install -y 软件名
- 获取包名:
rpm -qa|grep 软件名
- 假设包名为:model.x86_64
解压源rpm包
-
生成软件包封装规则文件,关文件并生成model.spec文件 :
cd /opt/rpm/rpmbuild/ && ./rpmrebuild.sh -s SPECS/model.spec model.x86_64
-
创建目录:
mkdir ~/data
,将rpm包移动到该目录下:mv rpm文件 ~/data && cd ~/data
-
解压rpm包:
rpm2cpio rpm包文件 |cpio -idv
-
创建封装目录:
mkdir /opt/rpm/rpmbuild/BUILDROOT/model.x86_64
-
将解压后文件夹和文件移到目录:
/opt/rpm/rpmbuild/BUILDROOT/model.x86_64
#删除data 下源rpm文件
rm -f ~/data/rpm文件
#移动解压文件到编译目录
mv ~/data/* /opt/rpm/rpmbuild/BUILDROOT/model.x86_64/
修改并生成
- 如果改源文件依赖包,可操作目录
/opt/rpm/rpmbuild/BUILDROOT/model.x86_64/
下文件,但文件改名或删除,必须同步修改编译过程文件:/opt/rpm/rpmbuild/SPECS/model.spec
- 修改编译过程文件:
vi /opt/rpm/rpmbuild/SPECS/model.spec
- 生成新编译包:
rpmbuild -ba /opt/rpm/rpmbuild/SPECS/abc.spec
- 文件生成目录:
/opt/rpm/rpmbuild/RPMS/
- 文件生成目录:
安装测试
- rpm安装:
- yum方式:
yum install 新rpm包
- rpm方式:
rpm -ivh 新rpm包
- yum方式:
总结
- rpm是一种安装包封装规则的结果,包含运行环境、依赖库、自身目录和文件等信息。
- 二次编辑大致是在安装后反向提取软件封装过程,然后解压源安装包获取源文件,通过修改解压后文件和封装过程文件,重新编译生成新安装包