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 帮你自动执行这一类型的指令,就加上他吧!

上一篇:Android-Menu菜单使用一


下一篇:Windows下fabric sdk连接Linux上fabric网络的调试过程