在我担任系统管理员期间,我遇到过一些应用程序不提供rpm包来安装在基于redhat的分发版上,而只提供源tarball。源tarball没有提供规范文件,这将简化rpm包的创建过程。相反,源tarball只提供了一个bash/ksh/脚本,该脚本必须作为root执行才能在系统上安装应用程序。
我试图创建一个rpm包,它基本上运行安装脚本来执行安装脚本。我还试图做正确的事情,尝试以非root用户的身份rpmbuild包,并尽我所能修改安装脚本,以确保脚本的安装目录引用rpm environmental/macro。但对于几百行长的复杂安装脚本,它也会调用其他脚本。。。嗯,我的努力注定会失败。
有没有更好的方法来包装这种无规格的源代码tarball?更好的解决方案是:
- 在安装应用程序之前以某种方式拍摄系统快照
- 使用提供的安装脚本安装源tarball
- 安装后拍摄系统的快照,并确定安装所做的更改/添加
- 将更改/添加的列表放在spec文件中,并以这种方式创建rpm包
任何对这个问题有用/相关/有指导性/有趣/深刻的意见和建议都将不胜感激。
提前感谢
我认为最好的解决方案是请求上游为应用程序提供规范文件。另一种方法可以是请求体验包维护人员对应用程序进行打包。或者,您可以在checkinstall使用Makefile跟踪安装文件时进行探索。如果你想包装自己,你应该阅读这个链接,因为它提供了解释和许多例子。
我见过很多像你提到的脚本,我想我可以肯定地告诉你,是哪家公司向你出售这些可怕的安装。
您最好的选择是请求一个合适的可安装软件包。阅读为什么包比配置更好;制作让install和比这个install.sh更好。有了这些,即使是谈话要点,也要努力让它们进入第三个千年。这将是艰难的,但最终是最有收获的。
除此之外,您将需要构建该包(现在您已经阅读了原因)。不幸的是,有些应用程序和供应商的有效负载无法打包,因为他们编译、查询目标主机、寻找许可证、编译更多等等。