一.概述
1.接口种类:
1.API:Application Program Interface (应用编程接口)
2.ABI:Application Binary Interface(应用二进制接口)
2.程序包格式
1.windows使用的程序包格式:exe,msi
2.unix-like:ELF
3.使用库级别的虚拟化,可以实现在不同操作系统上使用不同的二进制程序
1.Linux:WinE工具实现
2.Windows:Cywin工具实现
4.系统级和应用级开发:
1.系统级开发:
(1)C/C++语言:httpd,vsftpd,nginx
(2)go语言
2.应用级开发(需要透过中间层实现):
(1)java/Python/perl/ruby/php
(2)java: hadoop, hbase, (需要安装jvm虚拟机实现)
(3)Python:openstack, (需要安装pvm虚拟机实现)
(4)perl: (使用perl解释器)
(5)ruby: (使用ruby解释器)
(6)php: (使用php解释器)
5.程序格式
1.C/C++程序格式:
1)源代码:文本格式的程序代码(需要通过编译为二进制格式后使用)。
ps:其编译开发环境:编译器、头文件、开发库
2)二进制格式:文本格式的程序代码 --> 编译器 --> 二进制格式
ps:二进制文件格式需要包含四部分:二进制程序、库文件、配置文件、帮助文件
2.java/python程序格式:
1)源代码:编译成能够在其虚拟机(jvm/pvm)运行的格式
ps:开发环境:编译器、开发库
2)二进制格式
3.项目构建工具
1)c/c++: make
2)java: maven
二.程序包管理器概述
1.概念
1.源代码 --> 目标二进制格式 --> 组织成为一个或有限几个“包”文件;
1)功能安装、升级、卸载、查询、校验
2.各发行版程序包管理器
1.debian:dpt包管理器, 使用dpkg命令;程序包后缀名:".deb"
2.redhat:rpm包管理器;使用rpm命令,程序包后缀名:".rpm"
ps:即为redhat package manager或 rpm is package manager
3.S.u.S.E:rpm包管理器;程序包后缀名:".rpm"
4.Gentoo:ports包管理器
5.ArchLinux
3.命名格式
1.源代码命名格式:name-version-release.tar.gz
- name:软件名称
2)version:major(主版本号).minor(次版本号)
3)release(源代码编译次数)
2.rpm包命名格式:name-version-release.arch.rpm
1)name:软件名称
2)version:major(主版本号).minor(次版本号).release源代码编译次数)
3)release.arch:rpm包的发行号
ps:例:redis-3.0.2.targz --> redis-3.0.2-1.centos7.x64.rpm
3.拆包和子包
1)主包:name-version-release.arch.rpm
2)子包:name-function-version-release.arch.rpm
ps:function:devel, utils, libs, …为了实现将个功能拆分使用
4.依赖关系:rpm包安装会有依赖关系,导致安装出错,可使用前端工具自动解决依赖关系。
1)yum:rhel系列系统上rpm包管理器的前端工具;
2)apt-get (apt-cache):deb包管理器的前端工具;
3)zypper:suse的rpm管理器前端工具;
4)dnf:Fedora 22+系统上rpm包管理器的前端工具
4.程序包管理器功能
1.将编译好的应用程序的各组成文件打包成一个或几个程序包文件,从而更方便地实现程序包的安装、升级、卸载和查询等管理操作。
2.程序包的组成清单(每个程序包都单独实现)
1)文件清单
2) 安装或卸载时运行的脚本
3.数据库(公共)
- 程序包的名称和版本
- 依赖关系
- 功能说明
- 安装生成的各文件的文件路径及校验码信息
5.程序包获取途径
1.系统发行版的光盘或官方的文件服务器(或镜像站点)
1)http://mirrors.aliyun.com
2)http://mirrors.sohu.com
3)http://mirrors.163.com
- 需求项目的官方站点
3.第三方组织
1)EPEL
2)rpm包专用搜索引擎
(1)http://pkgs.org
(2)http://rpmfind.net
(3)http://rpm.pbone.net
4.自己根据要求,编译代码
ps:1.需要检查其合法性,2.来源合法性,3.程序包的完整性