zoukankan      html  css  js  c++  java
  • Linux对包管理阐述

       Centos/Redhat/Fedora的软件包,都是rpm后缀的文件。包管理器rpm(Redhat packages manager)

       linux的哲学思想是简单命令解决复杂任务,因此每个软件的功能较单一,所以各种包之间有着复杂的依赖关系,为了解决这种可以使用前端工具:

    前端管理工具,自动解决依赖关系。

    01、rpm包命名格式

    二进制格式  name-VERSION.tar.gz

    VERSION的格式: major.minor.release.os.arch  

    arch:i386,x64(amd64),ppc(power pc),noarch(java编写的,可以跨平台)

    os:e17(红帽七) os:el6(红帽6)

    eg:

    主版本号为3,次版本号为0,发行号为2,编译次数为1,系统为centos7,平台为x64的rpm包 

    redis-3.0.2-1.centos7.x64.rpm

    02、版本类型

    fc       final candidate  最终版

    alpha 内测版

    beta 公测版

    rc     发布候选版

    release 正式版


    程序包管理器:

    源代码---> 目标二进制格式----> 组织成为一个或有限几个“包”文件,实现软件的安装,升级,卸载,查询,校验

    后端管理工具: 

    debian:dpt,dpkg,".deb"

    redhat: rpm,".rpm"   yum

    S.u.S.E:rpm ,".rpm" 源于rpm但是组织结构不同,并不能和redhat兼容

    Ubantu:是debian的分支,包管理机制一样

    Gentoo;parts

    Archlinux:linux界的新贵(极简哲学思想)


    yum:rhel系列系统上的rpm包管理器的前端工具

    apt-get:.deb包管理器的前端工具

    zypper:suse的rpm包管理工具

    dnf:Fedora20+系统上的rpm包管理器的前端工具,功能更强大,未来centos中也可能使用

     03、常见的Mirrors

    程序包组成包管理器的功能,将编译好的应用程序的各组成文件打包成一个或几个程序包文件

    1.系统发行版的光盘或官方的文件服务器(或镜像站点)

    http://mirrors.aliyun.com

    http://mirrors.sohu.com

    EPEL(较为可靠的组织):阿里云等中的epel目录

    2.对rpm单个包下载

    http://pkgs.org

    http://rpm.pbone.net

    http://rpmfind.net

    04、RPM参数含义

    CentOS系统上的rpm命令管理程序包,安装,升级,卸载,查询和校验,数据库维护

    rpm命令: rpm [OPTIONS]  [PACKAGE_FILE]

    安装: -i,--install

    升级:-U,--updata,-F,freshen

    卸载:-e,--erase

    查询:-q,--query

    校验: -V,--verify

    数据库维护:--builddb,--initdb

    1.安装


    rpm -ivh PACKAGE_FILE

    通用选项:

     -v:verbose 显示详细信息,

     -vv:更详细的输出

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

     [install-options]:

    -h:hash marks 输出进度条,每个#表示2%的进度

    --test:仅是测试,并不真的安装

    --nodeps:忽略依赖关系,可以让你安装,但是不一定可以用。你建议使用

    --force        强制安装     

    --replacepkgs;重新安装

    如果自己不小心错误修改了某些配置文件,想要安装的初始文件,可以通过这个命令但是要把改变过的文件删除,否则重新安装不会替换它

    --nodigest:不检查程序包的完整性

    --nosignature:不检查包签名信息,不检查来源合法性

    注意: rpm可以自带脚本;

    四类:--noscripts,不执行任何脚本

    preinstall:安装过程开始之前运行的脚本,%pre

    postinstall:安装过程完成之后运行的脚本,%post 

    peruninstall:卸载过程真正开始执行之前运行的脚本,

    postuninstall:卸载过程完成之后运行的脚本

    2.升级:


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

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

    -U:升级或安装,有则升级,无则安装

    -F :  升级,如果事先没有也不会安装

    --oldpackage:降级;

    --force:强制升级

    常见用法:

    rpm  -Uvh PACKAGE_FILE....

    rpm  -Fvh  PACKAGE_FILE

     注意:

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

      2.如果某源程序的配置文件安装后被修改过,升级时,新版本的程序提供的同一个配置文件不会覆盖原有版本的配置文件,而是把新版本的配置文件重命名

    (FILENAME.rpmnew)后提供(删除旧的,新的自动生成)

    3.卸载:

    rpm {-e|--erase} [--allmatchs][--nodeps][--noscripts][--test]PACKAGE_NAME

    --allmatchs:卸载所有匹配指定名称的程序包的各版本

    --nodeps: 忽略依赖关系,即使该文件被依赖,也会卸载

    --test: 仅是测试,并不真的卸载

    4.查询:

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

    [select-options]:

    -a,-all:查询所有已经安装的包

    -f FILE:查询指定的文件由那个程序安装生成

    -p,--package PACKAGE_FILE:用于实现对未安装的程序包执行查询操作

          eg:  rpm -qpi   PACKAGE.NAME: 不安装包查看包的具体信息

    rpm  -qlp   PACKAGE.NAME:不安装包直接查看生成的文件

     rpm  -qcp  PACKAGE.NAME:不安装包查看包会生成的配置文件

    --whatprovides CAPABILITY:查看指定的CAPABLITY由哪个程序包提供

    --whatrequires CAPABLITY:查询指定的CAPABLITY被哪个包所依赖

    [query-options]

    --changlog;查询rpm包的changlog;

    -l,--list:列出该安装包生成的文件列表

    -i,--info:程序包相关的信息,版本号,大小,所属的包组等

    -c,--configure:查询指定的程序包提供的配置文件

    -d,--docfiles:查询指定的程序包提供的文档

    --provides:列出指定的程序包提供的所有的CAPABLITY,提供了某个文件也是能力

    -R,--requires:查询指定包的依赖关系

    --scripts:查看程序包自带的脚本程序

     eg:

    [root@localhost ~]# rpm -q --provides bash       bash提供的能力

    config(bash) = 4.1.2-40.el6

    bash = 4.1.2-40.el6

    bash(x86-64) = 4.1.2-40.el6

    [root@localhost ~]# rpm -q --whatprovides ‘config(bash)‘      ;‘config(bash)‘ 这个能力是谁提供的

    bash-4.1.2-40.el6.x86_64

    [root@localhost ~]# rpm -q --whatrequires ‘config(bash)‘       ;‘config(bash)‘   这个能力被谁依赖

    bash-4.1.2-40.el6.x86_64

    05、RPM常见用法

    rpm -qi   PACKAGE.NAME: 查询安装包的具体信息

    rpm  -ql   PACKAGE.NAME:列出安装包生成的文件

    rpm -qf   FILE:查询某个文件是由那个安装包提供的

      eg:[root@localhost ~]# rpm -qf /usr/share/man/man1/wait.1.gz 

    bash-4.1.2-40.el6.x86_64

    rpm  -qc  PACKAGE.NAME:查看安装包生成的配置文件

    rpm  -qa  :已经安装的所有包

    不安装包直接查看:

    eg:  rpm -qpi   PACKAGE.NAME: 不安装包查看包的具体信息

    rpm  -qlp   PACKAGE.NAME:不安装包直接查看生成的文件

    rpm  -qcp  PACKAGE.NAME:不安装包查看包会生成的配置文件

    06、RPM效验

    校验务必保证公钥是安全的,合法的  

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

     eg: rpm -Va

      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

     eg:

     [root@localhost ~]# rpm -V zsh

    S.5....T.    /usr/share/zsh/4.3.11/scripts/newuser   这里对应的就是上面的信息,.表示没有变化

    包来源合法性验证和完整性验证:

    合法性:一个包制作者利用单向加密数据,然后利用私钥对数据的MD5加密,这样大家获得公钥后就可以验证这个包的来源了

    完整性:自己利用单向加密方法计算数据的MD5,然后比对md5码比对,如果一致,说明数据内容没有被修改。

      [root@localhost ~]# rpm -K /media/cdrom/Packages/zsh-4.3.11-4.el6.centos.2.x86_64.rpm

    /media/cdrom/Packages/zsh-4.3.11-4.el6.centos.2.x86_64.rpm: rsa sha1 (md5) pgp md5 OK

    [root@localhost ~]# rpm --import /media/cdrom/RPM-GPG-KEY-CentOS-6

    查看导入的秘钥文件

    [root@localhost ~]# rpm -qa gpg-pubkey*

     gpg-pubkey-c105b9de-4e0fd3a3

    删除导入的文件:

    [root@localhost ~]# rpm -e gpg-pubkey-c105b9de-4e0fd3a3

    数据库的重建: 

    rpm {--initdb|--rebuilddb}[--depath DIRECTORY][--root DIRECTORY]

     --initdb:初始化数据库,当前无任何数据库可实验化创建一个新的;当前有时不执行任何操作,不要轻易操作

    --rebuilddb:重新构建,读取当前系统上所有已经安装过的程序包进行重新创建

    --depath:指定数据库的路径

     --root:指定根的路径

  • 相关阅读:
    JS函数的定义与调用方法
    一次完整的浏览器请求流程
    【前端安全】JavaScript防http劫持与XSS
    深入理解display属性
    前端开发人员需要了解的CSS原理
    第 10 章 文件系统及实现
    第 9 章 虚拟内存管理
    第 8 章 内存管理策略
    第 7 章 死锁
    第 6 章 同步
  • 原文地址:https://www.cnblogs.com/xiaochina/p/5915192.html
Copyright © 2011-2022 走看看