首页 > 代码库 > linux程序包管理初步认识

linux程序包管理初步认识

程序的组成部分二进制程序、库文件、配置文件、帮助文件(手册、文档)

         运行模式:选项、配置文件

 

程序包的组成

                   二进制程序文件:/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin

                   库文件:/lib, /lib64, /usr/lib, /usr/local/lib

                   配置文件:/etc, /etc/DIR, /usr/local/etc

                   帮助文档:/usr/share/man, /usr/local/share/man

                            doc: /usr/share/doc,

                                     README, INSTALL, ChangeLog

 一个二进制程序依赖于哪些库文件:ldd

                        ldd /path/to/binary_file

程序包管理器

                   功能:将编译好的程序打包成一个文件或有限的几个文件,可用于实现便捷地安装、卸载、升级、查询、校验等程序管理;

                   1、程序的组成清单(每个程序包独有)

                            文件清单

                            安装卸载时运行的脚本

                   2、数据库(公共)

                            程序名及版本

                            依赖关系:

                            功能说明

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

 常见程序包有两种程序包:rpm,deb

     常见包的版本:

testapp-VERSION

                  VERSIO代表:(major)主版本号

                               (minor)次版本号

                               (release) 发行版本号

  rpm包的命名:name-Major.Minor.Release-release.arch.rpm

  rpm包自己的发行号,与源代码的发行号无关;仅用于标识对rpm自身的修订;有时候,此release可能还会包含适用的OS;例如,bash-4.3.2-1.centos6.x86_64.rpm

                                     arch: 适用的硬件平台

                                               x86: i386, i486, i586, i686等;

                                               x86_64, amd64: x86_64

                                               powerpc: ppc

                                               noarch: 跟硬件平台无关;

获取rpm程序包的途径:

1、  优先使用系统发行光盘或者官方站点服务器

镜像

(例如):http://micrrors,sonu.com

2、  程序官方网站

3、  第三方组织

优先选择Fedora-EPEL: epel

搜索引擎

          ( 例如):1http://rpmfind.

                 2http://rpmfind.net

                 3http://rpm.pbone.net

                 4http://pkgs.org

4、自己制作。

建议:rpm程序包安装之前要合法性校验正:

             合法性校验分为两种:

                     来源合法性

                     程序包的完整性

 Rpm程序包的安装介绍:

       安装语法:rpm {-i | --install}  [install-options]  PACKAGE-FILE…..

                 Rpm -ivh  [install –options] PACKAGE-FILE…

技术分享

   还包括[install-options]

                      --replacepkgs:重新安装

                      --hodeps:忽略依赖关系

                      --test:测试安装,而不执行真正的安装;dry.rum模式;

升级: --OLDPACKAGE

       升级是用较高版本程序包替换安装原有较老的程序包的过程

     升级语法:rpm {-u|--upgrude} [install-options] PACKAGE_FILE ...

技术分享

卸载:移除已安装的程序包;

                             rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ...

技术分享

  还包括 –nodeps:忽略依赖关系

                   --test:卸载测试

  注意:卸载某个程序包是先卸载依赖关系在卸载rpm程序包

查询:

     查询某程序包是否已安装,或检查已安装的新包的

         语法:rpm {-q | --querg} [select-options] [querg—options]

          [select – options] 1、查询某包是否安装:

                             Rpm –q PACKAGE-NAME

                         2、查询已安装的所有包

                             Rpm-qa

查询某包的简要说明信息:

     语法:rpm-qi PACKAGE-NAME

技术分享

查询某包安装后生成的所有列表

技术分享

查询某包安装后生成的所有配置文件的列表

技术分享

查询某包安装后生成的所有帮助文件的列表

技术分享

查询某包制作时随版本变化的changelong的列表信息

技术分享

查询某包提供的capabilities

技术分享

查询某包所依赖的

技术分享

查询某包安卸载时的脚本

技术分享

 还包括:preinstall:安装前执行的脚本

          Postinstall:安装后执行的脚本

          Preuninstall:卸载前执行的脚本

          Postuninstall:卸载后执行的脚本

校验:检查包安装后生成的文件是否发生了改变

      语法:rpm {-v| --verify} [select-options] [verify-options]

校验:

                            检查包安装之后生成的文件是否发生了改变

         常用用法:rpm -V PACKAGE_NAME

 

                          S file Size differs

                          M Mode differs (includes permissions and file type)

                          5 digest (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 differ

 

                   包来源合法性及完整性验正:

                            rpm --import PUBKEY ...

                            rpm {-K|--checksig} [--nosignature] [--nodigest] PACKAGE_FILE ...

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

                                     --nodigest: 不检查完整性

 

                            加密:

                                     对称加密(数据加密)、公钥加密(数字签名)、单向加密(完整性验正)

 

         公共数据库:/var/lib/rpm

                   重建数据库

                             rpm {--initdb|--rebuilddb}

 

                             初始化:--initdb

                                    如果事先不存在数据,则会新之;否则,不执行任何操作

 

                             重新构建:--rebuilddb

                                    无论当前是否已经存在数据库,都会直接重建并覆盖现有数据库;

linux程序包管理初步认识