Korora 23 (Fedora 23)
rpmbuild --versionRPM version 4.13.0-rc1
我正在尝试为自己制作一个本地的freefilesync包。该站点提供了一个 openSUSE 版本,我正在尝试为 Fedora 打包该版本。
我的规范文件。
Processing files: freefilesync-8.2-1.fc23.x86_64
Provides: config(freefilesync) = 8.2-1.fc23 freefilesync = 8.2-1.fc23 freefilesync(x86-64) = 8.2-1.fc23
Requires(interp): /bin/sh /bin/sh
Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Requires(post): /bin/sh
Requires(postun): /bin/sh
Requires: libX11.so.6()(64bit) libXxf86vm.so.1()(64bit) libatk-1.0.so.0()(64bit) libc.so.6()(64bit) libc.so.6(GLIBC_2.10)(64bit) libc.so.6(GLIBC_2.14)(64bit) libc.so.6(GLIBC_2.17)(64bit) libc.so.6(GLIBC_2.2.5)(64bit) libc.so.6(GLIBC_2.3)(64bit) libc.so.6(GLIBC_2.3.2)(64bit) libc.so.6(GLIBC_2.4)(64bit) libc.so.6(GLIBC_2.6)(64bit) libcairo.so.2()(64bit) libdl.so.2()(64bit) libdl.so.2(GLIBC_2.2.5)(64bit) libexpat.so.1()(64bit) libfontconfig.so.1()(64bit) libfreetype.so.6()(64bit) libgcc_s.so.1()(64bit) libgcc_s.so.1(GCC_3.0)(64bit) libgdk-x11-2.0.so.0()(64bit) libgdk_pixbuf-2.0.so.0()(64bit) libgio-2.0.so.0()(64bit) libglib-2.0.so.0()(64bit) libgobject-2.0.so.0()(64bit) libgthread-2.0.so.0()(64bit) libgtk-x11-2.0.so.0()(64bit) libm.so.6()(64bit) …Run Code Online (Sandbox Code Playgroud) 我有一个 rpm,我需要更改安装前脚本以进行测试。
但是,我没有从中构建的 SRPM。
是否可以在没有SRPM 的情况下更改 scriptlet 和/或重建 rpm ?
如果是这样,如何?
我曾尝试使用 Midnight Commander ( mc) 将 rpm 作为目录结构打开并编辑内容,但即使有666权限,它也不会让我保存任何更改。
我的理解是,如果我在 %files 列表下指定 %dir 指令,RPM 将不会列出该目录下的任何文件。这样做可以让您为相关目录(或用户、组等)设置特定权限。但是,当除了指定的目录外,我还明确列出了文件时,我仍然收到“文件列出两次警告”消息。我知道这听起来很愚蠢,但是这些文件对目录具有不同的权限,这就是为什么我需要使用 %dir 指令单独定义目录。
如果我没有使用 %dir 指令,那么是的,我希望看到这些警告消息。
我对么?
更新:
实际上,列出两次的文件似乎只有在我将 %dir 指令与 %config 指令结合使用时才会出现。
所以下面没有警告消息就可以了:
%files
%dir %attr(0755,testuser,test) /app/product/tracking-tool/bin/
%dir %attr(0755,testuser,test) /app/product/tracking-tool/bin/scripts/
%attr(0755,vscc_prod,vscc) /app/product/tracking-tool/bin/run.sh
%attr(0755,vscc_prod,vscc) /app/product/tracking-tool/bin/count.sh
%attr(0755,vscc_prod,vscc) /app/product/tracking-tool/bin/delete.sh
%attr(0755,vscc_prod,vscc) /app/product/tracking-tool/bin/scripts/script1.sh
Run Code Online (Sandbox Code Playgroud)
但以下结果会产生警告消息:
%config %dir %attr(0755,testuser,test) /app/product/tracking-tool/config/
%config %dir %attr(0755,testuser,test) /app/product/tracking-tool/config/properties
%config %dir %attr(0755,testuser,test) /app/product/tracking-tool/config/other
%config %attr(0644,testuser,test) /app/product/tracking-tool/config/xmlconfig.xml
%config %attr(0644,testuser,test) /app/product/tracking-tool/config/properties/logging.properties
%config %attr(0600,testuser,test) /app/product/tracking-tool/config/properties/test.txt
%config %attr(0600,testuser,test) /app/product/tracking-tool/config/other/other.txt
Warning appear as follows:
[WARNING] warning: File listed twice: /app/product/tracking-tool/config/xmlconfig.xml
[WARNING] warning: File listed twice: /app/product/tracking-tool/config/properties/logging.properties
[WARNING] warning: File listed twice: …Run Code Online (Sandbox Code Playgroud) 我正在从本机 Python 2.5 中创建一个 RPM 包。公司政策是默认使用 python2.4,所以我添加了一个字符串
Requires: python25
Run Code Online (Sandbox Code Playgroud)
到.spec 文件。但是,当我查看创建的 RPM 文件时,我看到以下依赖项:
rpm -qR -p ZSI-2.1_a1-py25.noarch.rpm
/usr/bin/python2.5
python(abi) = 2.5
python25
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Run Code Online (Sandbox Code Playgroud)
我添加的依赖存在,但其他依赖也在这里。我无法提供 python(abi) = 2.5 依赖项,因为我们 IT 部门生成的愚蠢的 python25 包提供的标签不正确。
如何从生成的 RPM 中删除自动添加的依赖项?