1.概述
API:Application Program Interface ABI:Application Binary Interface Unix-like ElF windows exe,msi 库级别的虚拟化 winE(linux上运行模拟windows) cywin(windows上运行模拟linux) 系统级开发: C/C++:httpd,vsftpd,nginx go 应用级开发: java/Python/perl/ruby/php: java:hadoop,hbase(jvm) Python:openstack(pvm)C/C++程序格式: 源代码:文本格式的程序代码 编译开发环境:编译器,头文件,开发库 二进制格式:文本格式的程序代码-->编译器-->二进制格式(二进制程序,库文件,配置文件,帮助文件) Java/Python程序格式: 源代码:编译成能够在其虚拟机上(jvm/pvm)运行的格式; 开发环境:编译器、开发库 二进制: 项目构建工具: c/c++:make java:maven 编译顺序由项目构建工具自行决定(开发者已设置好编译顺序)
2.程序包管理器
源代码-->目标二进制格式-->组织称为一个或有限几个“包”文件; 安装、升级、卸载、查询、校验
程序包管理器:
debian(Ubuntu):dpt,工具:dpkg,程序包以“.deb”结尾redhat:redhat package manager ,rpm,".rpm";rpm is package manager; S.u.S.E:rpm ,‘.rpm‘Gentoo:portsArchLinux:
3.程序包的组成格式
源代码:name-VERSION.tar.gz VERSION:major.minor.releaserpm包命名格式: name-VERSION-release.arch.rpm VERSION:major.minor.release release.arch:rpm包的发行号 release.os:2.el7.i386.rpm archetecture(架构):i386,x64(amd64),ppc,noarch(没平台要求,可以使用在任意平台架构上)rpm拆包:主包和支包 主包:name-VERSION-release.arc.rpm 支包:name-function-VERSION-release.arc.rpm function:devel(开发包),utils(工具程序),libs(库文件)依赖关系 X,Y,Z X-->Y,Z Y-->A,B,C C-->Y 前端工具:自动解决依赖关系; yum :rhel系列系统上rpm包管理器的前端工具; apt-get(apt-cache):deb包管理器的前端工具 zypper:suse的rpm管理器前端工具 dnf:Fedora 22+系统上rpm包管理器的前端工具
4.程序包管理器功能和组成部分
功能:将编译好的应用程序的各组成文件打包成一个或几个程序包文件,从而更方便地实现程序包的安装、升级、卸载和查看1.程序包的组成清单(每个程序包都单独实现); 文件清单 安装和卸载时运行的脚本2.数据库(公共) 程序包的名称和版本 依赖关系 功能说明 安装生成的各文件路径及校验码信息; 等等等 CentOS上的程序包数据库位置/var/lib/rpm/
5.获取程序包的途径
(1)系统发行版的光盘或官方的文件服务器(或镜像站点); http://mirrors.aliyun.com http://mirrors.sohu.com, http://mirrors.163.com(2)项目的官方站点 (3)第三方组织制作的rpm包: (a)EPEL: (b)搜索引擎查找 http://pkgs.org http://rpm.pvone.net http://rpmfind.netstat(4)自己动手,丰衣足食 建议:检查其合法性(完整性) 来源合法性: 程序包的完整性;
6.CentOS系统上rpm命令管理程序包
命令介绍
安装、升级、卸载、查询和校验、数据库维护rpm命令:rpm [OPTION] [PACKAGE_FILE] 安装:-i,--install 升级:-U,--update,-F,-freshen 卸载:-e,--erase 查询: -q,--query 校验:-V ,--verify 数据库维护:--builddb,--initdb
rpm包安装
rpm {-i|--install} [install-options] PACKAGE_FILE ... rpm -ivh PACKAGE_FILE... GENERAL OPTIONS: -v:verbose,详细信息 -vv:更详细的输出 [install-options] -h:hash marks输出进度条;每个#表示2%的进度 --test:测试安装,检查并报告依赖关系及冲突消息等; --nodeps:忽略依赖关系,不建议使用,安装后会不能使用; --replacepkgs:重新安装:rpm -ivh --replacepkgs zsh-5.0.2-7.el7.x86_64.rpm --nodigest:不检查包的完整性信息 --nosignature:不检查包的来源信息及包的完整性注意:rpm可以自带脚本; 四类: --noscripts preinstall:安装过程开始之前运行的脚本,%pre: --nopre postinstall:安装过程完成以后运行的脚本:%post --nopost preuninstall:卸载过程真正开始执行之前运行的脚本,%preun --nopreun postuninstall卸载过程完成以后运行的脚本,%postun --nopostun
时间: 2024-10-14 09:48:20