一、linux系统下的软件包可分为三种:
 1)源码(Source code)
 2)rpm(基于RPM--Redhat Package Manager,软件包管理器的rpm软件包,常用)
 3)dbkg(基于Debian的软件包管理器)
二、软件包的组成:
 二进制文件、配置文件、库文件、文档。
三、软件包的安装方式:
 3.1 手动编译安装源代码
 一般就是“三步走”完成源码的安装。
 1)./configure --分析安装平台环境
 在软件包解压完毕之后,我们进入源码目录,一般都会存在configure和README这么两个文件,README详细的介绍了这个软件所能完成的功能、授权许可、安装需求、安装注意事项、安装方式等等,所以在安装软件前,一定要事先阅读这个README文件,确保安装的正确性。configure文件一般是个可执行文件,可以在当前目录下直接输入 “./configure”进行软件安装的环境测试.源码安装都需要GCC或者CC编译器.最后测试成功会生成makefile文件,为下一步使用make编译做准备。
 2)make --编译安装软件
 make工具最主要的功能就是通过makefile文件来实现的,makefile文件是按照某种语法来进行编写的,文件中定义了各个源文件之间的依赖关系,并说明了如何编译源文件并生成可执行文件,它通过描述各个源程序之间的关系让make工具自动完成编译工作。
 3)make install --安装软件
注:软件安装完成后,可能需要导出软件的库文件,改变环境变量,导入man文件路径,以及头文件。
1、软件库文件导出方法:
a.在/etc/ld.so.conf.d/新建一个以.conf结尾的文件,并将此程序的库文件路径添加至此文件中
如/usr/local/apache/lib
b.执行ldconfig,让系统重新装载库文件;
#ldconfig -v
2、可执行程序路径的导出方法:
#export PATH=$PATH:/usr/local/apache/bin
也可以写入配置文件:
 写入/etc/profile:--对所有用户生效
 写入~/.bash_profile--仅对当前用户生效
3、man文件路径导出方法
编辑/etc/man.config文件,新增加如下一行;
 例如:MANPATH /usr/local/apache/man 
4、头文件导出方法
 创建链接(例如:ln -sv /usr/local/apache/lnclude /usr/include/apache)
 3.2 RPM包方式安装
 RPM包管理类似于windows下的“添加/删除程序”但是功能却比“添加/删除程序”强大很多。在Linux的系统安装光盘中,有很多以“.rpm” 结尾的软件包,这些包文件就是我们所说的RPM文件。每个RPM文件中包含了已经编译好的二进制可执行文件,其实就是将软件源码文件进行编译安装,然后进行封装,就成了RPM文件,类似与windows安装包中的“.exe”文件。
   RPM包管理方式的优点是:安装简单方便,因为软件已经编译完成打包完毕,安装只是个验证环境和解压的过程。此外通过RPM方式安装的软件,RPM工具都会记录软件的安装信息,这样方便了软件日后的查询,升级和卸载。
 RPM工具的使用分为安装、查询、验证、更新、删除等操作。
 安装:
  rpm -i /pathrpm_package
  rpm -ivh --nodeps --force
  v;显示安装信息;
  h:以#显示安装进度(一个#:2%的进度)
  --nodeps 忽略依赖关系
  --force 强制安装
 卸载:
  rpm -e NAME --nodeps
 升级:
  rpm -Uvh /pathrpm_package
  rpm -Fvh /pathrpm_package
   -Uvh 老版本的安装了的就升级安装,没安装就直接安装新版本
   -Fvh 老版本必须的安装
   --force 强行升级
 查询:
  rpm -q NAME--查询软件包的版本信息
  rpm -qa --查询当前系统上安装的软件包 支持文件名通配
  rpm -qi name --查询软件包的描述信息
  rpm -ql name --查询软件包安装后都生成了那些文件
  rpm -qc name --查询软件的配置文件所存放的位置
  rpm -qd name --查询软件文档所存放的位置
  rpm -q --scripts name --查看软件包安装时执行的脚本
  rpm -qf filename|path --查询那个文件是由那个软件包安装生成的
  rpm -q --changelog name --查看每一次的制作都改进了那些内容
  rpm -qpi name --查看未安装软件包的描述信息
   -p --查看未安装软件包的信息
 校验:
  rpm -V
  属性:
  S:文件大小改变
  M:权限,文件类型改变
  5:MD5校验值改变
  D:设备的主/次号不匹配
  L:路径发生改变
  U:属主发生改变
  G:属组发生改变
  T:最近一次的修改时间发生了变化 
 
 rpm重建数据库;
  #rpm --initdb  --重新初始化数据库,如存在则不覆盖
  #rpm --rebuilddb  --如果存在则覆盖之
  /var/lib/rpm--rpm数据库
 rpm对软件包的验证:
导入公钥:
 rpm --import PATH
例如:rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release--导入redhat的公钥。
验证:
rpm -k[ --nodigest(不验证md5) --nosignature(不验证签名)]NAME.rpm
另外,基于RPM安装rpm包还可以利用yum。
YUM --Yellow dog Updater, Modified
 主要功能是更方便的添加/删除/更新RPM包。它能自动解决包的倚赖性问题,它能便于管理大量系统的更新问题 。
yum特点
 可以同时配置多个资源库(Repository)
 简洁的配置文件(/etc/yum.conf)
 自动解决增加或删除rpm包时遇到的倚赖性问题
 使用方便
 保持与RPM数据库的一致性
yum客户端的配置文件:
 1、/etc/yum.conf
 2、/etc/yum.repos.d/*.repo
.repo文件便是定义yum源的文件。
定义yum源的格式
 [id]
 name=yum源的完整名称;
 baseurl=yum源的地址(eg:ftp://172.16.0.1/pub/Server
 gpgcheck=0|1(验证签名)
 enabled=0|1(是否生效)
yum的使用方法
yum
 list {all|installed|avaliable|updates} --显示所有已安装过的软件的信息和所有可用软件的信息。
 install package_name package_name2 ...--安装软件
  -y --不用再确认;
 remove|erase package_name1 package_name2 ...--卸载软件
 update package_name1   --软件升级
 check-update   --检查更新
 info --显示软件包的摘要信息
 provides|whatprovides  file|path --显示文件是哪个软件包安装生成的
 downgrade pacage_name1...  --降级
 reinstall package_name1 ... --重装软件包
 repolist [all|enabled|disabled]  --显示yum源
 clean {all}--清空yum缓存
 grouplist --显示软件包组
 groupinstall "groupname" --安装一组软件(!!组名中间有空格必须用引号引起来)
 groupremove "groupname"  --卸载一组软件
 groupinfo "groupname" --查看有关组的信息
 localinstall /path-rpm_file  --本地安装软件
  --nogpgcheck (不检测签名)
 localupdate --本地升级软件
 search keyword --根据关键字搜索软件
创建yum源
yum源的元数据文件目录:
 primary.xml.gz --每一个rpm包的文件名,及软件包之间的依赖关系
 filelists.xml.gz 此yum源中每一个rpm包中文件的文件相关信息
 other.xml.gz  额外信息,比如changelog等
 repomd.xml:定义了以上三个文件的校验码和时间戳
 comps-*.xml(comps-rhel5-server-core.xml):定义了软件包的分组信息
#createrepo PATH
 -g 创建关于软件包的分组信息
 -q 工作于静默模式下
 -v 显示详细信息
总结:源码安装,可以根据需求自定义安装软件,缺点是安装的软件难于维护,卸载,升级。利用RPM,yum安装软件,安装简单,便于维护。缺点是软件的编译不是根据本机的硬件所编译的,所以不会很好的发挥机器本身的性能。