【发布时间】:2015-11-04 17:14:57
【问题描述】:
这个问题的标题并没有反映出我多年来对 RPM 系统的愤怒。开发系统(./configure; make; make install;)和 rpm 系统(tar 文件、补丁文件、规范文件、神秘的构建脚本、环境和工具)之间存在巨大的鸿沟,我无法弥合。
我只想在一个更大的程序中更改几行代码。
我遇到的问题:
在安装时获取系统的源代码(例如,来自 EPEL 的 SRPM、原始 tarball 等)。我应该使用什么来源?
将该源代码转换为可随时编辑的表单 - 我可以使用我最喜欢的编辑器进行编辑。我怎么知道我正在编辑部署的代码、错误和所有内容? (rpm -ivh x.src.rpm 给了我在 SOURCES 目录中散落的 tar 文件和补丁文件的 squabs ......我怎样才能让它正确?)
编辑代码以实现一些惊人的 hack(这部分我实际上可以做到)。
编译已编辑的惊人代码 - 只需在原地编译即可。通常我可以做到这一点,但有时有一只手会很好,例如将 ./configure 设置为使用默认 /usr/local 和 /lost+found/opt/etc/opt 或任何疯狂的默认 autoconf 决定使用以外的其他内容。
将我的编辑转换为针对先前源的补丁并构建新的 RPM 以在某些远程系统上进行测试(这是 RPM 的巨大承诺 - 原始源和 hacky 补丁)。如果我对原始目录和编辑后的目录进行比较,则生成的补丁包含各种我不想删除的垃圾,因为我仍在开发中(例如目标代码)。 (实际上,此时我没有'原始'来做差异......因为当我意识到我可以“改进”它时,我只是随便看看代码......)我应该使用一些修订控制系统来跟踪我所做的更改?
这应该很简单,但不知何故,我所能做的就是编辑代码。在我编辑完代码之后,它永远无法克服困难,即使它是一个已经解决的问题。我对一个开源项目有一个很好的修复,但是每次我完成我惊人的 hack 的开发,深入研究代码并使其编译(并且可能工作)时,我都完全被难住了。没有任何东西可以将我修改过的、现在令人惊叹的源代码树变成 RPM。我最终部署了源代码(到 /usr/local),因为这至少可行。
进行(比如说)安全修复的人实际上是如何进行提取-编辑-编译-测试循环的?
【问题讨论】:
-
我似乎看不到明确的问题。您是否遵循文档? wiki.centos.org/HowTos/RebuildSRPM 应该可以帮助您入门。它指的是owlriver.com/tips/patching_srpms,它描述了您的确切问题。
-
这些是很好的链接,但说真的,它真的那么好吗? owlriver.com 链接将此作为测试的一部分 -
./configure --sysconfdir=/etc/joe- 这正是说明了问题。重新设计 srpm 文件中已经存在的几乎所有内容是否不可避免?
标签: build development-environment patch rpm rpmbuild