Linux     

1.APIApplication Progarmming Interface

POSIX  :Portable  OS

2.程序源代码--à预处理--à编译----à汇编----à链接

静态编译:

共享编译: .so

3.ABI: Application Binary Interface

     WindowsLinux不兼容

     库级别虚拟化:

Linux WINE 

        Windows Cywin

41系统开发

       C

       C++

42应用开发

   Java

   Python

   php  

   pel

   ruby 

43二进制应用程序的组成部分

        二进制文件、库文件配置文件、帮助文件 

        程序包管理器:

           Debian :dep, dpt

           Redhat: rpm rpmRedhat Package Manager

                           PRM: RPM is Package Manager

           Archlinux :

           Gentoo: 

5.代码: name-VERSION.tar.gz

          VERSION: major.minor.release

6.rpm方式:

      1>.name-VERSION-release.arch.rpm

          VERSIONmajor.Minor.release

          release.arch:

             release:release.OS

          常见arch

             X86: i386,i486,i586,i686

             X86_64: x64,x86_64,amd64

             Powerpc:ppc(硬件平台)

             平台无关: noarch (例如包含java程序包等)   

 

      2>.testapp: 拆包

          testapp-VERSION-ARCH.rpm:主包

          testapp-devel-VERSION-ARCH.rpm: 

          testapp-testing-VERSION-ARCH.rpm

       

3>.:存在依赖关系

     yum:rpm管理器的前端工具

     apt-get :dep管理前端工具

     zipper : suse rpm前端管理工具

     dnf Fedora 22+ rpm包管理前端管理工具

71查看二进制程序所依赖的文件

       ldd  /PATH/TO/BINARY_FILE

7.2管理及查看本机装载库文件

       ldconfig 

          /sbin/ldconfig  -p : 显示本机已经缓存的所有可用库文件名及文件路径映射关系

 

       配置文件为: /etc/ld.so.conf,  /etc/ld.so.conf.d/*.conf

       缓存文件: /etc/ld.so.cache

8.程序包管理:

   1>.功能 将编译好的应用程序的组成文件打包一个或几个程序包文件,从而方便快捷的实现程序包的安装卸载、查询、升级和校验管理操作

     2>.程序组成组成清单(每个包独有)

         文件清单

         安装或卸载时运行的脚

     3>.数据库(公共

          程序包名称及版本

          依赖关系

          功能说明

          安装生成的个文件的文件路径及校验码信息;

91管理程序包的方式:

       使用包管理器: rpm

       使用前端工具: yum dnf

92获取程序包的途径:

       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.pbone.net

       4>.自己制作

        5>>建议检查合法性

            来源合法性

            程序包的完整性

10.Centos系统rpm命令管理程序包

       安装、卸载、升级、查询、校验数据库维护

1>.安装

      rpm    {-i|--install}    [install-options] PACKAGE_FILE ... 

            -v : verbose

            -vv

            -h 以#显示程序包管理执行进度,每个#表示2%进度

          rpm –ivh  PACKAGE_FILE …

             [install-options]

                --test: 测试安装,但不真正执行安装过程;dry run模式;

                --nodeps:忽略依赖关系;

                --replacepkge 重新安装;

 

                --nosignature: 不检查来源合法性

                --nodigest: 检查包完整性

                   

                 --noscripts : 执行程序包脚本片

                     %pre :安装前脚本:   --nopre

                     %post 安装后脚本: --nopost

                     %preun 卸载后脚本: --nopreun

                     %postun 卸载后脚本:  --nopostun

   2>.升级

           rpm    {-U|--upgrade}    [install-options] PACKAGE_FILE ...

 

           rpm    {-F|--freshen}    [install-options] PACKAGE_FILE ...

              

               upgrage 安装有旧版本程序包,则升级如果不存在旧版本程序包,则安装

                freshen:安装有旧版本程序包,则升级如果不存在就版本程序包,则不执行升级操作

            

            rpm –Uvh PACKAGE_FILE …

            rpm Fvh PACKAGE_FILE …

 

            --oldpackage :降级

            --force 强行升级;

**.(1) 不要对内核做升级操作; linux支持多内核版本并存,因此,直接安装新版本内核

 2如果原程序包的配置文件安装后曾被修改,升级时,新版本的提供同一配置文件并不直接覆盖版本的配置文件,新版本的文件重命名FILENAME.pmnew)后保留;

   3>.查询

rpm  {-q|--query} [select-options] [query-options]

 

[select-options]

-a:所有

-f查看指定的文件由哪个程序包安装生成

 

-p /PATHTO/PACKAGE_FILE:针对尚未安装的程序包文件查询操作;

 

--whatprovides CAPABILITY :查询指定的APABILITY哪个包所提供;

--whereprovides CPABILITY查询指定的APABILITY哪个包所依赖;

 

[query-options]

--changelog :查询rpm包的配置文件;

-c 查询程序的配置文件;

-d 查询程序的文档;

-i: information

          -l:  查看指定的程序包安装后生成的文件

          --script 程序包自导的脚本片断;

          -R 查询指定的程序包依赖的CPABILITY

          --provides 列出指定程序包所提供的CPABILITY

 

          用法

           -qi PACKAGE, -qf FILE , -qc PACKAGE, -ql  PACKAGE , -qd PACKAGE

           -qpi PACKAGE_FILE ,-qpl PACKAGE_FILE

           -qa

  4>.卸载:

        rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts]

           [--notriggers] [--test] PACKAGE_NAME ...

  5>.校验:

        rpm {-V|--verify} [select-options] [verify-options]

 

          S fiel Size differs

          M Mode differs (inculdes permissions and file type )

          5 diget (formerly MD5 sum) differs

          D Device major/minor number mismatch

          L readLink(2) path mismatch

          U User ownership differs

          G Group ownership differs

          T mTime differs

          P caPabilities differs

11包来源合法性验证及完整性验证;

       1>.完整性校验

         公钥加密:

              对称加密: 加密、解密使用同一密钥

              对称加密:密钥是成对儿的;

                 Public key 公钥,公开

               Secret key 私钥不公开

2>.导入所需公钥:

         rpm --import  /PATH/FRO/GPG-PUBKEY-FILE

     

3>.数据库重建:

          rpm {--initdb|--rebuilddb}

            initdb初始化

              如果事先不存在数据库,则新建,否则不执行任何操作

            rebuilddb :重建

              无论当前存在与否,直接重新创建数据库