30、程序包管理之一-程序及库简介

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镜像:

                        http://mirrors.aliyun.com

                        http://mirrors.sohu.com

                        http://mirrors.163.com

                2、项目官方站点

                3、第三方组织:

                        Fedora-EPEL

                        搜索引擎:

                                http://pkgs.org

                                http://rpmfind.net

                                http://rpm.pgone.net

                4、自己制作

        建议:检查其合法性

                来源合法性;程序包的完整性;

评论关闭。