openEuler之软件包管理(3)

YUM和DNF

YUM和DNF都是包管理器,针对RPM包,通过使用软件仓库管理软件包。它们可以帮助我们便捷地下载、安装、卸载、升级软件包以及解决依赖关系,用户只需要关注所要安装的软件包本身,而无需再去关注RPM包之间的依赖关系。
YUM和DNF也需要通过数字证书校验RPM包的。

概念
YUM和DNF的区别

YUM是早先的RPM包管理工具,但由于长期不更新等问题,被DNF所取代。目前主流的操作系统都在使用DNF3作为RPM包管理工具,DNF3则是YUM的替代品,DNF的命令参数完全兼容YUM。

DNF的优势
  • 兼容性:YUM只能使用python进行调用,而DNF可以使用任何语言开发插件并调用
  • 性能:DNF的内存占用更小,解析RPM包索引的速度更快
  • 轻量度:DNF的代码量更少,只有不到5千行

在openEuler中,yum和dnf这两个命令都指向dnf-3这个可执行程序,也就是说无论你使用yum命令还是dnf命令,实际上调用的都是dnf。

[root@gugujun ~]# ls -l /usr/bin/yum
lrwxrwxrwx. 1 root root 5 Dec 27  2023 /usr/bin/yum -> dnf-3
[root@gugujun ~]# ls -l /usr/bin/dnf
lrwxrwxrwx. 1 root root 5 Dec 27  2023 /usr/bin/dnf -> dnf-3
YUM/DNF的工作原理

软件仓库

软件仓库是一个集中存放软件包的存储库,可以是在线的或本地的。这些软件包都经过预编译、测试并按照特定组织结构归类。每个软件包都包含了应用程序、库文件、配置文件以及其他必要的组件,并且附带有关于软件版本、依赖关系等元数据信息。软件仓库使得用户可以方便地搜索、安装、更新和卸载软件,而无需手动处理复杂的依赖关系。
元数据信息是repodata这个目录,附带的信息都在这个目录里面,所以在指定仓库路径时,需要指定repodata的上级目录。
image.png
image.png

配置软件仓库

openEuler默认为我们提供了网络源的方式,该软件仓库的路径为/etc/yum.repos.d/openEuler.repo

  • 仓库的配置路径:
    • /etc/yum.repos.d/,文件格式为*.repo
  • DNF的配置路径:
    • /etc/dnf/,配置文件为dnf.conf

DNF配置仓库 /etc/dnf/dnf.conf
根据RPM包存放的位置不同,分为网络源和本地源

  1. 本地源操作步骤
    1. YUM
[root@gugujun ~]# mkdir /mnt/cdrom	# 创建被挂载的目录
[root@gugujun ~]# mount /dev/cdrom /mnt/cdrom	# 将本地镜像挂载
mount: /mnt/cdrom: WARNING: source write-protected, mounted read-only.
[root@gugujun ~]# cd /etc/yum.repos.d/	# 进入yum的配置目录
[root@gugujun yum.repos.d]# mv openEuler.repo openEuler.repo.bak	# 备份默认仓库文件
[root@gugujun yum.repos.d]# vim openEuler.repo	# 创建新仓库文件
  [openEuler]	# 仓库的名字
  name=openEuler Packages	# 仓库的描述
  baseurl=file:///mnt/cdrom/	# 软件仓库的位置,本地镜像挂载目录
  enable=1	# 仓库是否启用,为1表示开启,为0表示关闭,则在安装软件时系统不会在这个仓库下查找软件
  gpgcheck=0	# 是否校验软件的完整性,如果开启需要写公钥的位置
:wq
[root@gugujun ~]# yum clean all	# 清除全部缓存
50 files removed
[root@gugujun ~]# yum makecache	# 生成新的缓存
openEuler Packages                                                                       95 MB/s |  17 MB     00:00
Last metadata expiration check: 0:00:03 ago on Sun 30 Jun 2024 03:30:58 AM CST.
Metadata cache created.
  1. DNF
[root@gugujun ~]# mkdir /mnt/cdrom	# 创建被挂载的目录
[root@gugujun ~]# mount /dev/cdrom /mnt/cdrom	# 将本地镜像挂载
mount: /mnt/cdrom: WARNING: source write-protected, mounted read-only.
[root@gugujun ~]# cd /etc/yum.repos.d/	# 进入yum的配置目录
[root@gugujun yum.repos.d]# mv openEuler.repo openEuler.repo.bak	# 备份默认仓库文件
[root@gugujun ~]# vim /etc/dnf/dnf.conf
  [main]
  gpgcheck=1
  installonly_limit=3
  clean_requirements_on_remove=True
  best=True
  skip_if_unavailable=False
  [openEuler]	# 仓库的名字
  name=openEuler Packages	# 仓库的描述
  baseurl=file:///mnt/cdrom/	# 软件仓库的位置,本地镜像挂载目录
  enable=1	# 仓库是否启用,为1表示开启,为0表示关闭,则在安装软件时系统不会在这个仓库下查找软件
  gpgcheck=1	# 是否校验软件的完整性,如果开启需要写公钥的位置
  gpgkey=/mnt/cdrom/RPM-GPG-KEY-openEuler	# RPM公钥的路径
:wq
[root@gugujun ~]# dnf clean all	# 清除全部缓存
6 files removed
[root@gugujun ~]# dnf makecache	# 生成新的缓存
openEuler Packages                                                                      224 MB/s |  17 MB     00:00
Last metadata expiration check: 0:00:03 ago on Sun 30 Jun 2024 03:45:31 AM CST.
Metadata cache created.
  1. 网络源操作步骤
[root@gugujun yum.repos.d]# vim openEuler.repo
  [openEuler]
  name=openEuler Packages
  baseurl=https://mirrors.aliyun.com/openeuler/openEuler-22.03-LTS-SP3/OS/x86_64/	# 镜像仓库网址
  enabled=1
  gpgcheck=1
  gpgkey=https://mirrors.aliyun.com/openeuler/openEuler-22.03-LTS-SP3/OS/x86_64/RPM-GPG-KEY-openEuler
[root@gugujun ~]# yum clean all
6 files removed
[root@gugujun ~]# yum makecache
openEuler Packages                                                                      2.1 MB/s | 3.4 MB     00:01
Last metadata expiration check: 0:00:02 ago on Sun 30 Jun 2024 03:53:13 AM CST.
Metadata cache created.
DNF/YUM配置命令
yum [options] [command] [package ...]
  1. 列出所有可更新的软件清单命令:yum check-update
  2. 更新所有软件命令:yum update
  3. 仅安装指定的软件命令:yum install <package_name>
  4. 仅更新指定的软件命令:yum update <package_name>
  5. 列出所有可安裝的软件清单命令:yum list
  6. 删除软件包命令:yum remove <package_name>
  7. 查找软件包命令:yum search <keyword>
  8.列出已经安装的软件包清单:yum list all
  9.列出系统中特定的RPM包信息:yum list 软件包名
  10.显示RPM包信息:yum info 软件包名
  11. 清除缓存命令:
    yum clean packages: 清除缓存目录下的软件包
    yum clean headers: 清除缓存目录下的 headers
    yum clean oldheaders: 清除缓存目录下旧的 headers
    yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除缓存目录下的软件包及旧的 headers
软件包组

软件包组是多个软件包的集合,直接安装软件包组,可以简化软件包的安装及管理等操作。

1.列出当前系统中的软件包组数量:dnf groups
2.列出当前系统中软件包组的详细信息:dnf group list
3.安装软件包组:dnf groupinstall
4.删除软件包组:dnf groupmove
5.查询软件包组中的软件包:dnf groupinfo

一般单独升级软件包,而不是直接升级软件包组
  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值