rpmbuild -bi 会把包安装到哪里?
当你使用 rpmbuild -bi 命令时,它会执行 RPM 构建过程中的安装阶段。在这个阶段,编译好的文件会被安装到一个临时的“构建根目录”(build root),而不是直接安装到你的实际系统目录中。
构建根目录
构建根目录是一个模拟的文件系统环境,通常位于 /var/tmp 或者你在 .spec 文件中通过 %buildroot 宏定义的其他路径。这个目录用于存放即将打包的所有文件,按照它们在目标系统上的预期位置进行组织。例如,如果一个文件应该被安装到 /usr/bin 目录下,那么在构建根目录中,它会被放置在类似 /var/tmp/build-root/usr/bin 的路径下。
如何确定构建根目录的位置
构建根目录的具体位置可以通过以下几种方式确定:
- 默认位置:如果没有特别指定,
rpmbuild通常会在/var/tmp下创建一个临时目录。 - 在
.spec文件中指定:你可以在.spec文件中通过%buildroot宏来定义构建根目录的路径。例如:%install rm -rf %{buildroot} mkdir -p %{buildroot}/usr/local/bin cp hello.sh %{buildroot}/usr/local/bin/hello - 命令行参数:也可以通过命令行选项
--buildroot来覆盖默认的构建根目录位置。
实际例子
假设我们有一个简单的 .spec 文件,其中指定了 %buildroot 为 /home/user/rpmbuild/BUILDROOT,并且我们要安装一个名为 hello.sh 的脚本到 /usr/local/bin。当我们运行 rpmbuild -bi SPECS/hello.spec 时,hello.sh 将被复制到 /home/user/rpmbuild/BUILDROOT/usr/local/bin/hello 而不是直接放到系统的 /usr/local/bin 目录下。
总结
因此,当你使用 rpmbuild -bi 时,软件包并不是直接安装到你的操作系统中,而是安装到了一个临时的、隔离的构建根目录中。这样做的好处是可以避免对开发或构建机器上的现有文件造成影响,并确保打包过程的纯净性。如果你希望将软件包真正安装到系统中,你需要先完成整个构建流程生成 RPM 包,然后使用 rpm 命令来安装这个 RPM 包。
请注意,具体的构建根目录路径可能会根据你的系统配置和 .spec 文件内容有所不同。如果你想要确切知道构建根目录的位置,可以检查 .spec 文件或者查看 rpmbuild -v -bi 执行时的日志输出。
1416

被折叠的 条评论
为什么被折叠?



