10.3. 软件管理

cr_compress_file_with_stat() 可能会导致内存泄漏

createrepo_c C 库包含 API cr_compress_file_with_stat() 函数。这个函数被声明为以 char **dst 作为第二个参数。根据其他参数,cr_compress_file_with_stat() 要么使用 dst 作为输入参数,要么使用它来返回一个分配的字符串。这种无法预测的行为可能会导致内存泄漏,因为它不会通知用户何时释放 dst内容。

要临时解决这个问题,增加了一个新的 API cr_compress_file_with_stat_v2 函数,它只使用 dst 参数作为输入。它被声明为 char *dst。这可防止内存泄漏。

请注意,cr_compress_file_with_stat_v2 函数为临时的,仅存在于 RHEL 8 中。之后,cr_compress_file_with_stat() 将会被修复。

(BZ#1973588)

当 scriptlet 失败时,YUM 事务被报告为成功

从 RPM 版本 4.6 开始,允许安装后 scriptlet 失败,而不会对事务造成致命影响。这个行为也被传播到 YUM。这导致 scriptlets 可能会偶尔失败,而整个软件包事务报告为成功。

目前还没有可用的临时解决方案。

请注意,这是预期行为,其在 RPM 和 YUM 之间保持一致。scriptlet 中的任何问题都应在软件包层面上解决。

(BZ#1986657)

安全 DNF 升级可以跳过过时的软件包

BZ#2095764 补丁由 RHBA-2022:5816 公告发布,它包括以下回归:使用安全过滤器(如 --security 选项)的 DNF 升级可以跳过升级过时的软件包。当安装的软件包被不同的软件包已过时时,会出现这个问题,并且存在可用的软件包公告。

因此,dnf 在系统中保留过时的软件包,且安全升级没有完全执行,可能会使系统处于存在安全漏洞的状态。

要临时解决这个问题,在不使用安全过滤器的情况下执行完整的升级,或者首先验证升级过程中没有过时的软件包。

(BZ#2095764)