沙丁鱼介绍

首页 » 常识 » 问答 » linux软件包的管理与安装
TUhjnbcbe - 2024/9/14 16:42:00

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-r

4.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-qa

greplrzsz

lrzsz-0.12.20-43.el8.x86_64

例5:查找文件或命令属于哪个安装包

[root

rocky8~]#whichfind

/usr/bin/find

[root

rocky8~]#rpm-qf/usr/bin/find

findutils-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/find

findutils-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/find

S.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/
1
查看完整版本: linux软件包的管理与安装