使用RPM

时间:2017-02-26 14:49:49

标签: rpm rpmbuild

我对使用RPM构建和分发软件包相对较新。

我正在尝试实现以下功能,我对如何管理它感到有点困惑:

  1. 在构建计算机上,RPM包应该在我的帐户下构建,例如在/ home / username / rpmbuild下。该文件夹具有适当的结构(例如包含SPECS,RPMS,SOURCES等)。我想要打包的文件基本上是位于SOURCES目录的.tgz文件的二进制文件。我也有root权限,所以这不应该是一个问题。
  2. 在''客户''机器,软件应安装在特定目录下,例如: / specific_mountpoint /程序名。即使用户应该在没有其他参数的情况下执行简单的rpm -ivh rpm_name.rpm命令,也会发生这种情况。
  3. 我有以下问题:

    • 我目前对RPM过程的理解是构建机器必须在rpmbuild过程中镜像客户端机器。如果这是正确的,那么我必须通过构建机器上的rpmbuild进程创建/ specific_mountpoint / program_name,对吗?这是否意味着我必须将文件从RPM_BUILD_ROOT复制到该目录,或者是否有办法在规范文件中覆盖RPM_BUILD_ROOT?
    • 我的问题是在spec文件中的%文件下,我似乎无法指向rpmbuild从/ specific_mountpoint / program_name获取文件(因为它当前转到/ home / username / rpmbuild / BUILDROOT文件夹)。我试过重写这种行为没有成功。

    任何想法和具体的规范文件都非常受欢迎。

    我正在使用RPM v4.8。我之所以提到这一点,是因为我正在阅读的特定标志已被弃用。

    非常感谢!

1 个答案:

答案 0 :(得分:2)

不,你很近但略有偏离。您在buildroot中构建的内容等同于目标计算机上的根。那么你的东西在/home/username/rpmbuild/BUILDROOT/packagename-version/specific_mountpoint/program_name AKA %{buildroot}/specific_mountpoint/program_name。然后在%files中列出目标位置,例如%doc /specific_mountpoint/program_name/README