6.5. 软件管理
现在默认不会下载存储库元数据
在以前的版本中,当您下载了存储库的元数据时,filelists 元数据也会被默认下载。filelists 元数据较大,通常不需要。有了此更新,默认不会下载此元数据,这提高了响应速度,并节省了磁盘空间。filelists 元数据也不再从存储库下载或更新,在运行 dnf
命令时不会加载到 DNF 事务中。如果 dnf
命令需要 filelists 元数据或包含与文件相关的参数,则元数据会被自动载入。
当软件包有需要处理 filelists 元数据的文件路径依赖项时,事务会失败,并显示依赖项解析错误及以下提示:
(try to add '--skip-broken' to skip uninstallable packages or '--setopt=optional_metadata_types=filelists' to load additional filelists metadata)
(try to add '--skip-broken' to skip uninstallable packages or '--setopt=optional_metadata_types=filelists' to load additional filelists metadata)
如果要重新启用默认的 filelist 元数据下载,您可以将 filelists
值添加到 /etc/dnf/dnf.conf
配置文件中的 optional_metadata_types
选项中。
Jira:RHEL-12355[1]
DNF 现在使用 librpmio
处理 PGP 密钥
要验证 RPM 软件包签名,RPM 使用 rpm-sequoia
库,而不是之前使用的自定义 PGP 解析器。有了此更新,可以在 DNF 存储仓库上验证 PGP 签名的 librepo
库现在也通过 librpmio
库使用 rpm-sequoia
。因此,为了提供一致的用户体验,dnf
、librpm
和 rpm
组件现在使用同样的 PGP 实现。
提供了 dnf-plugins-core
版本 4.7.0
RHEL 10 提供了 dnf-plugins-core
软件包版本 4.7.0 ,其包括一个新的 python3-dnf-plugin-pre-transaction-actions
软件包。这个软件包包括一个新的 pre-transaction-actions
DNF 插件,允许您在启动 RPM 事务时运行命令。如需更多信息,请参阅系统上的 dnf-pre-transaction-actions (8)
手册页。
提供了 createrepo_c
版本 1.0.0
RHEL 10 提供了createrepo_c
软件包版本 1.0.0 。与以前版本相比的显著变化包括:
-
默认压缩从
gz
切换到zstd
,其提供较小的可快速解压的元数据。请注意,gz
压缩仍被支持。 -
要节省时间和磁盘空间,默认情况下不再生成 SQLite 数据库格式的元数据。请注意,您仍然可以使用
--database
开关或sqliterepo_c
工具创建此元数据。 管理
group.xml
元数据已经标准化。在以前的版本中,这个元数据出现两次,作为压缩的和未压缩的元数据。有了此更新,组元数据只作为压缩的元数据出现一次,并具有组
元数据类型。注意group.xml
元数据与 RHEL 7 中的 YUM 不兼容。如果需要,您仍然可以使用modifyrepo_c
命令创建带有旧布局的存储库。
Jira:RHELDOCS-18997[1]
DNF、PackageKit 和 microdnf
工具现在在升级过程中只安装新推荐的软件包
exclude_from_weak_autodetect
选项可以自动探测到安装的软件包的弱依赖项,并阻止安装满足已被无主题依赖项的软件包安装。在此次更新之前,这个选项默认被设置为 False
。因此,在升级该软件包时,软件包的所有现有的弱依赖项都被安装了,即使一些弱依赖项之前没有安装。有了此更新,exclude_from_weak_autodetect
选项的默认值已被设置为 true
。因此,在升级过程中,使用 DNF、PackageKit 或 microdnf
工具现在只安装了新推荐的软件包。
您可以手动更改 /etc/dnf/dnf.conf
配置文件中的 exclude_from_weak_autodetect
的默认值。
Jira:RHELDOCS-19415[1]
RPM 数据库重定位到 /usr
有了此更新,RPM 数据库已从 /var/lib/rpm
目录移到 /usr/lib/sysimage/rpm
目录。将数据库存储在 /usr
中简化了系统快照的创建和回滚,因为不再需要考虑 /var
的内容。它还使 RHEL 与基于 rpm-ostree
的系统(如 RHEL CoreOS)保持一致,这些系统已在 /usr
目录下存储了 RPM 数据库。
这个变化对大多数用户没有可见的影响,因为 RPM 在其功能上没有变化。但是,执行操作系统级别快照(通常包含 /usr
目录)的高级用户不再需要将位于 /var/lib/rpm
的 RPM 数据库包含在快照中,以便在回滚时保留系统状态。
Jira:RHELDOCS-19417[1]
新的 --exclude-services
标志,来从过时的进程列表中排除 systemd
服务
您可以使用 dnf needs-restarting --services
列出需要重启的 systemd
服务。有了此更新,一个新的 --exclude-services
已添加到 dnf needs-restarting
中。您可以使用此标志从过时的进程列表中排除 systemd
服务。
RHEL 用户的镜像模式现在可以使用 dnf --transient
执行在重启时重置的软件包事务
在以前的版本中,RHEL 用户的镜像模式可能会通过运行 bootc usr-overlay
命令临时安装、删除和升级软件包,来解锁系统,然后通过运行 DNF 命令来进行更改。如果您使用 bootc usr-overlay
,当系统重启时,/usr
目录覆盖会消失,对其所做的所有更改都将重置。对其他目录的更改,包括 /etc
中的配置以及 /var
中的程序状态,在重启后保持不变。
有了此更新,已向 DNF 中添加了一个新的 --transient
标志和一个新的 persistence
配置选项,以提高 bootc 系统上的用户体验。您现在可以使用以下选项之一跳过 bootc usr-overlay
步骤:
-
使用
dnf --transient
命令。 -
在
dnf.conf
文件中将persistence
选项设置为transient
。
与使用 bootc usr-overlay
不同,,--transient
和 persistence=transient
确保 /usr
目录在事务之前、期间和之后仍然对其他进程保持只读。
例如,要临时安装 make
软件包,请输入:
dnf install --transient make
# dnf install --transient make