运维开发网

RHEL8 RPM 与 YUM/DNF 软件包管理基础

运维开发网 https://www.qedev.com 2021-04-21 13:31 出处:51CTO 作者:一天已过半
(1)二进制包(2)源码包(3)二进制源码包(.src/.rpm)(4)常见的二进制包(5)二进制包与源码包区别(6)源码安装(7)源码安装常用配置① 获取软件的源码包② 源码安装三板斧源码安装cmatrix代码雨1)什么是DNF2)DNF 常用参数1)什么是yum2)yum 工具管理3)RHEL8 配置本地yum源① 本地仓库的分类② 配置本地仓库② YUM工具的使用1)什么是RPM2)RPM的

    • (1)二进制包
    • (2)源码包
    • (3)二进制源码包(.src/.rpm)
    • (4)常见的二进制包
    • (5)二进制包与源码包区别
    • (6)源码安装
    • (7)源码安装常用配置
    • ① 获取软件的源码包
    • ② 源码安装三板斧
    • 源码安装cmatrix代码雨
    • 1)什么是DNF
    • 2)DNF 常用参数
    • 1)什么是yum
    • 2)yum 工具管理
    • 3)RHEL8 配置本地yum源
    • ① 本地仓库的分类
    • ② 配置本地仓库
    • ② YUM工具的使用
    • 1)什么是RPM
    • 2)RPM的优点和缺点
    • 3)RPM的使用权限
    • 4)RPM 基本用法
    • ① RPM的软件包查询功能
    • ② RPM的软件包的安装
    • ③ RPM的软件包的卸载与重建数据库
    • 一、RPM软件包管理
    • 二、YUM
    • 三、DNF
    • 四、源码编译安装

一、RPM软件包管理

1)什么是RPM

RPM是 RedHat Package Manager(RedHat软件包管理工具)的缩写。

RPM 包管理系统:功能强大,安装、升级、査询和卸载非常简单方便,在Fedora 、Redhat、Mandriva、SuSE、YellowDog等主流发行版本,以及在这些版本基础上二次开发出来的发行版采用。

RPM是以一种数据库记录的方式将所需要的软件安装到Linux主机的一套管理程序,最大的特点是将要安装的软件先编译并打包,通过包装好的软件中默认的数据库记录,记录这个软件在安装的时候需要的依赖属性模块,在用户的Linux主机安装时,RPM会先根据软件里的记录数据,查询Linux主机的依赖属性软件是否满足,若满足则予以安装,不满足则不安装。安装的时候将该软件的信息全部写入RPM的数据库中以便将来的查询、验证与卸载。

RHEL8  RPM 与 YUM/DNF 软件包管理基础

2)RPM的优点和缺点

  1. 优点
  • 由于已经编译完成并且打包,所以安装很方便
  • 由于套件信息已经记录在Linux主机的数据库中,方便查询、升级与卸载
  1. 缺点
  • 安装环境必须与打包时的环境一致
  • 需要满足软件的依赖属性需求
  • 卸载时需要特别小心,最底层的软件不可以先删除,否则可能造成整个系统出问题

3)RPM的使用权限

RPM软件的安装、删除、更新只有root权限才能使用;对于查询功能任何用户都可以操作;如果普通用户拥有安装目录的权限,也可以进行安装。

4)RPM 基本用法

① RPM的软件包查询功能

RPM在查询的时候,查询的地方是在/var/lib/rpm目录下的数据库文件。

# 根据命令后面所带参数可以分为四种:# 一、命令后不带参数# rpm -qa :查询所有已经安装的软件名称# 二、带安装的软件名称# -q:查询后面接的软件是否安装,已安装有信息输出,否则没有# rpm -qi :列出该软件的详细信息(information),包含开发商、版本与说明等# rpm -ql :列出该软件所有的文件与目录(list)# rpm -qc :列出该软件的所有配置文件# rpm -qd :列出该软件的所有帮助文件(与man有关的文件)# rpm -qR :列出与该软件有关的依赖软件所含的文件(Required)# 三、带一个存在于系统的文件名称# rpm -qf :找出该文件属于哪个已安装的软件# 四、带一个 .rpm 文件# rpm -qp[licdR] :-qp后面接的所有参数以上面的说明为准,目的在于找出某个rpm文件内的信息,而非已安装的软件信息

② RPM的软件包的安装

# rpm -ivh package_name.rpm参数:
-i:install的意思
-v:查看更详细的安装信息页面
-h:以安装信息列显示安装进度

③ RPM的软件包的卸载与重建数据库

# rpm -e firefox-60.2.2-1.el7.centos.x86_64  # 卸载firefox浏览器# rpm –-rebuilddb   # 重建数据库了解:
--nodeps :忽略依赖关系,强制卸载

二、YUM

1)什么是yum

Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。

基于rpm包管理,能够从指定的服务器(yum源)自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

2)yum 工具管理

核心:需要有一个存放软件包和软件包之间依赖关系的软件仓库。

RHEL8  RPM 与 YUM/DNF 软件包管理基础

1.需要有一个软件仓库

  • 仓库可以在本地,称之为 本地yum源
  • 仓库可以在云端,称之为 网络yum源(网络必须OK)

2.需要告诉yum工具到哪个仓库去找

  • 默认有一个地方,存放了*.repo文件,定义了去哪儿个仓库找

3)RHEL8 配置本地yum源

① 本地仓库的分类

  • BaseOS 储存库

BaseOS 储存 旨在提供一套核心的底层操作系统的功能,为基础软件安装库

  • AppStream 储存库

AppStream 储存库中包括额外的用户空间应用程序、运行时语言和数据库,以支持不同工作负载和用例。AppStream 中内容有两种格式——RPM格式 和 称之为模块的RPM格式拓展

② 配置本地仓库

步骤一:挂载镜像到本地系统

# mount -o ro /dev/sr0 /mnt列出BaseOS 和 AppStream 的内容如下说明仓库已准备好[root@hsforpyp ~]# ls /mnt/BaseOS/Packages  repodata[root@hsforpyp ~]# ls /mnt/AppStream/Packages  repodata

步骤二:修改配置文件指定本地储存库

[root@hsforpyp mnt]# vim /etc/yum.repos.d/local.repo [root@hsforpyp mnt]# cat /etc/yum.repos.d/local.repo [BaseOS]name=LOCAL BaseOS YUM
enabled=1
baseurl=file:///mnt/BaseOS/
gpgcheck=0[AppStream]name=LOCAL APPSTREAM YUM
enabled=1
baseurl=file:///mnt/AppStream
gpgcheck=0

参数说明:

[LocalRepo]  # 存储库的名称

name     # 存储库内容说明

baseurl   # yum 源地址

enabled # 存储库是否生效

gpgcheck # 是否进行gpg校验,gpgcheck=0,那么gpgkey可以不写

步骤三:查看是否成功(如下红方框即为成功)

RHEL8  RPM 与 YUM/DNF 软件包管理基础

② YUM工具的使用

  1. 查询操作
# yum search 关键词

  1. 安装操作
# yum -y install 关键词选项说明:
-y:yes缩写,选择自动确认,不提示。

  1. 卸载操作
# yum -y remove 关键词选项说明:
-y:yes缩写,选择自动确认,不提示。

  1. 更新操作
# yum -y update 关键词选项说明:
-y:yes缩写,选择自动确认,不提示。

三、DNF

1)什么是DNF

dnf是新一代的rpm软件包管理器。首次出现在 Fedora 18 这个发行版中。它取代了yum,正式成为 Fedora 22 的包管理器。

dnf包管理器克服了yum包管理器的一些瓶颈,提升了包括用户体验,内存占用,依赖分析,运行速度等多方面的内容。dnf使用 RPM, libsolv 和 hawkey 库进行包管理操作。尽管它没有预装在 CentOS 和 RHEL 7 中,但你可以在使用yum的同时使用dnf 。

[root@hsforpyp bin]# ll /usr/bin |grep dnf

lrwxrwxrwx. 1 root root 5 Feb 14 2019 dnf -> dnf-3

-rwxr-xr-x. 1 root root 1954 Feb 14 2019 dnf-3

lrwxrwxrwx. 1 root root 5 Feb 14 2019 yum -> dnf-3

当然dnf也不是完美的,例如:在dnf中没有 –skip-broken 命令,并且没有替代命令供选择。 没有判断哪个包提供了指定依赖的 resolvedep 命令,没有用来列出某个软件依赖包的 deplist 命令等等。

2)DNF 常用参数

语法格式

# dnf [参数]

选项意义
repolist显示系统中可用的 DNF 软件库
list列出用户系统上的所有来自软件库的可用软件包和所有已经安装在系统上的软件包
search <包名>搜索软件库中的软件包
provides <路径>查找某一文件的提供者
info <包名>查看软件包详情
install <包名>安装软件包
update <包名>升级软件包
check-update检查系统软件包的更新
update升级所有系统软件包
remove删除软件包
autoremove删除无用孤立的软件包
clean all删除缓存的无用软件包
help <命令名>获取有关某条命令的使用帮助
help查看所有的dnf命令及其用途
history查看dnf命令的执行历史
grouplist查看所有的软件包组
groupinstall <软件包组名称>安装一个软件包组
groupupdate <软件包组名称>升级一个软件包组中的软件包
groupremove <软件包组名称>删除一个软件包组
distro-sync更新软件包到最新的稳定发行版
reinstall <包名>重新安装特定软件包
downgrade <包名>回滚某个特定软件的版本
–version查看 DNF 包管理器版本

四、源码编译安装

(1)二进制包

  • 什么是二进制包?有何特点?
  1. 已经编译好的软件包,下载安装即可使用
  2. 根据计算机CPU以及操作系统选择合适的
  3. 命名方式一般为:xlockmore-5.31-2.el6.x86_64.rpm
  4. 类似于Windows中的.exe文件

    RHEL8  RPM 与 YUM/DNF 软件包管理基础

(2)源码包

  • 什么是源码包?有何特点?
  1. 源码包,指的是程序员写的原始的程序代码文件,不能直接在计算机上运行
  2. 需要进行编译,变成二进制的软件包后,才可安装使用
  3. 一般可以在任何计算机上安装
  4. 命名方式一般为:

    软件包名.tar.gz

    软件包名.tar.bz2

    软件包名.tar.xz

    软件包名.zip

(3)二进制源码包(.src/.rpm)

什么是二进制源码包?有什么特点?

  1. 二进制源码包,是一个半成品,安装后不能直接使用
  2. 二进制源码包,需要使用rpmbuild工具重建成真正的rpm包或者重建成源码包才可安装使用
  3. 二进制源码包,命名方式一般为:
  • mysql-community-5.7.25-1.el6.src.rpm
  • mysql-community-5.7.25-1.el7.src.rpm

(4)常见的二进制包

系统平台包类型工具在线安装
Redhat/CentOS/Fedora/SUSErpmrpm,rpmbuildyum
Ubuntu/Debiandebdbkgapt

(5)二进制包与源码包区别

软件包类型是否编译安装难易程度可定制性
二进制包
源码包难(配置->编译->安装)

(6)源码安装

① 获取软件的源码包

官网获取,一般都是*.tar.gz

② 源码安装三板斧

  1. 配置./configure(软件安装路径,不配置使用默认路径)
  2. 编译make(把软件的源码包做成类似rpm的可以直接安装的软件)
  3. 安装make install(把编译好的程序安装到linux系统中)

源码安装cmatrix代码雨

步骤一:对软件进行解压缩

# tar -zxf cmatrix-1.2a.tar.gz

步骤二:进入cmatrix文件夹,对软件进行配置

# cd cmatrix-1.2a/# ./configure

步骤三:编译软件,使用make命令

# make

常见错误:

cmatrix.c:37:20: fatal error:curses.h:No such file or directory
出现以上问题的原因在于系统没有找到ncurses-devel软件包

解决方案:

# yum install ncurses-devel -y

步骤四:安装软件make install

# make install

测试代码雨:

# cmatrix

(7)源码安装常用配置

# cd 软件源码包# ./configure [选项]# ./configure --help--prefix=... Directories to put files in /usr/local 软件家目录
--bindir=... $prefix/bin 	命令的目录
--etcdir=... $prefix/etc 	配置文件的目录 httpd => /etc/httpd/httpd.conf
--mandir=... $prefix/share/man man	文档路径
--locale=... $prefix/share/locale 	语言编码...
0

精彩评论

暂无评论...
验证码 换一张
取 消