|
30、程序包管理之一-程序及库简介
2021年09月17日 |
|
30.1 程序及库简介 30.1.1 POSIX API:Application Program Interface POSIX:Portable OS,定义了不同系统如何提供统一的API 30.1.2 程序运行流程 程序源代码à预处理à编译à汇编à链接 静态编译 共享编译:.so 30.1.3 Windows和Linux程序兼容方式 ABI:Application Binary Interface Windows与Linux的ABI不兼容 库级别的虚拟化 WINE:Windows库的虚拟化,让Windows程序可在Linux上运行 cywin:Linux库的虚拟化,让Linux程序可在Windows上运行 30.1.4 应用程序开发 系统级开发(面向底层进行开发) C,C++ 应用级开发(面向系统和库进行开发) java,python,phpdeb,perl,ruby 二进制应用程序的组成部分: 二进制文件,库文件,配置文件,帮助文件 30.2程序包管理 30.2.1 程序包管理器: debian:包名deb,包管理器dpt redhat:包名rpm,包管理器rpm(Redhat Package Manager) RPM is Package Manager(C语言研发) Gentoo Archlinux 30.2.2 程序源代码及rpm包 1、程序源代码:name-VERSION.tar.gz VERSION:major.monor.release 2、rpm包 命名方式 name-VERSION-ARCH.rpm VERSION:major.monor.release ARCH:release(rpm包的release).os(支持的linux型号).arch(支持的cpu型号) 常见的arch: x86:i386,i486,i586,i686 x86_64:x64,x86_64,amd64 powerpc:ppc 跟平台无关:noarch 例:zlib-1.2.7-17.el7.x86_64.rpm 程序包拆包 testapp: testapp-VERSION-ARCH.rpm:主包 testapp-devel-VERSION-RACH.rpm:支包 testapp-testing-VERSION-RACH.rpm 依赖关系 X依赖Y,Y依赖Z ldd + 程序:查看二进制程序的依赖关系 [root@localhost ~]# ldd /bin/ls linux-vdso.so.1 => (0x00007fffb09b7000) libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f69482d3000) libcap.so.2 => /lib64/libcap.so.2 (0x00007f69480ce000) libacl.so.1 => /lib64/libacl.so.1 (0x00007f6947ec4000) libc.so.6 => /lib64/libc.so.6 (0x00007f6947af6000) libpcre.so.1 => /lib64/libpcre.so.1 (0x00007f6947894000) libdl.so.2 => /lib64/libdl.so.2 (0x00007f694768f000) /lib64/ld-linux-x86-64.so.2 (0x000055807796f000) libattr.so.1 => /lib64/libattr.so.1 (0x00007f694748a000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f694726e000) [root@localhost ~]# 管理及查看本机装载的库文件: ldconfig /sbin/ldconfig -p:显示本机已经缓存的所有可用库文件及文件路径映射 配置文件为:/etc/ld.so.conf,/etc/ld.so.conf.d/*.conf 缓存文件:/etc/ld.so.cache [root@localhost ~]# ldconfig -p | head -10 1095 libs found in cache /etc/ld.so.cache p11-kit-trust.so (libc6,x86-64) => /lib64/p11-kit-trust.so libz.so.1 (libc6,x86-64) => /lib64/libz.so.1 libyelp.so.0 (libc6,x86-64) => /lib64/libyelp.so.0 libyajl.so.2 (libc6,x86-64) => /lib64/libyajl.so.2 libxtables.so.10 (libc6,x86-64) => /lib64/libxtables.so.10 libxslt.so.1 (libc6,x86-64) => /lib64/libxslt.so.1 libxshmfence.so.1 (libc6,x86-64) => /lib64/libxshmfence.so.1 libxml2.so.2 (libc6,x86-64) => /lib64/libxml2.so.2 libxmlsec1.so.1 (libc6,x86-64) => /lib64/libxmlsec1.so.1 [root@localhost ~]# 30.2.3 包管理器的前端工具 yum:rpm包管理器的前端工具,用于解决依赖关系,自动下载所需要的程序及其依赖包 apt-get:deb包管理器前端工具 zypper:suse上的rpm前端管理工具 dnf:Fedora 22+ rpm包管理器的前端管理工具 30.2.4 程序包管理 程序包管理: 功能:将编译好的应用程序的各组成文件打包成一个或几个程序文件,从而方便快捷的实现程序的安装,卸载,查询,升级,校验等管理操作 1、程序的组成清单(每个包独有) 文件清单 安装或卸载时运行的脚本 2、数据库(公共) 程序包名称及版本 依赖关系; 功能说明; 安装生成的各文件的文件路径及校验码信息 管理程序包的方式: 使用包管理器:rpm 使用前端工具:yum,dnf 获取程序包的路径: 1、系统发行版的光盘或者是官方的服务器 CentOS镜像: 2、项目官方站点 3、第三方组织: Fedora-EPEL 搜索引擎: 4、自己制作 建议:检查其合法性 来源合法性;程序包的完整性; |