目录
第四章 安装和管理软件
dnf 是新一代的软件包管理器,首先出现在 Fedora 18 这个发行版中。而在 Fedora 22 中,它取代了 yum,正式成为了 Fedora 22 的包管理器。
dnf 包管理器克服了 yum 包管理器的一些瓶颈,提升了包括用户体验、内存占用、依赖分析和运行速度等多方面的内容。dnf 使用 rpm、libsolv 和 hawkey 库进行包管理操作,可以同 yum 同时使用。
4.1. 检查和升级软件包
4.1.1. 软件包升级检查
查看系统里已经安装的软件包有哪些可以升级可以执行以下命令,以 X86
平台示例如下:
示例说明:
Ø PackageKit——软件包名称;
Ø x86_64——该软件包支持的 CPU 架构;
Ø 33.19-31.p12.ky10——可升级的软件包版本;
Ø ks10-adv-os——可升级的软件包所存储仓库。
4.1.2. 升级软件包
dnf 支持一次升级单个/批量软件包,并同时安装/更新相应的依赖包。
1. 升级单一软件包命令:
#dnf update {package_name}
升级 kernel 软件包命令为例:
上述输出的说明如下:
a) Package:用户需要下载升级的软件包和依赖软件包。
b) Architecture:该软件包所属的架构。
c) Version:软件包升级后的版本。
d) Repository:可升级软件包所属仓库。
e) Size:软件包大小。
f) dnf 默认会显示升级软件包的基本信息,并提示是否确认安装,用户可以在使用 dnf 命令时添加参数–y,效果等同于出现 Is this ok [y/N]:时输入 yes。
g) 安装过程中如果出现错误导致安装过程终止,可以使用 dnf history 命令 查看详细描述。
如果需要安装一组软件包,可以以 root 用户执行命令:
#dnf groupupdate group_name
2. 批量升级软件包及其依赖
如果需要升级系统所有软件包,可以使用以下命令:
#dnf update
4.1.3. 利用系统光盘与 dnf 离线升级系统
dnf 可与 yum 使用相同的配置文件,即配置 dnf 源可直接/etc/yum.repos.d/ 中的.repo 文件进行编辑。当系统处于离线状态或者无法访问官方更新源时,可以利用更新的系统光盘创建本地源并进行升级。步骤如下:
1. 创建系统光盘挂载目录,以 root 用户执行:
#mkdir {mount_dir}
2. 将系统安装光盘挂载至该目录,以 root 用户执行
#mount -o loop {iso_name} {mount_dir}
3. 将系统光盘中的 media.repo 文件从挂载目录拷贝至/etc/yum.repos.d/目录下:
#cp mount_dir/media.repo /etc/yum.repos.d/new.repo
4. 编辑/etc/yum.repos.d/new.repo 配置文件以添加光盘路径:
#baseurl=file://mount_dir
5. 更新 dnf 源并进行升级,以 root 用户执行:
#dnf update
6. 升级成功后,卸载系统光盘挂载目录:
#umount mount_dir 或者 rmdir mount_dir
如果不再使用这个 dnf 源进行安装和升级,可以以 root 用户删除文件:
#rm /etc/yum.repos.d/new.repo
4.2. 管理软件包
dnf 提供了完整操作系统软件包管理功能,包括检索、查看信息、安装和删除。
4.2.1. 检索软件包
执行 dnf search 命令可以检索软件包,例如检索包含“mesh”字段的软件包,以 X86 平台示例如下:
#dnf search mesh
如果 dnf 检测的结果繁多,可以通过 shell 本身的 grep 或者正则表达式进行过滤。
4.2.2. 安装包列表
显示已安装和可安装的软件包列表可以执行以下命令:
#dnf list all
显示包括某些字符的已安装和可安装软件包列表可以执行以下命令:
#dnf list glob_expression…
显示 abrt 相关软件包列表的命令如下:
#dnf list abrt-addon\* abrt-plugin\*
显示包括某些字符的已安装软件包列表可以执行以下命令:
#dnf list installed glob_expression…
显示包括 krb 的所有已安装软件包示例如下:
#dnf list installed "krb?-*"
显示包括某些字符的可安装软件包列表可以执行以下命令:
#dnf list available glob_expression…
显示所有可用的 gstreamer plug-ins 软件包列表:
#dnf list available gstreamer\*plugin\*
查看软件仓库
成功注册后,可使用 dnf 来管理软件包。
查看可用的软件仓库可以使用以下命令:
#dnf repolist
如果想显示更多信息可以加上-v 选项,或者用 dnf repoinfo 命令输出信息。
#dnf repolist -v
#dnf repoinfo
如果需要显示所有可用和不可用的软件仓库,可以使用以下命令:
#dnf repolist all
4.2.3. 显示软件包信息
显示一个或多个软件包可以使用以下命令:
#dnf info package_name…
显示软件包 abrt 详细信息的命令:
#dnf info abrt
显示软件包 yum 详细信息的命令:
#dnf info yum
4.2.4. 安装软件包
用户可以以 root 用户使用以下命令安装软件包
#dnf install package_name
安装 sqlite 的 i686 架构的软件包示例:
#dnf install sqlite.i686
除了安装软件包,还可以安装具体的二进制文件,您可以输入文件地址,以root 用户执行安装:
#dnf install /usr/sbin/named
安装命令如下:
#dnf install httpd
如果要安装本地软件包,可以执行:
#dnf localinstall path
4.2.5. 下载软件包
在执行安装流程中,显示以下选项是:
. . .
Total size: 1. 2 M
Is this ok [y/N]:
. . .
输入 y,可以执行软件包下载。
4.2.6. 删除软件包
删除软件包可以执行以下命令:
dnf remove package_name…
删除 totem 软件包示例:
dnf remove totem
4.3. 管理软件包组
软件包组可以搜集一系列特定功能软件包,比如系统工具和视频软件包组。 安装软件包组可以一起安装其依赖。
4.3.1. 软件包组列表
Summary 选项可以显示软件包可用组的数量:
dnf groups summary
以下为输出示例:
#dnf groups summary
可用组: 8
显示某个软件包组的全部信息可以用以下命令:
#dnf groups info glob_expression…
以下为 Server 组输出示例:
#dnf groups info Server
4.3.2. 安装软件包组
每个软件包组都有自己的组 ID,要显示包组 id 可以使用以下命令:
#dnf group list ids
查找开发软件包组列表的示例:
#dnf groups list ids deve\*
软件包组的安装可以通过软件包组名称安装,也可通过包组 id 安装。
#dnf group install "group name"
#dnf group install groupid
也可用通过以下两种命令安装:
#dnf install @group
#dnf install @^group
下面是 4 种安装开发工具软件分组的示例:
#dnf group install "Development Tools"
#dnf group install development
#dnf install @"Development Tools"
#dnf install @development
4.3.3. 删除软件包组
可以通过软件包组名或者软件包组 id 删除软件包。以 root 权限执行:
#dnf group remove group_name
#dnf group remove groupid
如果软件分组有@标签,也可用以下命令删除。以 root 身份执行:
#dnf remove @group
#dnf remove @^group
删除 KDE 桌面软件分组示例:
#dnf group remove "Development Tools"
#dnf group remove development
#dnf remove @"Development Tools"
#dnf remove @development
4.4. 软件包操作记录管理
dnf 可以使用 dnf history 命令进行管理操作。
4.4.1. 查看操作
显示以往 20 条 dnf 操作记录,可以使用以下命令。以 root 权限执行:
#dnf history list 1..20
如果想显示某一部分 dnf 操作记录,可以使用以下命令。以 root 权限执行:
#dnf history list start_id. . end_id
显示过去 5 条 dnf 信息示例如下:
#dnf history list 1..5
以上 dnf history list 输出显示内容说明如下:
ID——识别特定记录的标示数;
Command line——简要描述操作内容;
Date and time——该条记录的日期和时间;
Action(s)——描述操作类型;
Altered——记录操作影响的条目数。
下表是 Action 的不同说明:
4.4.2. 审查操作
需要显示某条操作记录的具体综述信息,可以执行以下命令:
#dnf history {id}
其中 id 是操作的 id。
如果需要显示某条操作记录的详细信息,可以使用以下命令:
#dnf history info {id}
如果需要显示某一阶段操作记录的详细信息,可以使用以下命令:
#dnf history info start_id. . end_id
示例如下:
#dnf history info 4 . . 5
4.4.3. 恢复与重复操作
如果想要撤销某个 dnf 操作,可以以 root 权限执行以下操作:
#dnf history undo {id}
如果需要重复某个 dnf 操作,可以以 root 权限执行以下操作:
#dnf history redo {id}