rpm必知100问:rpmbuild -bi 会把包安装到哪里?

rpmbuild -bi 会把包安装到哪里?

当你使用 rpmbuild -bi 命令时,它会执行 RPM 构建过程中的安装阶段。在这个阶段,编译好的文件会被安装到一个临时的“构建根目录”(build root),而不是直接安装到你的实际系统目录中。

构建根目录

构建根目录是一个模拟的文件系统环境,通常位于 /var/tmp 或者你在 .spec 文件中通过 %buildroot 宏定义的其他路径。这个目录用于存放即将打包的所有文件,按照它们在目标系统上的预期位置进行组织。例如,如果一个文件应该被安装到 /usr/bin 目录下,那么在构建根目录中,它会被放置在类似 /var/tmp/build-root/usr/bin 的路径下。

如何确定构建根目录的位置

构建根目录的具体位置可以通过以下几种方式确定:

  1. 默认位置:如果没有特别指定,rpmbuild 通常会在 /var/tmp 下创建一个临时目录。
  2. .spec 文件中指定:你可以在 .spec 文件中通过 %buildroot 宏来定义构建根目录的路径。例如:
    %install
    rm -rf %{buildroot}
    mkdir -p %{buildroot}/usr/local/bin
    cp hello.sh %{buildroot}/usr/local/bin/hello
    
  3. 命令行参数:也可以通过命令行选项 --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 执行时的日志输出。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值