用 RPM 指定 installdir/builddir
Specify installdir/builddir with RPM
我对使用 RPM 构建和分发包比较陌生。
我正在尝试实现以下功能,但我对如何管理它感到有点困惑:
- 在构建机器上,RPM 包应该在我的帐户下构建,例如在 /home/username/rpmbuild 下。此文件夹具有正确的结构(例如包含 SPECS、RPMS、SOURCES 等)。我要打包的文件基本上是位于 SOURCES 目录中的 .tgz 文件的二进制文件。我也有 root 访问权限,所以这应该不是问题。
- 在“'client'”机器上,软件应安装在特定目录下,例如/specific_mountpoint/program_name。即使用户应该执行没有附加参数的简单 rpm -ivh rpm_name.rpm 命令,也会发生这种情况。
我有以下问题:
- 我目前对RPM过程的理解是构建机器必须在rpmbuild过程中镜像客户端机器。如果那是正确的,那么我必须在构建机器上通过 rpmbuild 过程创建 /specific_mountpoint/program_name,对吗?这是否意味着我必须将文件从 RPM_BUILD_ROOT 复制到该目录,或者有没有办法覆盖规范文件中的 RPM_BUILD_ROOT?
- 然后我的问题是,在 spec 文件的 %files 下,我似乎无法指向 rpmbuild 从 /specific_mountpoint/program_name 获取文件(因为它当前转到 /home/username/rpmbuild/ BUILDROOT 文件夹)。我已尝试覆盖此行为但没有成功。
非常欢迎任何想法和具体的规范文件。
我正在使用 RPM v4.8。我之所以提到这一点,是因为我正在阅读的内容已弃用特定标志。
非常感谢!
不,你很接近但有点偏离。您在 buildroot
中构建的内容相当于目标计算机上的根目录。所以把你的东西放在 /home/username/rpmbuild/BUILDROOT/packagename-version/specific_mountpoint/program_name
AKA %{buildroot}/specific_mountpoint/program_name
中。然后在 %files
中列出目的地位置,例如%doc /specific_mountpoint/program_name/README
.
我对使用 RPM 构建和分发包比较陌生。
我正在尝试实现以下功能,但我对如何管理它感到有点困惑:
- 在构建机器上,RPM 包应该在我的帐户下构建,例如在 /home/username/rpmbuild 下。此文件夹具有正确的结构(例如包含 SPECS、RPMS、SOURCES 等)。我要打包的文件基本上是位于 SOURCES 目录中的 .tgz 文件的二进制文件。我也有 root 访问权限,所以这应该不是问题。
- 在“'client'”机器上,软件应安装在特定目录下,例如/specific_mountpoint/program_name。即使用户应该执行没有附加参数的简单 rpm -ivh rpm_name.rpm 命令,也会发生这种情况。
我有以下问题:
- 我目前对RPM过程的理解是构建机器必须在rpmbuild过程中镜像客户端机器。如果那是正确的,那么我必须在构建机器上通过 rpmbuild 过程创建 /specific_mountpoint/program_name,对吗?这是否意味着我必须将文件从 RPM_BUILD_ROOT 复制到该目录,或者有没有办法覆盖规范文件中的 RPM_BUILD_ROOT?
- 然后我的问题是,在 spec 文件的 %files 下,我似乎无法指向 rpmbuild 从 /specific_mountpoint/program_name 获取文件(因为它当前转到 /home/username/rpmbuild/ BUILDROOT 文件夹)。我已尝试覆盖此行为但没有成功。
非常欢迎任何想法和具体的规范文件。
我正在使用 RPM v4.8。我之所以提到这一点,是因为我正在阅读的内容已弃用特定标志。
非常感谢!
不,你很接近但有点偏离。您在 buildroot
中构建的内容相当于目标计算机上的根目录。所以把你的东西放在 /home/username/rpmbuild/BUILDROOT/packagename-version/specific_mountpoint/program_name
AKA %{buildroot}/specific_mountpoint/program_name
中。然后在 %files
中列出目的地位置,例如%doc /specific_mountpoint/program_name/README
.