如何在没有规格文件等的情况下从一行中的源代码生成RPM?
我一直在阅读关于构建RPM的知识,而且这个过程相当复杂。有没有像这样的程序/软件:如何在没有规格文件等的情况下从一行中的源代码生成RPM?
- 下载tar.gz文件。解压到目录
- cd进入目录
- 运行
- RPM文件输出到目录
是否有这样的程序存在吗?看起来好像它应该。毕竟,当我运行make,make install等时,我不需要指定spec文件,提供软件安装位置。那么,为什么我必须为创建RPM做所有这些工作呢?
我使用检查安装试过,但我不断收到类似的错误“未找到目录:/root/rpmbuild/BUILDROOT/hello-2.10-1.x86_64/usr”
那么,有没有一种更简单的方法?
不,没有简单的方法。
上游有时会提供'make rpm'目标。有时检查安装工作。但是通常您必须手动创建规格文件。
BTW从检查安装的错误表明了两两件事:
- 您正在运行的命令,作为根。这是非常不明智的。
- 你应该创建几个构建目录。运行命令
rpmdev-setuptree
它会为你创建它们。
谢谢!我已经设置了这些目录,当我运行checkinstall作为另一个用户时,我只是得到一个类似的错误... –
迄今为止,唯一对我有用的是使用checkinstall创建一个.deb文件,然后使用外来程序convert .deb - > .rpm。如果checkinstall不需要SPEC文件来创建rpms,那么为什么我们需要一个? –
Checkinstall只监视'make install'并将所有已安装的文件放入%files部分。将所有其他部分保留为其默认值。对于超级简单的包来说,这可以很好。但通常需要指定依赖关系,发布安装脚本(重新启动守护进程),在安装软件包之前创建用户,将某些文件标记为配置....这对于一般软件来说很难自动完成。 – msuchy
我不知道你问的是否存在,但我不认为你与make的比较是有效的。当你运行make时,你需要一个Makefile来告诉make各种目标的定义。 你会如何心目中的工具知道: 1.如何构建项目 2.输出神器(S)是什么 3.如果这些文物应在目标文件系统被部署 4.什么文件权限应该等等。 –
嗯。如果我现在可以毫无问题地使用“make”和“make install”,那么我能记住的工具只是从“make”和“make install”的相同位置获得他们的信息吗? 工具“checkinstall”应该做这样的事情,但我不能让它为RPM工作。我有一个解决方法是创建“deb”文件,并使用alien来转换deb - > rpm。但它是不完美的,当然... 我只是键入“checkinstall”并创建rpm/deb(为rpms窃听)。不需要spec文件。 –
够公平了......我明白你的意思了。这个问题的表述方式,我不清楚(无论如何),你想从你的Makefile中的信息创建rpm。这可能是可行的,但它可能会导致一个非常复杂的Makefile。我们在我的项目中维护了很多rpm spec文件,并且诚实地说它们不包含太多冗余信息。 在任何情况下,这仍然不是真正创造“从源头上”的rpm。您仍然需要Makefile来提供rpm需要的关于依赖性的所有信息等。如果您需要安装前/安装脚本,它会很快变得复杂。 –