【发布时间】:2014-12-24 02:36:16
【问题描述】:
在我正在处理的项目中,我需要使用私钥从我的一个输出可执行 (elf) 文件生成签名(签名形成 rpm 中的文件之一,执行此操作的私钥永远不会离开构建机器)。目前这是在我的 makefile 中完成的,作为 rpm 系统之外的“make”、“make install”过程的一部分。
但是,似乎不是使用 rpmbuild 制作 rpm,在 %build 和 %install 之后的某个时间点,它会进一步修改我的可执行文件(似乎出于某种原因从 .strtab 和 .symtab 中删除了一些东西)。这意味着稍后在安装 rpm 后,由于可执行文件的更改,我正在与之集成的其他软件拒绝我的签名数据...
有什么方法可以阻止 rpmbuild 修改我的文件,或者至少有什么方法可以在它进行任何此类更改之后移动我的 %build 和 %install 的一部分(这样我就可以重新创建签名文件)。
【问题讨论】:
-
这可能是调试符号剥离,您可以禁用它(尽管可能不是基于每个文件)。我不记得什么方法是临时的,但我可以稍后再看。或者,如果您预先剥离二进制文件(假设您不需要该信息),您可能能够阻止 rpm 剥离实际修改您的二进制文件,尽管它尝试这样做。
标签: linux makefile rpm rpmbuild rpm-spec