哪个手册页描述了直接在 RPM 源文件中定义的顶级 RPM 规范文件宏的用法?我的意思是,%setup、%buildroot 等不在 /usr/lib/rpm 中。在 rpm.org 的教程中查找 %setup 选项或搜索源代码并不是最方便的。
题:
我在foo.spec文件中放了什么,以便 RPM 在安装之前删除以前的 RPM?
描述:
我创建了一个规范文件,该文件为几个使用相同源并提供相同服务的包创建 rpm,每个包的配置略有不同。例如,它们各自提供相同的“能力”
这是我的.spec文件的基本要素示例:
%define version 1234
%define name foo
%define release 1
%define pkgname %{name}-%{version}-%{release}
Name: %{name}
Version: %{version}
Release: %{release}
Provides: %{name}
%package one
Summary: Summary for foo-one
Group: %{group}
Obsoletes: %{name} <= %{version}
Provides: %{name} = %{version}
%description one
Blah blah blah
%package two
Summary: Summary for foo-two
Group: %{group}
Obsoletes: %{name} <= %{version}
Provides: %{name} = %{version}
%description two
Blah blah blah
# %prep, %install, %build and …Run Code Online (Sandbox Code Playgroud) 我有两个 rpm 包,它们不应该安装在一起。
在谷歌搜索之后,我假设没有 RequiresNot 标签或类似的东西来指定规范文件中的不兼容包。
防止将它们安装在一起的最佳解决方案是什么?
目前我正在使用rhel,但我更喜欢与rhel/yum 无关的解决方案(例如在repo.conf 中使用:exclude=packageA)。
我正在创建一个在系统上安装一些工具的 RPM 包。我想在安装我的 RPM 包之前检查一些机器状态。我最初的直觉是从%pre scriptlet 中运行一些命令,如果结果不是我喜欢的,则“退出 1”。但后来我遇到了这个说:
所有小脚本必须以零退出状态退出。
有没有其他方法可以让 RPM 根据 shell 命令的结果中止软件包的安装?
操作系统 红帽 8.4
我知道%debug_package在文件中包含宏spec将为包生成调试信息,并生成mypackage-debuginfo-<VERSION>.<ARCH>rpm。然而有趣的是,我的规范文件没有这个宏,但调试信息却已构建。
然而,在文件的顶部spec有一些全局变量:
%global _hardened_build 1
%global sysrepo 0
%undefine _missing_build_ids_terminate_build
%define _unpackaged_files_terminate_build 0
Run Code Online (Sandbox Code Playgroud)
我想知道其中之一是否启用%debug_package宏?