在没有软件包管理器前,用户都是通过源代码的方式来安装软件。但是我们很容易发现,在每次安装软件时都必须对操作系统的境、编译的参数进行对应的编译,并且操作过程很是复杂,这对于不熟悉操作系统的朋友来说真心困难,那么有没有一款软件能让用户能很简单的安装所需的软件呢?
随着自由软件蓬勃发展,Linux系统的飞快发展,很多软件开发者、企业和社区将这些软件开始通过收集、整理、编译制作成distributions发布到常用的Linux操作系统上,但是后来发现,这样做在日后软件更新、系统更新上面都需要做很多操作。为了解决这个问题,一些社区和企业开始思考关于Linux的软件管理方式。
通过社区与企业的共同努力,Linux开发商将固定的硬件平台和操作系统需要安装或升级的软件编译好,并且将这些软件通过特定的打包方式将软件打包成一个特殊格式的文件,这些软件的文件含有能检测操作系统环境和软件依赖性的脚本,并提供记载该软件提供的所有文件信息等,最后将这个软件发布出去供用户使用。那么用户得到这个软件包,通过特定的命令,就能执行检测系统环境,根据环境所需的要求,对软件进行安装。这就是软件管理器的诞生。
二、目前常见Linux软件安装方式有2种2.1、dpkg
这个软件安装方法是通过Debian Linux社区开发出来的,通过dpkg机制,Debian所提供的软件就能通过很简单的方法安装软件,并且能记录安装后的软件信息。只有是Debian的Linux distributions大多数都是使用这个方法管理软件。例如B2D、Ubuntu
2.2、RPM
这个软件安装方法是由Red Hat公司开发出来的,由于非常的简单实用,很多的distributions都使用这个机制来安装和管理软件。例如:CentOS、SUSE等
三、程序包管理器功能:将编译好的程序打包成一个文件或有限的几个文件,可以用于实现安装、卸载、升级、查询等功能
包含:
1、数据库
程序名及版本
依赖关系: X –> Y,Z
功能性说明(rpm -qi bash)
安装生成的各文件路径及校验码
2、程序的组成清单
文件清单
安装卸载时运行的脚本
四、RPM介绍RPM(RedHat Package Manager),RPM通过以一个数据库记录的方式来将你所需的软件安装到你的Linux系统上的。在你所安装的软件前先通过编译完成,打包成RPM格式的文件,数据库记录的方式搜索对应需要具备的依赖关系的软件,那么当你在安装该软件的时候,RPM会查看你系统环境和依赖性关系来判定你是否能安装此软件。若能满足,则允许安装。否则将不给予安装。并且在安装的时候将该软件的信息写入RPM的数据库中,以便日后查询、检验和升级。
五、RPM包的命名格式格式:
name–version–release.arch.rpm例如:
bash-4.2.3-3.centos5.x86_64.rpm #表示bash-4.2.3,第三次发行,支持CentOS5系统,支持硬件平台x86_64位系统获取rpm包的途径:
1、发行的光盘或站点服务器
镜像:
2、项目的官网
源代码
rpm包
3、很多第三方机构或个人制作并公开发布许多的rpm包
六、打包工具的分包机制
假设一个程序有20个功能:常用功能有8个,特殊功能A:3个,特殊功能B:6个,二次开发相关功能:3个。那如果用户只需要常用功能,可是必须要全部安装,那么就会很占用空间,而且其他功能根本不会使用,这时就会分包机制了。
分包机制:
核心包(主包) + 子包(分包)组成
核心包:命令与源程序一致
例如:bash-4.2.3-3.centos7.x86_64.rpm
子包:(安装子包前必须安装核心包)
例如: bash-a-4.2.3-3.centos7.x86_64.rpm
bash-devel-4.2.3-3.centos7.x86_64.rpm #devel就表示开发功能 七、RPM包的使用