一:Linux应用程序基础
1:应用程序与系统命令的关系
2:典型的应用程序的目录结构
3:常见的软件包封装类型
二:RPM
1:RPM包管理工具
2:RPM命令的格式
3:查询RPM软件包信息
4:查询已安装RPM信息
5:安装升级RPM软件包
三:源代码编译安装
1:tarball封包
2:完整性校验
3:用yum解决源码安装依赖问题
一:Linux应用程序基础
(一):应用程序徐系统文件的关系
1:
文件位置: 系统命令一般在/bin和/sbin目录中,一部分为shell内部命令。
应用程序通常在user/bin、lusr/sbin、/usr/local/sbin目录中。
主要用途:系统命令完成对系统的基本管理工作。
应用程序完成相对独立的副主任务。
适用环境:系统命令一般在字符操作界面中运行。
应用程序一般在图形界面中运行。
运行格式:系统命令一般包括命令字、命令选项和命令参数。
应用程序通常没有固定的执行格式,由程序开发者自行定义。
2:
/目录下的bin和sbin指向user中的bin和sbin,所以在安装时候需要做软连接指向user中的bin和sbin
(二):典型应用程序的目录结构
普通可执行文件 | /usr/bin | 所有用户可执行 |
服务器程序,管理程序文件 | /usr/sbin | 只有管理员可执行 |
应用程序配置文件 | /etc | 通过rpm或yum安装的程序 |
日志文件 | /var/log | 系统日志 |
应用程序参考文档文件 | /usr/share/doc | 关于应用程序的参考文档 |
应用程序手册页文件 | /usr/share/man | 执行及配置文件的man手册页 |
(三):常见的软件包封装类型
RPM软件包 扩展名为".rpm"
DEB软件包 扩展名为".deb"
源代码软件包 一般为".tar.gz",".tar.bz2"等格式的压缩包包含程序的原始代码
绿色免安装的软件包 软件包的扩展名不一,以TarBall格式的居多,在压缩包内提供已编译好的执行程序文件,解开压缩包后的文件即可直接使用
详细:
1:rpm包是红帽公司自主研发的一款工具,实用性强,RPM包是预先在Linux上编译并打包好的文件,安装起来非常快捷,但也有缺点如安装的环境必须与编译时的环境一致或者相当;包与包之间存在相互依赖的情况。
2:DEB包:再Linux系统中类似于Windows中的软件包(exe),几乎不需要什么复杂的编译就可以通过鼠标点击安装使用。DEB包是将包的文件信息以及包的内容,经过gzip和tar打包而成。
3:源代码编译成二进制的可执行文件。如果你读得懂这些源代码,那么你就可以去修改这些源代码自定义功能,然后再去编译成你想要的。使用源码包的好处除了可以自定义修改源代码外还可以定制相关的功能,因为源码包在编译的时候是可以附加额外的选项的。
4:绿色免安装的软件包 :顾名思义自行理解比如Windows的截图软件
2:查看rpm包:
rpm2cpio tree-1.6.0-10.el7.x86_64.rpm |cpio -tv
(四).RPM包管理工具
1:Red-Hat Package Manager
由Red Hat公司提出,被众多Linux发行版所采用
建立统一的数据库文件
详细记录软件包安装,卸载等变化信息
自动分析软件包依赖关系
2.RPM软件包
软件素材参考:http://www.rpm.org
一般命名格式:bash-4.1.2-15.e16_4.x86_64.rpm
其中bash是软件名称,
4.1.2是版本号
15.e16_4是发布次数
x86_64是硬件平台
rpm是扩展名
软件包之间可能存在依赖关系,甚至循环依赖,即:A包依赖B包,B包依赖C包,C包依赖A包安装软件包时,会因为缺少依赖的包,而导致安装包失败
3:rpm包获取途径:
1:红帽官方
2:第三方组织
3:软件项目官方站点
4:自己制作
4:rpm命令格式
1:查询
选项 | 功能效果 |
---|---|
rpm -qa(all) | 显示当前系统中以 RPM 方式安装的所有软件列表 |
rpm -q 软件名 | 查询指定软件是否已安装 |
rpm -qi 软件名 | 查看指定软件包的名称、版本、许可协议、用途描述等详细信息 |
rpm -ql(list) 软件名 | 显示指定的软件包在当前系统中安装的所有目录、文件列表 |
rpm -qc (configfiles ) 软件名 | 列出已安装的指定软件的配置文件 |
rpm -qd(docfiles) 软件名 | 列出已安装的指定软件的软件包文档所在位置 |
rpm -qR (requires) 软件名 | 列出已安装的指定软件的依赖的软件包及文件 |
rpm -qf(file) 软件名 | 查看指定的文件或目录是由哪个软件包所安装的 |
rpm-qpd | 查询未安装指定软件包的文档位置 |
rpm -qpi | 查询未安装指定软件包的完整名称详细信息 |
rpm -qpl | 查询未安装指定软件包的文件列表 |
rpm -qpc | 查询未安装指定软件包的配置文件位置 |
5:挂载
1:mount 设备 加文件夹路径(已存在且是空的文件夹,原来的数据将被隐藏)
2:挂载规则
一个挂载点同一时间只能挂载一个设备
一个挂载点同一时间挂在了多个设备,只能看到最后一个挂在设备的数据,其他设备上的数据将被隐藏
一个设备可以同时挂载到多个挂载点
通常挂在带你一般是已存在的空目录
3:安装卸载升级软件包
1:格式
rpm [选项] rpm软件包
2:选项
选项 | 效果 |
---|---|
-i | 安装一个新的RPM软件包 |
-U | 升级某个软件包,若未安装过则进行安装 |
-F | 升级某个软件包,若未安装过则直接结束 |
-h | 在安装或升级过程中已#号显示读条 |
-v | 显示安装过程的详细信息 |
--force | 强制安装某个软件包 |
-e 软件名 | 卸载指定的软件 |
--nodeps | 在安装或升级、卸载一个软件包时,不检查与其他包的依赖关系 |
3:维护RPM数据库
1.重建RPM数据库
当RPM 数据库发生损坏,可通过 重建RPM 数据库 修复
rpm --rebuild 或者 rpm --initdb
2.导入验证公钥
在没有导入用于数字签名验证的公钥之前,安装光盘中的一部分RPM 包时会报错。需要向RPM数
据库中导入位于光盘根目录下的公钥文件。
三:源代码编译安装
1:程序包编译安装
源代码-->预处理-->编译-->汇编-->链接-->执行
多文件:文件中的代码之间,很可能存在跨文件依赖关系
虽然有很多开源软件将软件打成包,供人们使用,但并不是所有源代码都打成包,如果想使用开源软件,可能需要自已下载源码,进行编译安装。另外即使提供了包,但是生产中需要用于软件的某些特性,仍然需要自行编译安装。但是利用源代码编译安装是比较繁琐的,庆幸的是有相关的项目管理工具可以大大减少编译过程的复杂度
2:yum安装
yum是一个基于RPM包(是Red-Hat Package Manager红帽软件包管理器的缩写)构建的软件更新机制,能够自动解决软件包之间的依赖关系。解决了日常工作中的大量查找安装依赖包的时间
实例: