specfile

如何防止安装不兼容的 rpm 包
specfile

如何防止安装不兼容的 rpm 包

我有两个 rpm 包不应该一起安装。 在谷歌搜索后,我认为没有 RequiresNot标签或类似的东西可以在 specfile 中指定不兼容的包。 防止将它们一起安装的最佳解决方案是什么? 目前我正在使用 rhel,但我更喜欢不rhel/yum相关的解决方案(eq using:exclude=packageA在 repo.conf 中)。 ...

Admin

在备用前缀处构建调试信息 RPM
specfile

在备用前缀处构建调试信息 RPM

我有一个 RPM,正在通过以下方式安装在备用根目录: %define _prefix /home/other/root 这对于二进制包来说效果很好。 但是,-debuginfo 包仍然列出了它的所有文件/usr/lib/debug。/usr/src/debug 我如何创建 -debuginfo 包以便它的文件位于和/home/other/root/lib/debug中/home/other/root/src/debug? ...

Admin

如何转义 rpm 规范“源”项中的空格?
specfile

如何转义 rpm 规范“源”项中的空格?

我正在尝试构建一个 RPM,但是来自供应商的源文件的文件名中有一个空格,并且似乎没有任何好的方法来转义文件名以便构建它。 我试过\在空格前面放一个。我试过用 替换它们%20。我试过+。我试过在"它周围放一个 s,我试过'在它周围放一个。 目前,我正在解决这个问题,通过重命名供应商的源文件使其不包含空格,但我真的希望尽可能保持原始供应商源文件名的完整性。 无需转义或引用,我得到: + unzip .../Foo Bar.zip unzip: cannot find or open .../Foo, .../Foo.zip or .../Foo.ZIP...

Admin

rpm:如何禁用 debuginfo
specfile

rpm:如何禁用 debuginfo

操作系统 RedHat 8.4 我知道文件%debug_package中的宏spec会为软件包生成调试信息,并生成mypackage-debuginfo-<VERSION>.<ARCH>rpm。但有趣的是,我的 spec 文件没有这个宏,但调试信息却被生成了。 但是,文件顶部spec有几个全局变量: %global _hardened_build 1 %global sysrepo 0 %undefine _missing_build_ids_terminate_build %define _unpackaged_files_term...

Admin

如果主包失败,则让 yum 不安装依赖项
specfile

如果主包失败,则让 yum 不安装依赖项

我有 3 个软件包corepkg、corepkg-optB和corepkg-optC。corepkg-optC依赖于corepkg-optB,corepkg-optB依赖于corepkg。 我已经为这 3 个软件包创建了一个仓库。 当我运行 yum install 时corepkg-optC,corepkg失败了, yum 会安装corepkg-optB和corepkg-optC。 这不是我想要的。 corepkg-optB如果corepkg失败了,我愿意失败;corepkg-optC如果corepkg-optB因为失败而失败,我愿意失败corepkg。 我...

Admin

使用 rpmbuild 打包 NodeJS 应用程序的正确方法
specfile

使用 rpmbuild 打包 NodeJS 应用程序的正确方法

我已经为作为 systemd 服务运行的 NodeJS 应用程序创建了第一个 rpm 包。 因为我不想将 node_modules 文件夹与 rpm 一起打包(据我所知,npm install 依赖于系统/节点版本,因此可能会产生其他问题?)我将其放在 spec 文件的 %post 部分: npm install --prefix /opt/%{modname} --production 第一个问题是,生成的 node_modules 文件夹现在归 root 用户所有,而不是 app 用户所有。 另一个问题是,从系统中卸载 rpm 包不会删除 node_m...

Admin

RPM 规范文件:从文件列表中设置 %config 文件
specfile

RPM 规范文件:从文件列表中设置 %config 文件

SPEC 文件的示例片段: ... %install unzip $RPM_SOURCE_DIR/APPLICATION-%{version}.zip -d %{buildroot}/ find %{buildroot} -type f ! -name "*.conf" | awk -F %{buildroot} '{print $2}' > filelist.txt find %{buildroot} -type f -name "*.conf" | awk -F %{buildroot} '{print $2}' > configfi...

Admin

如何根据 %pre 脚本的结果让我的 RPM 中止安装
specfile

如何根据 %pre 脚本的结果让我的 RPM 中止安装

我正在创建一个 RPM 包,用于在系统上安装一些工具。我想在安装 RPM 包之前检查一些机器状态。我的第一反应是直接在%前scriptlet,如果结果不是我想要的,则“退出 1”。但后来我遇到了这其中写道: 所有脚本必须以零退出状态退出。 是否有其他方法可以让 RPM 根据 shell 命令的结果中止软件包的安装? ...

Admin

获取要通过更新安装的 rpm 子包
specfile

获取要通过更新安装的 rpm 子包

作为实习任务的一部分,我必须在大约 60-70 个运行 CentOS 的客户端设备上部署 OpenVPN 客户端(这些设备位于私有网络上,无法直接访问)。我对软件包管理还很陌生。我更新了已经存在的 SPEC 文件,该文件是由一位不再在这里工作的员工创建的。我向 spec 文件添加了一个子包,它生成了名为“主包—OpenVPN—版本“正在建设中。这可以正常工作。 我的问题是,当客户端设备运行“yum update mainpackage-*”(它会自动执行)时,它只会更新已安装的子包(正如预期的那样)。有什么办法可以让它选取我的新 openvpn 子包并安装...

Admin

-F— 从以下位置读取 %files 列表
specfile

-F— 从以下位置读取 %files 列表

我正在编写一个创建多个包的 spec 文件。我可以使用 for 循环遍历具有不同名称的 %files 指令吗,如下所示: for name in {package1, package2, package3} ; do %files -n $name %attr(644, root, root) /etc/systemd/system/$name.service done ...

Admin

强制 RPM 擦除并安装而不是升级的正确方法是什么?
specfile

强制 RPM 擦除并安装而不是升级的正确方法是什么?

我有一个 RPM,其软件的数据库架构最近已完全重新设计。当前版本(我们称之为 B.0)与旧版本的数据库架构不兼容。 幸运的是,它仍处于测试阶段,而且由于尚未正式发布,所以我想避免编写任何数据库迁移脚本,除非(并且直到)真正有必要这样做。 升级将失败,因为(新)数据库架构创建发生在升级期间从未运行的脚本中,这会使应用程序处于不良状态。如果安装了 Ax,我希望他们删除并重新安装。 我找到了 RPM 的“冲突”标签,它似乎可以完成工作,但错误消息具有误导性“文件 ____ 与包 Ax 中的文件冲突”,并且有足够经验的人可能会尝试升级并替换冲突,但这没用,...

Admin

由于 spec 文件错误导致 rpm 运行时错误
specfile

由于 spec 文件错误导致 rpm 运行时错误

我有一个基于 SLES 版本的 spec 文件,我需要更改“Requires:”标签,如下所示 #if suse is greated than SLES 11 sp4 %if %0{?suse_version} > 1140 Requires: genisoimage %else Requires: mkisofs %endif 我正在 SLES 10 机器上构建此 rpm 文件。生成 RPM 后,无论操作系统如何,如果我运行, rpm -qpR mypkg.rpm 我仅将 mkisofs 作为必需包获取。在任何情况下(即使在...

Admin

RPM .spec 文件和版本控制
specfile

RPM .spec 文件和版本控制

我在目录中有一个 .spec 文件/root/rpmbuild/SPECS,在目录中还有一个 Version 文件/root/rpmbuild/SOURCES。Version 文件包含类似于 1.4.5 的版本号,我该如何将其放入 .spec 文件Version:标签中? 我们在每次构建中使用 shell 脚本来管理 Gitlab CI 通过推送触发的版本号并将其保存到文件中。 如果可能的话,我想运行一个类似的 shell 脚本cat Version并将其带到版本。当前代码:Version: %(cat Version),我没有找到其他解决方案,但它对版...

Admin

我应该如何替换 yum 中的包?
specfile

我应该如何替换 yum 中的包?

我正在编写 spec 文件,用我们自己的存储库中的软件包替换 yum 软件包。新软件包将直接替代原始软件包。 我认为最好的方法是给 spec 文件一个相同的文件Conflicts,Provides就像对典型的 Arch Linux 包所做的那样: Name: vncsnapshot-png Provides: vncsnapshot Conflicts: vncsnapshot 这似乎有效,并且可以毫无问题地安装/降级/升级该软件包。但是,重新安装失败: Loaded plugins: security Setting up R...

Admin

Yum 更新抱怨依赖性(架构不匹配)
specfile

Yum 更新抱怨依赖性(架构不匹配)

我创建了一个元 RPM 包(例如metapkg),它提取了我系统(CentOS 7)上所需的所有依赖项。此包指定了其依赖项的确切版本(但没有体系结构)。 例子 :Requires: perl = 5.16.3-285.el7 当我尝试使用 升级我的系统时yum update,Yum 抱怨几个依赖性问题: Error: Package: metapkg-1.1.0-1.noarch (myupdates) Requires: perl = 5.16.3-285.el7 Installed: 4:perl-5.1...

Admin