8.1软件包的管理
软件包的类型:
RPM包(RedHatPackageManager):RPM是一种二进制软件包格式,主要在RedHatLinux、Fedora、CentOS、和openSUSE等Linux发行版中使用。RPM包包含了可执行文件、库、配置文件和安装脚本等。
DEB包(DebianPackage):DEB是另一种二进制软件包格式,主要在Debian、Ubuntu以及基于它们的发行版中使用。DEB包也包含了软件的二进制文件、库、配置信息以及安装脚本。
源码包(SourcePackage):源码包包含了软件的源代码文件、编译指令和配置文件。它们通常以.tar.gz或.tar.bz2等压缩格式提供。源码包需要在本地编译以生成可执行程序,通常用于自定义编译和安装。
Tarball:Tarball不是正式的软件包格式,而是一种通用的归档文件格式。它通常以.tar.gz或.tar.bz2等压缩格式提供,包含源代码或二进制文件,通常需要手动解压和安装。
AppImage:AppImage是一种便携式自包含的应用程序格式,它包括应用程序本身和运行时库,可以在不同Linux发行版上运行。用户可以直接运行AppImage文件,无需安装。
Snap包:Snap是一种通用的软件包格式,由Canonical开发,可以跨不同Linux发行版使用。Snap包包含应用程序和其依赖项,提供自包含的运行环境。
Flatpak包:Flatpak是另一种通用的软件包格式,可以在不同Linux发行版上运行。Flatpak包包括应用程序和其运行时依赖项,使应用程序的隔离和可移植性更强。
官方仓库包:大多数Linux发行版都有官方的软件仓库,其中包括经过测试和支持的软件包。这些软件包可以使用包管理器(如apt、dnf、yum等)从官方仓库中安装。
8.1.1rpm软件包的管理
1、rpm包的获取方式
1.RockyLinux系统镜像光盘
2.网站rpmfind.net
3.比如安装mysql、nginx软件,我们可以去它的官方网站下载:
4.RockyLinuxyum源上,也有rpm可以手动下载
rpm包格式的说明
例1:适用于64位操作系统rpm包详解
[root
rocky8~]#ls/mnt/BaseOS/Packages/z/zsh-5.5.1-9.el8.x86_64.rpm/mnt/BaseOS/Packages/z/zsh-5.5.1-9.el8.x86_64.rpm
上面输出内容末尾的意思详解:
zsh:这部分指定了软件包的名称。在这种情况下,软件包的名称为"zsh",表示这是一个与Zshshell相关的软件包。
5.5.1:这是软件包的版本号。在这里,版本号是"5.5.1",指示了软件包的版本。版本号通常用于区分不同版本的软件包。
9:这是软件包的发布号。发布号表示软件包的特定构建或修订版本。不同的发布号可以表示同一软件包的不同修订版本。
el8:这是针对特定Linux发行版的标识。在这里,"el8"表示这个RPM包适用于RHEL8(RedHatEnterpriseLinux8)或基于RHEL8的Linux发行版,例如CentOS8。
x86_64:这是软件包的架构标识。在这里,"x86_64"表示这个RPM包适用于64位x86架构的处理器。这意味着它可以在支持x86_64架构的计算机上运行。
综合起来,zsh-5.5.1-9.el8.x86_64.rpm表示一个适用于RHEL8及其衍生发行版的Zshshell的RPM软件包,版本号为5.5.1,发布号为9,适用于64位x86架构的计算机。这个信息有助于用户确定软件包的内容、版本和适用平台。
例2:适用于32位操作系统rpm详解
[root
rocky8~]#ls/mnt/BaseOS/Packages/a/atlas-3.10.3-8.el8.1.i.rpm/mnt/BaseOS/Packages/a/atlas-3.10.3-8.el8.1.i.rpm
上面输出内容末尾的意思详解:
atlas:这部分指定了软件包的名称。在这种情况下,软件包的名称为"atlas",表示这是一个与ATLAS(AutomaticallyTunedLinearAlgebraSoftware)相关的软件包。ATLAS是一个自动调整的线性代数库,用于数值计算。
3.10.3:这是软件包的版本号。在这里,版本号是"3.10.3",指示了软件包的版本。版本号通常用于区分不同版本的软件包。
8.el8.1:这是软件包的发布号。发布号表示软件包的特定构建或修订版本。在这里,"8.el8.1"可能表示这个软件包适用于RHEL8(RedHatEnterpriseLinux8)或基于RHEL8的Linux发行版,同时也可能包含特定的修订版本信息。
i:这是软件包的架构标识。在这里,"i"表示这个RPM包适用于32位的x86架构的处理器。这意味着它可以在支持32位x86架构的计算机上运行。
综合起来,atlas-3.10.3-8.el8.1.i.rpm表示一个适用于RHEL8及其衍生发行版的ATLAS库的RPM软件包,版本号为3.10.3,发布号为8.el8.1,适用于32位x86架构的计算机。这个信息有助于用户确定软件包的内容、版本和适用平台。
例3:32位操作系统和64位操作系统兼容的rpm包
[root
rocky8~]#ls/mnt/AppStream/Packages/z/zsh-html-5.5.1-9.el8.noarch.rpm/mnt/AppStream/Packages/z/zsh-html-5.5.1-9.el8.noarch.rpm
上面输出内容末尾的意思详解:
zsh-html:这部分指定了软件包的名称。在这种情况下,软件包的名称为"zsh-html",表明这是与Zshshell相关的文档或帮助文件。
5.5.1:这是软件包的版本号。在这里,版本号是"5.5.1",指示了软件包的版本。版本号通常用于区分不同版本的软件包。
9:这是软件包的发布号。发布号表示软件包的特定构建或修订版本。不同的发布号可以表示同一软件包的不同修订版本。
el8:这是针对特定Linux发行版的标识。在这里,"el8"表示这个RPM包适用于RHEL8(RedHatEnterpriseLinux8)或基于RHEL8的Linux发行版,例如CentOS8。
noarch:这是软件包的架构标识。在这里,"noarch"表示这个RPM包是“无架构”的,即它不依赖于特定的硬件架构。这种类型的软件包通常包含文档、帮助文件、脚本等,可以在不同硬件架构的计算机上运行。
综合起来,zsh-html-5.5.1-9.el8.noarch.rpm表示一个适用于RHEL8及其衍生发行版的Zshshell文档或帮助文件的RPM软件包,版本号为5.5.1,发布号为9,不依赖于特定硬件架构。这个信息有助于用户确定软件包的内容、版本和适用平台。通常,这种软件包包含了与Zshshell相关的文档、手册或HTML帮助文件。
例4:查看内核版本
[root
rocky8~]#uname-r4.18.0-.9.1.el8.x86_64
8.1.2安装rpm软件
rpm(RedHatPackageManager)是一个用于管理和操作RPM(RedHatPackageManager)软件包的命令行工具。RPM是一种用于在Linux系统中分发和安装软件的标准包格式。rpm命令允许用户执行各种包管理任务,包括安装、卸载、查询和验证软件包。
命令名称:rpm
安装位置:通常在/bin/rpm或/usr/bin/rpm
可用于RedHat、Fedora、CentOS等Linux发行版,以及其他基于RPM的系统。
-i是install的意思,安装软件包
-v显示附加信息,提供更多详细信息
-V校验,对已经安装的软件进行校验
-h--hash安装时输出####标记
-a(all)查询所有已安装的软件包
-f(file)系统文件名(查询系统文件所属哪个软件包),反向查询
-i显示已经安装的rpm软件包信息,后面直接跟包名
-l(list)查询软件包中文件安装的位置
-R查询软件包的依赖性
例1:使用rpm命令时,什么情况下使用软件包全名,什么情况下使用软件包名?
软件包全名:软件包的全名包括软件包的名称、版本、发布号、架构等完整信息。通常,软件包全名是在安装、卸载和查询软件包时使用的,以确保操作特定版本的软件包。例如:rpm-ipackage-full-name.rpm,rpm-epackage-full-name,rpm-qpackage-full-name。
例如,zsh-5.5.1-9.el8.x86_64.rpm是软件包的全名,包括软件包名称、版本、发布号和架构。在一些情况下,特定的版本或架构可能是关键的,因此需要使用软件包的全名来明确指定。
软件包名:软件包名通常指的是软件包的名称部分,而不包括版本、发布号和架构等信息。在查询、列出已安装的软件包或检查文件所属软件包时,通常使用软件包名称。软件包名通常是操作中的关键参数。例如:rpm-qpackage-name,rpm-qa,rpm-qf/path/to/file。
例如,对于软件包zsh-5.5.1-9.el8.x86_64.rpm,软件包名称部分是zsh,它用于标识软件包的基本名称。
一般来说,当你需要执行与软件包版本和架构无关的操作,如查询、列出或确定文件所属软件包时,使用软件包名称部分是足够的。然而,当你需要安装、卸载或更新软件包时,通常需要提供软件包的全名,以确保你操作的是特定版本和架构的软件包。
例2:从本地安装
[root
rocky8~]#rpm-ivh/mnt/BaseOS/Packages/l/lrzsz-0.12.20-43.el8.x86_64.rpm#安装lrzsz包,安装后可以使用rz和sz命令
参数:
例3:查询
[root
rocky8~]#rpm-qlrzsz #查看指定的包是否安装lrzsz-0.12.20-43.el8.x86_64
[root
rocky8~]#rpm-qa #查看所有已安装的安装包例4:查找已安装包中带lrzsz关键字
[root
rocky8~]#rpm-qagreplrzsz
lrzsz-0.12.20-43.el8.x86_64
例5:查找文件或命令属于哪个安装包
[root
rocky8~]#whichfind/usr/bin/find
[root
rocky8~]#rpm-qf/usr/bin/findfindutils-4.6.0-20.el8.x86_64
例6:查看rpm安装包安装后,会生成那些文件,文件安装的未知
[root
rocky8~]#rpm-ql/mnt/AppStream/Packages/n/nginx-1.14.1-9.module+el8.4.0++.x86_64.rpm例7:查看软件包内容是否被修改
[root
rocky8~]#whichfind/usr/bin/find
[root
rocky8~]#rpm-qf/usr/bin/findfindutils-4.6.0-20.el8.x86_64
[root
rocky8~]#rpm-Vf/usr/bin/find #参数-Vf:查看文件或命令是否被修改[root
rocky8~]#echohello/usr/bin/find[root
rocky8~]#rpm-Vf/usr/bin/findS.5....T./usr/bin/find
[root
rocky8~]#rpm-Vfindutils #检查包S.5....T./usr/bin/find
注:如果出现的是点,表示测试这一项,没有被修改
出现下面的字符代表某测试的失败:
5—MD5校验和是否改变,你也看成文件内容是否改变
S—文件长度,大小是否改变
L—符号链接,文件路径是否改变
T—文件修改日期是否改变
D—设备
U—用户,文件的属主
G—用户组
M—模式(包含许可和文件类型)
?—不可读文件
再后面的c文件名,它表示的是文件类型
c配置文件
d普通文件
g不该出现的文件,意思就是这个文件不该被这个包所包含
l授权文件(licensefile)
r描述文件
root
rocky8~]#rpm-Vlrzsz #-V,查看这个包安装的所有文件是否被修改例8:rpm包卸载和升级
[root
rocky8~]#rpm-elrzsz[root
rocky8~]#rpm-qlrzsz未安装软件包lrzsz
[root
rocky8~]#rpm-e--nodepslrzsz参数:--nodeps忽略依赖,建议在卸载时不要用rpm去卸载有依赖关系的包,应该用yum
[root
rocky8~]#rpm-Uvh/mnt/BaseOS/Packages/l/lrzsz-0.12.20-43.el8.x86_64.rpm#因为升级时会有一些依赖包要解决。所以一般我们使用yumupdate包来升级。
例9:解决依赖关系
[root
rocky8~]#rpm-ivh/mnt/AppStream/Packages/h/