zoukankan      html  css  js  c++  java
  • linux RPM、YUM

    1. Linux 界的两大主流: RPM 与 DPKG
      • distribution 代表 软件管理机制 使用指令 在线升级机制(指令)
        Red Hat/Fedora RPM rpm, rpmbuild YUM (yum)
        Debian/Ubuntu DPKG  dpkg APT (apt-get)

          

    2. RPM与SRPM
      1. RPM 是以一种数据库记录的方式来将你所需要的软件安装到你的 Linux 系统的一套管理机制。
        1. 优点:
          1. 由于已经编译完成并且打包完毕,所以软件传输与安装上很方便 (不需要再重新编译);
          2. 由于软件的信息都已经记录在 Linux 主机的数据库上,很方便查询、升级与反安装
        2. 问题:
          1. 软件档案安装的环境必须与打包时的环境需求一致或相当;
          2. 需要满足软件的相依属性需求;
          3.  反安装时需要特别小心,最底层的软件不可先移除,否则可能造成整个系统的问题!
      2. SRPM(Source RPM)所提供的软件内容『并没有经过编译』, 他提供的是原始码。通常 SRPM 的扩展名是以 ***.src.rpm 这种格式来命名的。
        1. 先将该软件以 RPM 管理的方式编译,此时 SRPM 会被编译成为 RPM 档案;
        2. 然后将编译完成的 RPM 档案安装到 Linux 系统当中
    3. 什么是 i386, i586, i686, noarch, x86_64
      1. rp-pppoe-3.1-5.i386.rpm----档案的意义
        1. rp-pppoe - 3.1 -   5 .i386 .rpm
          软件名称 软件的版本信息 释出次数  适用的平台 扩展名
    4. RPM 是透过预先编译并打包成为 RPM 文件格式后,再加以安装的一种方式,并且还能够进行数据库的记载。所以 RPM 有以下的优点:
      1. RPM 内含已经编译过的程序与配置文件等数据,可以让用户免除重新编译的困扰;
      2. RPM 在被安装之前,会先检查系统的硬盘容量、操作系统版本等,可避免档案被错误安装;
      3. RPM 档案本身提供软件版本信息、相依属性软件名称、软件用途说明、软件所含档案等信息,便于了解软件;
      4. RPM 管理的方式使用数据库记录 RPM 档案的相关参数,便于升级、移除、查询与验证。
    5. RPM 软件管理程序: rpm
      1. 利用RPM安装的软件相关的信息会被写入 /var/lib/rpm/ 目录下的数据库档案中
      2. RPM 安装 (install)
        1. rpm -ivh package_name
          1. -i :install 的意思
          2. -v :察看更细部的安装信息画面
          3. -h :以安装信息列显示安装进度
      3. RPM 升级与更新 (upgrade/freshen)
        1. rpm -[UF]vh package_name
          1. -Uvh:后面接的软件即使没有安装过,则系统将予以直接安装;若后面接的软件有安装过旧版,则系统自动更新至新版;
          2. -Fvh:如果后面接的软件并未安装到你的 Linux 系统上,则该软件不会被安装;亦即只有已安装至你 Linux 系统内的软件会被『升级』!
      4. RPM 查询 (query)
        1. rpm -qa <==已安装软件
        2. rpm -q[licdR] 已安装的软件名称 <==已安装软件
        3. rpm -qf 存在于系统上面的某个文件名 <==已安装软件
        4. rpm -qp[licdR] 未安装的某个文件名 <==查阅RPM档案
          1. 查询已安装软件的信息:
          2. -q :仅查询,后面接的软件名称是否有安装;
          3. -qa :列出所有的,已经安装在本机 Linux 系统上面的所有软件名称;
          4. -qi :列出该软件的详细信息 (information),包含开发商、版本与说明等;
          5. -ql :列出该软件所有的档案与目录所在完整文件名 (list);
          6. -qc :列出该软件的所有配置文件 (找出在 /etc/ 底下的档名而已)
          7. -qd :列出该软件的所有说明文件 (找出与 man 有关的档案而已)
          8. -qR :列出与该软件有关的相依软件所含的档案 (Required 的意思)
          9. -qf :由后面接的文件名,找出该档案属于哪一个已安装的软件;
          10. 查询某个 RPM 档案内含有的信息:
          11. qp[icdlR]:注意 -qp 后面接的所有参数与上面的说明一致。但用途仅在于找出某个 RPM 档案内的信息,而非已安装的软件信息!注意!
      5. RPM 验证与数字签名 (Verify/signature)
        1. 作用的方式是『使用 /var/lib/rpm 底下的数据库内容来比对目前 Linux 系统的环境下的所有软件档案 』也就是说,当你有数据不小心遗失, 或者是因为你误杀了某个软件的档案,或者是不小心不知道修改到某一个软件的档案内容, 就用这个简单的方法来验证一下原本的文件系统吧!
        2. rpm -Va
        3. rpm -V 已安装的软件名称
        4. rpm -Vp 某个 RPM 档案的档名
        5. rpm -Vf 在系统上面的某个档案
          1. -V :后面加的是软件名称,若该软件所含的档案被更动过,才会列出来;
          2. -Va :列出目前系统上面所有可能被更动过的档案;
          3. -Vp :后面加的是文件名,列出该软件内可能被更动过的档案;
          4. -Vf :列出某个档案是否被更动过~
        6. 例:[root@www ~]# rpm -Vf /etc/crontab
          1. ..5....T c /etc/crontab
          2. 前面的八个信输出说明:
            1. S :(file Size differs) 档案的容量大小是否被改变
            2. M :(Mode differs) 档案的类型或档案的属性 (rwx) 是否被改变?如是否可执行等参数已被改变
            3. 5 :(MD5 sum differs) MD5 这一种指纹码的内容已经不同
            4. 5 :(MD5 sum differs) MD5 这一种指纹码的内容已经不同
            5. L :(readLink(2) path mis-match) Link 路径已被改变
            6. U :(User ownership differs) 档案的所属人已被改变
            7. G :(Group ownership differs) 档案的所属群组已被改变
            8. T :(mTime differs) 档案的建立时间已被改变
          3. 第九个字段说明:
            1. c :配置文件 (config file)
            2. d :文件数据文件 (documentation)
            3. g :鬼档案~通常是该档案不被某个软件所包含,较少发生!(ghost file)
            4. l :许可证文件 (license file)
            5. r :自述文件 (read me)
      6. 数字签名 (digital signature)
        1. 当你要安装一个 RPM 档案时:
          1. 首先你必须要先安装原厂释出的公钥档案;
          2. 实际安装原厂的 RPM 软件时, rpm 指令会去读取 RPM 档案的签章信息,与本机系统内的签章信息比对,
          3. 若签章相同则予以安装,若找不到相关的签章信息时,则给予警告并且停止安装喔。
        2. 安装原厂释出的 GPG 数字签名的公钥档案
          1. locate GPG-KEY或find /etc -name '*GPG-KEY*'  --------查找
          2. rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5 ---------安装
      7. RPM 反安装与重建数据库 (erase/rebuilddb)
        1. rpm -e package_name ------删除某个软件
        2. rpm --rebuilddb  ------<==重建数据库
    6. SRPM 的使用 : rpmbuild
      1. 利用默认值安装 SRPM 档案 (--rebuid/--recompile)
        1. rpmbuild [--rebuild --recompile] SRPM包
          1. --rebuild:『编译』与『打包』的动作,最后会产生 RPM 的档案。
          2. --recompile:『编译』『打包』并且『安装』
      2. SRPM 使用的路径与需要的软件 -----需要安装rpm-build-4.2-0.69.i386.rpm包-------806 
      3. 打包自己的RPM软件------------811
    7. 利用 yum 进行查询、安装、升级与移除功能
      1. yum [option] [查询工作项目] [相关参数] 选项
        1. [option]:主要的选项,包括有:
          1. -y :当 yum 要等待用户输入时,这个选项可以自动提供 yes 的响应;
          2. --installroot=/some/path :将该软件安装在 /some/path 而不使用默认路径
        2. [查询工作项目] [相关参数]:这方面的参数有:
          1. search :搜寻某个软件名称或者是描述 (description) 的重要关键字;
          2. list :列出目前 yum 所管理的所有的软件名称与版本,有点类似 rpm -qa;
          3. info :同上,不过有点类似 rpm -qai 的执行结果;
          4. provides:依档案去搜寻软件!类似 rpm -qf 的功能!
        3. 列出目前服务器上可供本机进行升级的软件有哪些?
          1. [root@www ~]# yum list updates
      2. 安装/升级功能:yum [install|update] 软件
        1. yum [option] [查询工作项目] [相关参数]
          1. install :后面接要安装的软件!
          2. update :后面接要升级的软件,若要整个系统都升级,就直接 update 即可
      3. 移除功能:yum [remove] 软件
        1. yum remove pam-devel
      4. yum 的配置文件
        1. vi /etc/yum.repos.d/CentOS-Base.repo
        2. 内容说明:
          1. [base]:代表容器的名字!中刮号一定要存在,里面的名称则可以随意取。但是不能有两个相同的容器名称, 否则 yum 会不晓得该到哪里去找容器相关软件列表档案。
          2. name:只是说明一下这个容器的意义而已,重要性不高!
          3. mirrorlist=:列出这个容器可以使用的映射站台,如果不想使用,可以批注到这行;
          4. baseurl=:这个最重要,因为后面接的就是容器的实际网址! mirrorlist 是由 yum程序自行去捉映像站台, baseurl 则是指定固定的一个容器网址!当你要找容器所在网址时, 最重要的就是该网址底下一定要有个名为 repodata 的目录存在
          5. enable=1:就是让这个容器被启动。如果不想启动可以使用 enable=0 喔!
          6. gpgcheck=1:还记得 RPM 的数字签名吗?这就是指定是否需要查阅 RPM 档案内的数字签名!
          7. gpgkey=:就是数字签名的公钥文件所在位置!使用默认值即可
    8. 修改容器产生的问题与解决之道
      1. yum clean [packages|headers|all]
        1. packages:将已下载的软件档案删除
        2. headers :将下载的软件文件头删除
        3. all :将所有容器数据都删除!
    9. yum 的软件群组功能
      1. yum [群组功能] [软件群组]
        1. grouplist :列出所有可使用的『套件组』,例如 Development Tools 之类的;
        2. groupinstall:这个好用!可以安装一整组的套件群组,相当的不错用!
        3. groupremove :移除某个套件群组;
    10. 全系统自动升级
      1. vim /etc/crontab
      2. 0 3 * * * root /usr/bin/yum -y update

    rpm 安装时常用的选项与参数说明

    可下达的选项 代表意义
    --nodeps

    使用时机:当发生软件属性相依问题而无法安装,但你执意安装时

    危险性: 软件会有相依性的原因是因为彼此会使用到对方的机制或功能,如果强制安装而不考虑软件的属性相依, 则可能会造成该软件的无法正常使用!

    --replacefiles

    使用时机: 如果在安装的过程当中出现了『某个档案已经被安装在你的系统上面』的信息,又或许出现版本不合的讯息 (confilcting files) 时,可以使用这个参数来直接覆盖档案。

    危险性: 覆盖的动作是无法复原的!所以,你必须要很清楚的知道被覆盖的档案是真的可以被覆盖喔!否则会欲哭无泪!

    --replacepkgs 使用时机: 重新安装某个已经安装过的软件!如果你要安装一堆 RPM 软件档案时,可以使用 rpm -ivh*.rpm ,但若某些软件已经安装过了, 此时系统会出现『某软件已安装』的信息,导致无法继续安装。此时可使用这个选项来重复安装喔!
    --force  使用时机:这个参数其实就是 --replacefiles 与 --replacepkgs 的综合体!
    --test 

    使用时机: 想要测试一下该软件是否可以被安装到使用者的 Linux 环境当中,可找出是否有属性相依的问题。

    范例为:rpm -ivh pkgname.i386.rpm --test

    --justdb 使用时机: 由亍 RPM 数据库破损或者是某些缘故产生错误时,可使用这个选项来更新软件在数据库内的相关信息。
    --nosignature 使用时机: 想要略过数字签名的检查时,可以使用这个选项。
    --prefix 新路径 使用时机: 要将软件安装到其他非正规目录时。举例来说,你想要将某软件安装到 /usr/local 而非正规的/bin, /etc 等目录, 就可以使用『 --prefix /usr/local 』来处理了。
    --noscripts

    使用时机:不想让该软件在安装过程中自行执行某些系统指令。

    说明: RPM 的优点除了可以将档案放置到定位之外,还可以自动执行一些前置作业的指令,例如数据库的初始化。 如果你不想要让 RPM 帮你自动执行这一类型的指令,就加上他吧!

  • 相关阅读:
    hihocoder 1049 后序遍历
    hihocoder 1310 岛屿
    Leetcode 63. Unique Paths II
    Leetcode 62. Unique Paths
    Leetcode 70. Climbing Stairs
    poj 3544 Journey with Pigs
    Leetcode 338. Counting Bits
    Leetcode 136. Single Number
    Leetcode 342. Power of Four
    Leetcode 299. Bulls and Cows
  • 原文地址:https://www.cnblogs.com/guojintao/p/5744577.html
Copyright © 2011-2022 走看看