将 shell 脚本打包到 rpm 包中
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将 shell 脚本打包到 rpm 包中相关的知识,希望对你有一定的参考价值。
下以操作最好在虚拟机上操作:如 Docker 最方便了
1. 安装 rpmbuild
yum -y install rpmbuild rpmdevtools -y
2. 生成打包路径
使用 rpmdev-setuptree ,会自动在用户家目录生成一个 rpmbuild 的文件夹,作为工作路径
cd rpmbuild/SPECS 路径,创建 filename.spec 文件(打包 shell 脚本示例),详细含义查阅相关文档
Name: name Version: 0.1.0 Release: 1%{?dist} Summary: 描述 License: 软件版权许可证 Group: Enterprise/xxx Vendor:XXXX Requires: 依赖的软件包 %description 描述
%install
mkdir -p \\
%{buildroot}%{_sysconfdir}
%prep %files # 想打包的文件,也是你安装时要安装的目录 %defattr(-,root,root,-) # 默认权限 /etc/abc.sh # 想打包的文件 %doc %pre %post %preun # 程序卸载时执行的操作,上面想打包的文件不用写,卸载时会删除.可以在此处删除一些其它文件或其它操作 rm -rf /etc/a.conf rm -rf /etc/b.conf %changelog
%files 下也可以打包目录
3. 执行打包命令 rpmbuild -bb filename.spec
这类报错: error: File not found: /root/rpmbuild/BUILDROOT/name-0.1.0-1.el6.x86_64/etc/abc.sh
在上面 %install 中可能是你的目录没有创建,具体变量对应的目录查看下面 官方文档 链接都能找到
rpm包会放在 rpmbuild/RPMS/x86_64 这个路径下.完成
也可以使用 rpmbuild --buildroot=/dir -bb filename.spec 命令,其中 dir 目录最好为空,在其下创建 filename.spec 中想打包的目录,并将文件移动过去.
仅供参考
详细文档:
http://jaminzhang.github.io/linux/use-rpmbuild-to-build-custom-RPM-package (文中参考链接值得一看)
http://4270819.blog.51cto.com/4260819/862880
http://murongqingqqq.blog.51cto.com/2902694/1396751
以上是关于将 shell 脚本打包到 rpm 包中的主要内容,如果未能解决你的问题,请参考以下文章