命令与应用程序的关系
- 应用程序命令执行文件大多比较小,通常放置在/bin和/sbin目录中。对于内部内部命令,常集成在 Bash 程序内,而不是独立地执行文件;命令文件一般在安装操作系统时一起安装,用于辅助操作系统本身的管理;命令行大多适用于“命令字 选项 参数”形式的一般格式;命令只在字符操作界面中运行。
- 应用程序的执行文件通常放在/usr/in、/usr/sbin和/usr/1ocal/bin、/usr/local/sbin 等目录中;应用程序一般需要在操作系统之外另行安装,提供相对独立于操作系统的功能,有时候等同于“软件”的概念;应用程序一般没有固定的执行格式,运行方式由程序开发者自行定义;应用程序可能会用到图形界面,形式多样;有些应用程序提供的执行文件,能够使用像Linux命令一样的运行格式,所以也经常被称为程序命令。
常用应用程序
- 普通的可执行程序文件:一般保存在/usr/bin 目录中,普通用户即可执行。
- 服务器程序、管理程序文件:一般保存在/usr/sbin 目录中,只有管理员能执行。
- 配置文件:一般保存在/etc 目录中,配置文件较多时会建立相应的子目录。
- 日志文件:一般保存在/ar/los目录中。
- 关于应用程序的参考文档等数据:一般保存在/usr/share/doc/目录中
- 执行文件及配置文件的 ma 手册页:一般保存在/usr/share/man/目录中。
以OpenEuler中安装postfix软件包(一款邮件服务器程序)为例,展示服务器应用程序文件组成。执行“rpm –ql postfix”命令,可以查看postfix软件包在系统中安装的目录和文件清单
安装软件包
常见类型
常见软件包封装类型 | 扩展名 |
rpm软件包 | .rpm 只能在rpm((RPMPackageManager,RPM软件包管理器)机制的 Linux 操作系统中安装 |
DEB软件包 | .deb只能在使用 DPKG(DebianPackage,Debian 包管理器)机制的 Linux 操作系统中进行安装 |
源代码软件包 | 这种软件包是程序员开发完成的原始代码,一般被制作成“.tar.gz”或“.tar.bz2”等格式的压缩包文件,因多数使用 tar 命令打包而成,所以经常被称为“TarBa11” 安装源代码软件包需要使用相应的编译工具,如 Linux 中的 c语言编译器 gcc。 |
附带安装程序的软件包 | 这种软件包的扩展名不一,但仍以TarBa11 格式的居多软件包中会提供用于安装的可执行程序或脚本文件 |
开放源代码的自由软件大多数以TarBall的形式发布,而PRM软件包,DEB软件包等使用二进制的文件格式,代码相对比较封闭
PRM软件包
概述:rpm软件包管理机制有最早Red Hat公司提出。官方站点rpm.org - Homehttp://www.rpm.org
RPI 软件包管理器通过建立统一的文件数据库,对在 Linux 操作系统中安装、卸载、升级的各种.rpm软件包进行详细的记录,并能够自动分析软件包之间的依赖关系,保持各应用程序在一个协调、有序的整体环境中运行
使用 RPI 机制封装的软件包文件拥有约定俗成的命名格式,一般使用“软件名-软件版本-发布次数.操作系统类型,硬件架构类型.rpm”的文件名形式
rpm命令
-
- -qp:针对尚未安装的rpm软件包文件进行查询
- -qa:显示当前系统中以rpm方式安装的所有软件列表
- -qi:查看指定软件包的名称,版本,许可协议,用途描述等详细信息(info)
- -ql:显示指定的软件包在当前系统中安装的所有目录,文件列表(list)
- -qf:查看指定的文件或目录是由那个软件包安装的(file)
- -a:查询/验证所有软件包
- -f:指定文件或目录
- -g:验证组中软件包
- -p:验证一个软件包文件
- -q:rpm查询模式
- -i:在当前系统中安装一个新的rpm软件包
- -e:卸载指定名称的安装包
- -U:检查并升级系统中的某个软件包
- -F:检查并更新系统中的某个软件包
- -h:安装或升级软件包过程中,以“#”显示安装进度
- -v:显示安装过程中详细信息
- -froce:强制安装某个软件包
- -nodeps:在安装或升级,卸载时,不检查与其他软件包的依赖关系
- -e卸载软件包
重建rpm 数据库
-rebuilddb 或 -initdb命令
执行还可以结合管道“|”操作和“wc -l”使用 统计出系统中已安装的rpm软件的个数
rpm结合不同的命令选项及子选项主要可以实现三种功能
- 查询,验证PRM软件包的相关信息
- 安装,升级,维护 卸载rpm软件包
- 维护rpm数据库信息等综合管理操作
导入验证公钥
在 Limux/uIx 应用领域,相当一部分软件厂商会对发布的软件包进行数字签名,以确保软件的完整性、合法性。对于用户来说,可以利用官方提供的公钥文件,自动对下载的软件包进行验证,若在安装软件时出现验证失败的提示,则表示该软件包可能已经被非法改。
0penEuler 的 DW 光盘中默认已经提供了用于数字签名验证的公钥文件,即位于光盘根目录下的RPI-GPG-KEY-openEuler 文件。在没有导入公钥文件之前,安装 0penEuler 光盘中的一部分 RPI 软件包时,可能会出现“warning:…….x86_64.rpm: Header V3 RSA/SHA256 signature,key ID……: NOKEY的警告信息(一般不影响正常使用)。
向 RPM 数据库中导入公钥文件时,需要用到“一import”选项。
执行以下操作可以把光盘目录中的 RPM-GPG-KEY-Cent0s-7 公钥文件导入 RPM 数据库中。[root@localhost ~]# rpm --import /media/cdrom/RPM-GPG-KEY-openEuler
源代码编译概述
Linux 操作系统之所以能够在十余年的时间里发展壮大以至风靡全球,其开放源代码和操作简单的特性是很重要的原因之一,即 Linux 操作系统中包括内核在内的所有软件都可以获得源代码,并且可以经过定制修改后编译安装。
现代的 Linux 发行版本通常使用软件包管理机制对软件进行打包安装,这样省去了软件的编译安装过程,大大简化了 Linux 操作系统的安装和使用难度。
编译源代码需要有相应的开发环境,对自由软件来说,gcc和make是最佳的编译工具
步骤
1.解包
开源软件的源代码包一般为 TarBal1 形式,扩展名为“.tar.gz”或“.tar.bz2”,都可以使用 tar命令进行解压释放。对于只有“.gz”扩展名的源代码包,表示只经过压缩而并未使用 tar 归档,这样的文件只需使用 gzip 进行解压缩即可。在 Linux 操作系统中,通常将各种软件的源代码目录保存到“/usr/src/”目录中,以便于集中管理。
2.配置
在编译应用程序之前,需要进入源代码目录,通过目录下的脚本检查安装环境,并且对软件的安装目录、功能选择等参数进行预先配置。
环境检查与配置工作通常由源代码目录中的 configure 脚本文件来完成,可用的各种配置参数可以通过在源代码目录中执行“./configwre 一help”命令进行查看。对不同的软件程序来说,其配置参数存在区别,但是有一个“-prefix”形式的参数却是大多数开源软件通用的,该配置参数用于指定软件包安装的目标文件夹。如果没有指定任何配置参数,“configure”脚本将采用软件默认的值进行配置。
如果软件的功能比较复杂,配置过程会需要一定的时间,期间会在屏幕中显示大量的输出信息,这些信息可以帮肋管理员了解程序配置的过程。配置结果将保存到源代码目录的makefi1e文件中。如果配置过程出现错误,如包含“error”、“failed”或“not found”等关键字,通常是缺少相关的依赖软件包所致,此时只要根据提示安装对应的软件即可。
3.编译
编译的过程主要是根据 Iakefile 文件内的配置信息(若上一步的配置操作失败,将无法进行编译)将源代码文件进行编译生成二进制的程序模块、动态链接库、可执行文件等。配置完成后,只要在源代码目录中执行“make”命令即可执行编译操作。编译的过程比配置过程需要更长的时间,期间同样会显示大量的执行过程信息。
4.安装
编译完成以后,就可以执行如下的“make insta11”命令将软件的执行程序、配置文件、帮助文档等相关文件复制到 Linux 操作系统中了,即应用程序的最后“安装”过程。安装过程需要的时间相对要短一些,期间也会显示安装的过程信息。
有时为了简便,可将上述的编译、安装步骤写成一行命令执行,中间用“&&”符号分隔。(make && make install)