问题标签 [rpm-spec]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - 如何在规范文件中覆盖 CONFIG_SITE(最佳实践)
如果用户在运行 rpmbuild 时尝试从 specfile 构建 rpm,并且在环境中设置了 CONFIG_SITE,并且该 specfile 使用“./configure --prefix=/usr && make”构建,那么用户在 CONFIG_SITE 中的设置可能会完全损坏构建。(作为一个具体的例子,假设 /usr/share/config.site 有“prefix=/bar”这一行。那么 spec 文件的文件清单将完全错误,rpmbuild 将失败。)
处理此问题的最佳做法是什么?似乎通常的做法是忽略它。我决定在规范文件中设置 CONFIG_SITE=true :
在调用 rpmbuild 时假设一个原始环境是否更常见,并且没有像在 /usr/share/config.site 中重置前缀这样的愚蠢行为?还是维护者负责确保规范文件将按预期构建 rpm?
rpm - 如何强制 Anaconda 在 coreutils 之后安装我的包?
我有一个定制的 RPM,它构建了一组子包。每个子包在 spec 文件中都有一个 %post 脚本,用于将一些符号链接复制到另一个文件夹:
当我在正在运行的系统上安装一个子包 RPM 时,它工作正常。当我通过 Anaconda(作为 Kickstart 软件包列表的一部分)安装它时,RPM 的安装后脚本似乎没有运行。
编辑: 事实证明,它们确实运行了,但我收到一条错误消息:
显然,Anaconda 正在尝试在安装 coreutils 之前安装我的 RPM,即使我将 coreutils 指定为Requires:
.
所以,我修改后的问题是标题:如何在coreutils之后强制安装我的包?
relative-path - 在构建 RPM 时,如何使 _topdir 相对于 .spec 文件的位置?
我有一个.spec
文件,它依赖于一个名为_topdir
.
现在,当您从 git 签出 SRPM 源代码时,您必须更改_topdir
指向的位置以rpmbuild
使其正常运行。
你如何指定_topdir
应该相对于.spec
文件的位置,这样_topdir
就不会被硬编码?
packaging - 从源 tarball 创建一个 rpm 包 - 但 tarball 不包含规范文件,只是一个安装脚本
在我担任 SysAdmin 期间,我遇到过不提供 rpm 包来安装在基于 redhat 的发行版上的应用程序 - 仅提供源 tarball。源 tarball 不提供可以简化 rpm 包创建过程的规范文件。相反,源 tarball 仅提供 bash/ksh/ 脚本,必须以 root 身份执行才能在系统上安装应用程序。
我试图创建一个 rpm 包,它基本上运行安装脚本来执行安装脚本。我还尝试通过尝试以非 root 用户身份 rpmbuild 软件包并尽我所能修改安装脚本以确保脚本的安装目录引用 rpm 环境/宏来做正确的事情。但是对于一个几百行长的复杂安装脚本,它还调用了其他脚本......好吧,我注定要失败。
有没有更好的方法来打包这种 .spec-less 源 tarball?更好的解决方案是:
- 在应用程序安装之前以某种方式拍摄系统快照
- 使用提供的安装脚本安装源 tarball
- 安装后对系统进行快照,并确定安装所做的更改/添加
- 将更改/添加列表放入规范文件中,并以这种方式创建 rpm 包?
对此问题的任何有用/相关/指导性/有趣/深刻的输入和建议将不胜感激。
先感谢您
linux - 如何更新 RPM 版本?
如何更新 RPM 版本?我应该在我的规范文件中更新它并重新构建整个包吗?
permissions - RPM 规范文件中的 %defattr 是什么意思?
创建 RPM 时,RPM 规范文件有一个指令%defattr
. 我知道它定义了该 RPM 安装的文件的默认属性。如果我写%defattr
如下,这是什么意思?
linux - 如何动态定义子包
我的目标是提出一个动态定义子包的规范文件。
目前,我在规范文件中定义了一个宏,以便我可以使用不同的参数调用它来生成不同的 %package 部分。例如。
%define create_pkg(n:)\ %package -n subpackage-%1\ 摘要:子包 %1\ ...\ %{nil}
%create_pkg sub1 %create_pkg sub2 %create_pkg sub3
但是,我只能在 specfile 中硬编码 create_pkg 宏的参数(sub1、sub2、sub3)。有没有办法让规范文件读取一个单独的文件,其中包含我想要的子包的名称?例如。subpackages.txt 将具有以下内容:
子 1 子 2 子 3
并且规范文件将读取 subpackages.txt 并使用从 txt 文件中读取的名称调用 %create_pkg 。
rpmbuild - rpmbuild 失败:错误:找到已安装(但未打包)的文件:
不确定这是否是发布问题的正确位置。我正在尝试为我的项目创建 rpm,这是我第一次编写规范文件。当我使用命令构建规范时
rpmbuild -ba name.spec
请找到规范文件的链接 ( http://pastie.org/2426321 )。非常感谢您对此的任何帮助。提前致谢。
rpm - RPM 规范文件构建阶段的 RPM 依赖错误
我的目的是libmy.so
通过 RPM 分发已经构建的可安装库。
以下是 .spec 文件的片段:
在编译时libmy.so
,我将它与libxx.so
作为另一个 RPM 的一部分安装的链接。
在安装作为上述步骤 1 的一部分创建的 RPM 时,即使libxx.so
安装在机器上也会出现以下依赖错误
我们尝试了以下方法。
在分析过程中,我们观察到 所在的路径libxx.so
不存在于 中ld.so.conf
。但是,添加一个libxx.so
位于的路径条目并没有帮助我们。
请让我们知道我们是否需要执行任何其他步骤来消除此依赖项错误。