导言:
PART 1:
———
API: Application Program Interface , 应用程序接口;
ABI: Application Binary Interface , 应用程序二进制接口;
Unix-like类系统的ABI是ELF格式;
Windows系统的ABI是exe或者msi格式;
库级别的虚拟化可以抹平上面2个不同二进制格式的ABI接口:
Linux系统采用WinE程序,可兼容Windows的程序;
Windows系统采用Cywin程序,可兼容Linux的程序;
系统级开发语言:C/C++; 例如, httpd,vsftpd , nginx etc.
应用级开发语言:java/python/perl/ruby/php;
PART 2:
————-
C/C++程序格式:
1> 源代码格式:
源代码是文本格式的程序代码;
需要有编译开发环境,编译开发环境包括:编译器、头文件、开发库;
编译源代码过程中需要解决错综复杂的依赖关系,可用项目构建工具来解决编译顺序,C/C++的项目构建工具是’make’;
2> 二进制格式:
文本格式的程序代码由编译器编译完成后,形成二进制的可执行文件格式,二进制文件包括:二进制程序、库文件、配置文件、帮助文件等;
java/python程序格式:
1> 源代码格式:
编译源代码,编译成能够在其虚拟机上运行的文件格式;Java的虚拟机叫jvm,python的虚拟机叫pvm;
需要由编译开发环境,开发环境指对应应用程序的虚拟机以及虚拟机上提供的编译器,编译开发环境包括:编译器、开发库;
编译源代码过程中需要解决错综复杂的依赖关系,可用项目构建工具来解决编译顺序,java的项目构建工具是’maven’;
2> 二进制格式:
文本格式的程序代码由编译器编译完成后,形成二进制的可执行文件格式,二进制文件包括:二进制程序、库文件、配置文件、帮助文件等;
程序包管理器
源代码借助编译环境编译成可在目标系统上运行的二进制格式(目标二进制格式),制作好后,把二进制格式文件的4个或以上的文件组织成一个或有限几个”包”文件;
经过上面步骤后,能够为用户提供简便操作:安装、升级、卸载、查询、校验等;
1.1 程序包管理器类别
debian : dpt包管理器,程序包管理命令为dpkg,文件格式为’.deb’;
redhat : rpm管理器(redhat package manager),程序包管理命令为rpm,文件格式为’.rpm’;[rpm is package manager !!!]
S.U.S.E: 也采用redhat的rpm包管理器,但跟Redhat的管理不兼容,主要是文件路径不相同;管理命令为rpm,文件格式为’.rpm’;
Gentoo : 采用FreeBSD的包管理机制,ports机制;
Archlinux : 包管理器pacman,管理命令为pacman;
1.2 程序包命名格式
源代码程序包:name-VERSION-tar.{gz,bz2,xz}
VERSION: major.minor.release
rpm程序包:name-VERSION-release.arch.rpm
VERSION: major.minor.release
rpm包程序有些是分主程序包、其他功能的子程序包:
主程序包:name-VERSION-release.arch.rpm
子程序包:name-function-name-VERSION-release.arch.rpm
1.3 自动解决软件包依赖关系的前端工具
yum : rhel系列系统上rpm包管理器的前端工具;
apt-get(apt-cache): deb包管理器的前端工具;
zypper: suse的rpm前端管理工具;
dnf: Fedora 22+版本系统上rpm包管理器的前端工具;
1.4 程序包管理器功能
将编译好的应用程序的各组成文件打包成一个或几个程序包文件,从而方便地实现程序包的安装、升级、卸载和查询等管理操作;
程序包管理器的组织格式:
1> 程序包的组成清单(每个程序包都单独实现):文件清单、安装或卸载时需运行的脚本;
2> 数据库(公共):程序包的名称和版本,程序包的依赖关系,每个程序包的功能说明,安装生成的各文件路径及校验码信息等;
centos系统上rpm的数据库路径:/var/lib/rpm;
[root@kouyuushinn ~]# ll /var/lib/rpm total 74556 -rw-r--r--. 1 root root 2293760 May 9 07:08 Basenames -rw-r--r--. 1 root root 8192 May 9 06:42 Conflictname -rw-r--r--. 1 root root 643072 May 9 07:08 Dirnames -rw-r--r--. 1 root root 20480 May 9 07:08 Group -rw-r--r--. 1 root root 12288 May 9 07:08 Installtid -rw-r--r--. 1 root root 36864 May 9 07:08 Name -rw-r--r--. 1 root root 16384 May 9 05:16 Obsoletename -rw-r--r--. 1 root root 71254016 May 9 07:08 Packages -rw-r--r--. 1 root root 1773568 May 9 07:08 Providename -rw-r--r--. 1 root root 167936 May 9 07:08 Requirename -rw-r--r--. 1 root root 57344 May 9 07:08 Sha1header -rw-r--r--. 1 root root 40960 May 9 07:08 Sigmd5 -rw-r--r--. 1 root root 8192 May 9 06:42 Triggername [root@kouyuushinn ~]#
1.5 获取程序包的途径(rpm)
下载的程序包需要检查其合法性:来源合法性;程序包的完整性;
1> 系统发行版的光盘
2> 项目的官方站点
3> 国内镜像站点:
http://mirrors.aliyun.com
http://mirrors.sohu.com
http://mirrors.16..com
4> 第三方组织:
EPEL
5> 搜索引擎
https://pkgs.org/
http://rpmfind.net/
http://rpm.pbone.net/