包安装失败和回滚选项
我试图了解包(rpm、deb、dpkg)的创建如何工作以及该架构支持和不支持什么。 现在,我很难弄清楚当软件包的安装或升级在过程的不同点失败时会发生什么 - 即,脚本错误,没有足够的磁盘空间(在开始之前检查过吗?) -。 根据我目前的理解,如果有的话,不会自动回滚到以前的工作版本。所以我的问题是,包如何处理这种情况?如果发生某些错误,脚本是否根本不用于备份文件并在事务后恢复它们? (到目前为止我找不到例子) 谢谢。 ...
我试图了解包(rpm、deb、dpkg)的创建如何工作以及该架构支持和不支持什么。 现在,我很难弄清楚当软件包的安装或升级在过程的不同点失败时会发生什么 - 即,脚本错误,没有足够的磁盘空间(在开始之前检查过吗?) -。 根据我目前的理解,如果有的话,不会自动回滚到以前的工作版本。所以我的问题是,包如何处理这种情况?如果发生某些错误,脚本是否根本不用于备份文件并在事务后恢复它们? (到目前为止我找不到例子) 谢谢。 ...
我有一个 RPM 包,它将配置添加到/etc/rsyslog.d/.我不想在每次更新后重新启动 rsyslog 的服务,因为显然 rsyslog无法正常重启。因此,我想仅在包更新后配置文件发生更改时重新启动 rsyslog 服务。 有没有办法在 rpm-spec 文件中配置它? ...
我正在编写一个 RPM 规范文件来构建我的软件。该软件取决于加密++。 Crypto++ 在不同的发行版上有不同的命名,例如,在 OpenSUSE 上,我应该写 BuildRequires: libcryptopp-devel 但在 Fedora 上,应该是 BuildRequires: cryptopp-devel 现在,如何将两者统一在一个规范文件中? ...
我正在使用 aws 的 ec2 实例,并且需要安装更新版本的 GDB(我无法使用,yum install因为没有适用于 amazon RHEL 的更新版本)。 我的工作流程需要经常执行此过程,并且我想到有一个准备好的 RPM 来实现此任务。我对创建 RPM 的过程很陌生,我不知道该怎么做,我开始编写文件,但遇到了一些问题,我想与您分享该文件以及我遇到的问题: 我想获得一些见解并了解是否有更好的方法来编写规范文件。 目前我遇到错误,因为我之前需要使用 pkg 的“配置”,但这需要创建一个“构建”目录并且只能make从该目录中运行。目前,我通过make在目录中...
如何最好地处理 rpm 规范文件中可能存在也可能不存在的文件: 交付的部分文件是/conf.d/目录下的示例文件。这些文件安装为conf.d/example.conf-.预计用户将复制或重命名文件并删除末尾连字符,以便应用程序将使用它。该应用程序使用/conf.d/*.conf常见的方式。 所有带有或不带有连字符后缀的文件都应该是软件包的一部分,并且具有由 rpm 管理的权限。原始的连字符后缀文件在更新或删除时可能存在也可能不存在。与无连字符后缀的版本相同。 看来两个文件名版本都必须添加到 buildroot 中,但我不确定将某些文件名版本命名为 Ghost...
我想将现有的 *.spec 文件从 fedora 风格%cmake*命令转换为%cmake3基于备用的命令(例如Amazon Linux 2)。 我应该用什么替换现有的%cmake_build? 最小可重现示例: % cat Dockerfile FROM public.ecr.aws/lambda/dotnet:7 WORKDIR /tmp RUN curl -O https://kojipkgs.fedoraproject.org//packages/dcmtk/3.6.7/3.fc39/src/dcmtk-3.6.7-3.fc39.src.rpm R...
当为 Fedora 编写 .spec 文件时,我遇到了一个问题。我似乎fedpkg mockbuild根本做不到。无论我使用什么来源,HTTPS 还是本地,我都会遇到此错误: Failed to get repository name from Git url or pushurl Failed to get ns from Git url or pushurl Could not execute mockbuild: ('Could not download sources: %s', AttributeError("'NoneType' object h...
我正在尝试为 rhel 7 服务器编译和打包最新版本的 Zeek (5.0.7)。我收到一条错误消息,指出需要“cxx17”。在网上搜索,我发现它包含在我下载的devtoolset-7中。但是,我找不到任何信息告诉我必须在规范文件中放入什么才能使用它。 ...
创建一个 RPM 来修改%config(noreplace)另一个 RPM 安装的文件的正确方法是什么? 一般问题的具体实例:我们想要修改安装的存储库定义,almalinux-repos以便定义指向baseurl我们的内部镜像。因为存储库定义位于%config(noreplace)中almalinux-repos,所以我们可以通过多种方式修改它们。然而,我们也希望将我们的修改打包。 一个想法是创建一个新的包Obsoletes: almalinux-repos。这建议使用almalinux-reposas BuildRequires,然后将其文件包含在 bui...
看完之后https://unix.stackexchange.com/a/222376/246754rpm 如何确保 uid/gid 不会相互冲突? 我正在寻找的类似于https://github.com/NixOS/nixpkgs/blob/68196a61c26748d3e53a6803de3d2f8c69f27831/nixos/modules/config/users-groups.nix#L640-L642(用于比较) 我必须构建一个虚拟机并使用 /etc/passwd 来查看获取的 uid。它不能完全满足我的需求,因为 174 不是他们的默认值。...
我有一个 RPM,它运行一个 scriptlet 来添加用户并创建主目录。我之前在 CentOS 7 上使用过这个,但现在需要这个 RPM 在 Rocky Linux 8 上运行它,所以我重建了 RPM(它是 noarch,但需要其他更改),但在 Rocky 8 上安装 RPM 时遇到了这个问题涉及到添加用户,我在 CentOS 7 上没有遇到过: useradd: cannot create directory /opt/system-installer 该脚本会进行一些检查,如有必要,会添加一个组,但实际上会运行命令: useradd --system ...
我有一个.spec用于安装 rpm 的文件。我在安装后有以下代码片段(%post scriplet) %post -n %{package_name} # Enable the service at boot time %if %{?suse_version:1}0 /usr/lib/lsb/install_initd %{_initrddir}/%{package_name} %else chkconfig --add %{package_name} %endi 在zypper install package_name安装后阶段失败并出现以下错误...
我正在为内核制作 rpm .spec。如果发生错误,我必须纠正并重新编译内核(1 小时!) 快速问题:我想在不使用 rm -fr BUILDDIR 的情况下开始构建 怎么办?谢谢 ...
我正在为 Red Hat Enterprise Linux 创建 RPM 包。我的软件在 RHEL 7 和 8 上运行时需要“redhat-lsb”软件包,但在 RHEL 9 上不需要它。此外,该软件包甚至无法从 RHEL 9 存储库中获得。 如果我将该软件包包含在一行中Requires:,则软件包在 RHEL9 上安装将失败。 如果我将该Requires行放入条件表达式中,如下所示: %if 0%{?rhel} <= 8 Requires: redhat-lsb %endif 然后在构建时评估条件,并且因为我在 RHEL7 上构建,所以生成的包始终...
在工作中,我们在不同的存储库中开发许多不同的软件工具,这些工具被打包为 RPM 文件。我们用于单元和集成测试的测试数据套件现已增长到千兆字节,我们希望有一个仅在执行测试时触发的依赖项,而不是将其实际导入到每个 RPM 中。 也就是说,我们的一些测试人员不需要测试数据存储库。他们将更新代码存储库,运行 rpmbuild --nocheck,并手动测试结果(例如用户界面测试,我们尚未自动化)。 QA 中的其他人员将下载代码存储库,运行“rpmbuild”,并且应该被告知他们安装的测试数据 RPM 是否足够新。 对于我们的生产构建机器人,我们希望它能够检查依赖关系...