2017-09-28 73 views
0

我一直在阅读关于构建RPM的知识,而且这个过程相当复杂。有没有像这样的程序/软件:如何在没有规格文件等的情况下从一行中的源代码生成RPM?

  1. 下载tar.gz文件。解压到目录
  2. cd进入目录
  3. 运行
  4. RPM文件输出到目录

是否有这样的程序存在吗?看起来好像它应该。毕竟,当我运行make,make install等时,我不需要指定spec文件,提供软件安装位置。那么,为什么我必须为创建RPM做所有这些工作呢?

我使用检查安装试过,但我不断收到类似的错误“未找到目录:/root/rpmbuild/BUILDROOT/hello-2.10-1.x86_64/usr”

那么,有没有一种更简单的方法?

+0

我不知道你问的是否存在,但我不认为你与make的比较是有效的。当你运行make时,你需要一个Makefile来告诉make各种目标的定义。 你会如何心目中的工具知道: 1.如何构建项目 2.输出神器(S)是什么 3.如果这些文物应在目标文件系统被部署 4.什么文件权限应该等等。 –

+0

嗯。如果我现在可以毫无问题地使用“make”和“make install”,那么我能记住的工具只是从“make”和“make install”的相同位置获得他们的信息吗? 工具“checkinstall”应该做这样的事情,但我不能让它为RPM工作。我有一个解决方法是创建“deb”文件,并使用alien来转换deb - > rpm。但它是不完美的,当然... 我只是键入“checkinstall”并创建rpm/deb(为rpms窃听)。不需要spec文件。 –

+1

够公平了......我明白你的意思了。这个问题的表述方式,我不清楚(无论如何),你想从你的Makefile中的信息创建rpm。这可能是可行的,但它可能会导致一个非常复杂的Makefile。我们在我的项目中维护了很多rpm spec文件,并且诚实地说它们不包含太多冗余信息。 在任何情况下,这仍然不是真正创造“从源头上”的rpm。您仍然需要Makefile来提供rpm需要的关于依赖性的所有信息等。如果您需要安装前/安装脚本,它会很快变得复杂。 –

回答

0

不,没有简单的方法。

上游有时会提供'make rpm'目标。有时检查安装工作。但是通常您必须手动创建规格文件。

BTW从检查安装的错误表明了两两件事:

  • 您正在运行的命令,作为根。这是非常不明智的。
  • 你应该创建几个构建目录。运行命令rpmdev-setuptree它会为你创建它们。
+0

谢谢!我已经设置了这些目录,当我运行checkinstall作为另一个用户时,我只是得到一个类似的错误... –

+0

迄今为止,唯一对我有用的是使用checkinstall创建一个.deb文件,然后使用外来程序convert .deb - > .rpm。如果checkinstall不需要SPEC文件来创建rpms,那么为什么我们需要一个? –

+0

Checkinstall只监视'make install'并将所有已安装的文件放入%files部分。将所有其他部分保留为其默认值。对于超级简单的包来说,这可以很好。但通常需要指定依赖关系,发布安装脚本(重新启动守护进程),在安装软件包之前创建用户,将某些文件标记为配置....这对于一般软件来说很难自动完成。 – msuchy

相关问题