开发,送测、安装文件多,在开发的流程中管理起来比较麻烦,因此考虑采用包的形式实现整体送测、上线。
经过对linux下包的管理的调研,总结如下几点:
1. 包需要支持的功能:
支持自动检查版本依赖
支持升级安装
支持多版本安装
支持在debian、redhat等linux环境通用安装
2. perl、php这类脚本程序没有编译过程,只需通过shell script实现制作安装包。
3. 对于c、c++程序,根据GNU编码规范,Makefile文件中含有下列目标:
:all 编译整个程序。它应该是缺省目标。
:clean 从当前目录中删除所有在创建程序过程中创建的文件。
:distclean 从当前目录中删除所有在程序的配置和创建过程中创建的文件。
:install 编译程序并且把可执行文件、库文件等文件复制到它们在实际应用中应该存在的位置。
:dist 为本程序创建一个发布版本tar文件。
:uninstall 删除所有由'install'目标创建的所有安装的文件。
4. 包管理工具有:apt
基于RPM软件包的系统可以利用apt自动解决软件之间的依赖关系,升级管理软件包。
5. 包的典型命名格式为:软件名-版本号-释出号.体系号.格式
体系号可以是如下类型:
i386 几乎用于所有的x86平台,不论是旧的pentum或者是新的pentum-IV与K7系列的CPU等等,都可以正常的工作,i指的是Intel 相容的CPU的意思,至于386不用說,就是CPU的等级啦
i586 就是586等级的电脑,包括pentum第一代MMX CPU,AMD的K5、K6系列CPU(socket 7插脚)等等的CPU都算是这个等级
i686 在pentun II以后的Intel系列CPU,及K7以后等级的CPU都属于这个686等级
noarch 就是沒有任何硬件等级上的限制
包的格式有如下类型:
tar 使用unix系统打包工具tar打包的格式,源代码包一般采用此格式,不支持自动卸载和包管理功能
rpm redhat提供的包格式,二进制包一般采用此格式
deb Debian提供的包格式,二进制包一般采用此格式
bin 商业软件一般采用此格式
本着循序渐进的原则,初期采用的形式:
1. 采用tar包。
Tar是linux平台上的通过打包方式,简单、易用。
2. Makefile文件中提供“:dist”和“:distclean”目标。
对于make编译的项目,参考GNU编码规范,通过makefile来实现生成tar包。
3. 对于php等非编译项目,采用shell script制作tar包。
4. 全局打包,按需使用。
送测、上线提供的是模块的完整tar包,便于scm进行产品管理,避免遗漏,减少沟通环节。
scm送测后,test或op自己解tar包,根据rd的说明选择所需的测试、上线文件进行后续工作。
5. 自动编译接口使用build.sh。
采用build.sh文件作为项目和scm编译审计程序的接口,通过build.sh提供对c、perl等不同编译方式的灵活支持,解决现有只支持make的单一形式。
6. 便于向rpm过渡。
实现此方案后,实现了整体送测、发布,满足今后过渡到采用rpm等包管理形式的基本条件。