Linux应用程序的组成
应用程序的执行文件通常放在/usr/bin、/usr/sbin和/usr/local/bin、/usr/local/sbin等目录中。
安装完一个软件包以后,应用程序可能会向系统复制大量的数据文件,并进行相关设置。在Linux系统中,典型的应用程序通常由以下6个部分组成。
- 普通的可执行程序文件:一般保存在/usr/bin目录中,普通用户即可执行。
- 服务器程序、管理程序文件:一般保存在/usr/sbin目录中,只有管理员能执行。
- 配置文件:一般保存在/etc目录中,配置文件较多时会建立相应的子目录。
- 日志文件:一般保存在/var/log目录中。
- 关于应用程序的参考文档等数据:一般保存在/usr/share/doc/目录中。
- 执行文件及配置文件的man手册页:一般保存在/usr/share/man/目录中。
软件包和RPM
RPM软件包管理器最初是由红帽开发的,该程序提供了一种标准的方式来打包软件进行分发。与使用从存档提取到文件系统的软件相比,采用RPM软件包形式管理软件要简单得多。管理员可以通过它跟踪软件包所安装的文件,需要删除哪些软件(如果卸载)并检查确保显示支持软件包(如果安装)。有关已安装软件包的信息存储在各个系统的本地RPM数据库中。红帽为红帽企业 Linux提供的所有软件都以RPM 软件包的形式提供。
RPM软件包文件名由四个元素组成(再加上.rpm后缀) : name-version-release.architecture
- NAME是描述其内容的一个或多个词语(coreutils)。
- VERSION是原始软件的版本号(8.30)。
- RELEASE 是基于该版本的软件包的发行版号,由软件打包商设置,后者不一定是原始软件开发商(4.el8)。
- ARCH是编译的软件包运行的处理器架构。noarch表示此软件包的内容不限定架构(与表示64位的x86_64和表示64位ARM的aarch64等等相反)。
熟悉Linux中的应用软件类型
软件包安装分类
- RPM
- YUM/DNF(安装方式,主要解决RPM依赖性问题)
- source code(源码,即tar包)
包管理概念
通过软件包管理器把应用程序与操作系统关联起来
常见的包管理系统
- APT(Advanced package tool)
- RPM(RedHat Package Management)
- YUM
- DNF
学会使用RPM包进行管理
包管理系统的作用
- 软件安装
- 软件卸载
- 软件信息查询
- 安装软件包生成
使用RPM管理工具
- 安装命令:rpm [-i] [选项] 需要安装的软件包名
- 卸载命令:rpm [-e] [选项] 要卸载的软件包名
- 升级命令:rpm [-U] [选项] 要升级的软件包名
RPM的命令参数
- -F:如果已经安装则升级、如果没有安装则不安装
- -U:如果已经安装则升级、如果没有安装则安装
- -ivh:显示并安装软件包
- -e:卸载,只跟软件包名
- –replacepkgs:在原来的基础上修复安装,不覆盖原来修改过的
- –force:强制安装
- –oldpackage: 安装旧的版本
- –nodeps:去掉软件包依赖性关系
rpm查询命令(rpm [-q] 指定查询的对象 指定查询的信息)
- rpm -qa:列出所有已安装的软件包
- rpm -q:列出当前安装的软件包的版本
- rpm -qf:查询哪个文件或文件夹是属于哪个软件包
- rpm -qi:查询安装的软件包的详细信息
- rpm -qpi:查询安装或没有安装的软件包的详细信息
- rpm -ql:查看软件包安装到系统的路径信息
- rpm -qc:仅列出软件包的配置文件
- rpm -qd:仅列出软件包的文档文件
- rpm -q --scripts:列出在安装或删除软件包之前或之后运行的shell脚本
- rpm -q --changelog:列出软件包的更改信息
维护RPM数据库
重建RPM数据库
用户记录在Linux系统中安装、卸载、升级应用程序的相关信息,由RPM软件包管理系统自动完成维护,一般不需要用户干预。当RPM数据库发生损坏(如误删文件、非法关机、病毒破坏等),且Linux系统无法自动完成修复时,将导致无法使用rpm命令正常地安装、卸载及查询软件包。
- rpm --rebuilddb:创建rpm数据库
- rpm --initdb:初始化rpm数据库
导入验证公钥
在Linux/UNIX应用领域,相当一部分的软件厂商会对发布的软件包进行数字签名,以确保软件的完整性、合法性。对于用户来说,可以利用软件官方提供的公钥文件,自动对下载的软件包进行验证。如果在安装软件时出现验证失败的提示,则表示该软件包可能已经被非法篡改。
RHEL 8系统的DVD光盘已经提供了用于数字签名验证的公钥文件,即位于光盘根目录下的RPM-GPG-KEY-redhat-release文件中。
rpm --import /mnt/RPM-GPG-KEY-redhat-release:导入公钥文件