从源tarball创建rpm包 - 但tarball不包含spec文件,只包含安装脚本

时间:2011-06-10 03:17:10

标签: packaging rpm rpmbuild rpm-spec software-packaging

在我作为SysAdmin的时候,我遇到的应用程序没有提供rpm软件包来安装在基于redhat的发行版上 - 只有源代码tarball。源tarball不提供可以简化rpm包创​​建过程的spec文件。相反,源tarball仅提供bash / ksh /脚本,必须以root身份执行才能在系统上安装应用程序。

我尝试创建一个rpm包,它基本上运行安装脚本来执行安装脚本。我还试图通过尝试以非root用户的身份rpmbuild包来做正确的事情,并尽可能地修改安装脚本以确保脚本的安装目录引用rpm enviromentals / macros。但是有一个复杂的安装脚本长达几百行,这也会调用其他脚本......好吧,我在这方面的努力一定会失败。

有没有更好的方法来打包这样的.spec-less源码tarball?更好的解决方案是:

  1. 以某种方式在应用程序安装之前拍摄系统快照
  2. 使用提供的安装脚本安装源tarball
  3. 在安装后拍摄系统快照,并确定安装所做的更改/添加
  4. 将更改/添加列表放在spec文件中,并以这种方式创建rpm包?
  5. 对此问题的任何有用/相关/指导/有趣/深刻的意见和建议将不胜感激。

    提前谢谢

2 个答案:

答案 0 :(得分:0)

我认为最好的解决方案是请求上游为应用程序提供spec文件。另一种方法是请求体验包维护者来打包应用程序。或者你可以探索checkinstall,因为它使用Makefile跟踪安装文件。如果你想打包自己,你应该阅读这个link,因为它提供了解释和许多例子。

答案 1 :(得分:0)

我见过很多像你这样的剧本,我怀疑我可以肯定地告诉你,公司会把这些可怕的装置卖给你。

您最好的选择是申请一个适当的可安装包裹。阅读为什么包比configure更好; make; make-install并且比这个install.sh废话更好。有了它,即使它的谈话要点,试着让它们进入第三个千年。这将是艰难的,但最终是最有益的。

除此之外,您将需要构建该软件包(现在您将了解原因)。不幸的是,有一些应用程序和供应商的有效负载无法打包,因为他们编译,查询目标主机,寻找许可证,编译更多等等。我的偏见在这里得到了很好的磨练。