我想在没有源和平台或架构独立的情况下执行此操作,如果可能的话,不使用spec文件。
任何好友,请你提出任何解决方案或任何免费工具。
感谢所有花时间阅读和回复我的帖子的人。
答案 0 :(得分:13)
您可以使用rpmrebuild修改实际的rpm文件(不需要安装)。
大多数此示例使用复杂的内联编辑命令来以特定方式修改已知文件,但您可以使用普通编辑器。我用这个来修复一个我没有源代码的rpm文件中的shell脚本。将命令调用为
rpmrebuild -ep theFileName.rpm
这会让您使用RPM的spec文件编辑。该文件的名称将类似于~/.tmp/rpmrebuild.12839/work/spec.2
。如果您查看,在此示例中~/.tmp/rpmrebuild.12839/work
,您将找到用于生成RPM的所有文件(在我的情况下,该文件位于该目录中的root/usr/sbin
内)。因此,转到另一个窗口,cd到该目录,并编辑您需要更改的任何文件。
完成文件编辑后,使用spec文件返回编辑窗口,对该文件进行所需的任何更改(我没有任何更改,因为我没有添加或删除文件),保存文件,并说出" y"到了#34;你想继续"题。然后它将构建一个新的RPM文件,并告诉你它放在哪里(在我的例子中,在〜/ rpmbuild / RPMS / x86_64 /中)
答案 1 :(得分:1)
您可以使用rpmrebuild重新打包已安装的RPM(包括已修改的文件)。 http://rpmrebuild.sourceforge.net/
显然你的二进制文件(如果有的话)必须是平台/体系结构独立的才能处理你希望的所有操作系统风格,但听起来好像它们只是网络文件应该不是问题。
答案 2 :(得分:0)
主要是您可以将所需的所有内容打包到RPM文件中。只需将您拥有的内容视为“源”并编写一个SPEC文件,将数据放入编译后的二进制文件通常所在的位置。
关于RPM,我认为“源”是“我拥有的”和“二进制”“我需要运行的”。不是非常精确的术语,但它有助于与RPM合作。
您的spec文件看起来像任何其他spec文件,参数等有什么问题。但代码部分不同:
[...]
%prep
# Here you either have nothing to do or you already unpack the cpio and possibly modify it.
# %build can be omitted
%install
[ "${buildroot}" != "/" ] && [ -d ${buildroot} ] && rm -rf ${buildroot};
# Here you can either unpack the cpio or copy the data unpacked in %prep.
# Be careful to put it into %{buildroot} or $RPM_BUILD_ROOT.