9 Linux之rpm

  • 程序安装之前,来认识下程序的组成部分:

    • 二进制程序
    • 库文件
    • 配置文件
    • 帮助文件(手册、文档)
    • 。。。

    • 二进制程序:/bin,/sbin,/user/bin,/user/sbin,/usr/local/bin,/usr/local/sbin,/opt/bin,/opt/sbin
    • 库文件:/lib,/lib64,/usr/lib,/usr/lib64,/usr/local/lib,/usr/local/lib64,/opt/lib,/opt/lib64
    • 配置文件:/etc/,/etc/DIR,/usr/local/{etc,conf}。。
    • 帮助文件:/usr/share/man,/usr/share/doc,/usr/local/share/man,/usr/local/doc

    • 注:有些特殊的程序会将执行文件放置于libexec目录;

    • 编译之前:源代码
    • 编译之后:
  • 程序包管理器
    • 安装、卸载、升级、查询
    • 实现应用程序打包,有特定格式
    • 对兼容的程序包进行管理
    • 注:制作成的二进制格式程序与平台有相关性,故通常需要制作各种流行平台所兼容的版本

  • 编译:
    • 源代码(文本) --> 预处理 --> 编译 --> 汇编 --> 链接

    • 编译时,根据是否将被调用的库文件直接打包进生成的二进制程序文件,编译方式可分为两类:
    • 动态链接:不将被调用的库文件打包进来,而是运行时去装载它
    • 静态链接:将被调用的库文件打包进来,将来运行时,可自己完全独立运行,而无需外部库文件支持运行

    • c程序包;
  • 程序包:
    • appneme-VERSION-RELEASE.ARCH.rpm

    • 源代码:appnema-VERSION.tar.gz,appname-VERSION.tar.gz2,appname-VERSION.tar.xz
    • 包管理器(rpm)格式:
  • 常见的包管理器:
    • deb:Debian
    • rpm:Red hat Package Manager,RPM is Package Manager

  • rpm包命名格式:
    • VERSION:
    • RELEASE:包自身的修订号,有时会有适用于os的信息
    • ARCH:使用的平台
    • major:主版本号
    • minor:次版本号
    • release:发型号
    • x86:i386,i486,i586,i686
    • x86_64:amd64,x86_64
    • powerpc:ppc
    • noarch:与平台无关

    • appname-VERSION-RELEASE.ARCH.rpm
  • 分包机制:

    • 核心包,主包:命名与源项目名称一致;
    • 子包(支包):命名为源项目名称后附加支包中的文件提供的功能组成

  • 获取包途径:
    • 来源合法
    • 包的完整性

    • http://rpmfind.net
    • http://rpm.pbone.net
    • http://pkgs.org
    • 教室:http://172.16.xx.xx/fedora-epel/6/
    • 光盘挂载
    • lrwxrwxrwx 1 root root           3 Apr  9  2015 cdrom -> sr0
    • lrwxrwxrwx 1 root root           3 Apr  9  2015 dvd -> sr0
    • 光盘放入光驱
    • mkdir /media/cdrom
    • mount -o ro -t iso9660 /dev/cdrom  /media/cdrom
    • 系统的发型光盘镜像或官方站点(或站点镜像服务器)
    • 程序包的官方站点
    • 第三方组织:epel
    • 搜索引擎
    • 建议:安装前验证其合法性
  • CentOS系统上程序rpm包管理:
    • 安装、升级、卸载、查询、检验
    • 通过rpm命令完成

  • 安装
    • --relocate
    • --force
    • --replacepkgs 相关配置文件就没了=.=!
    • 副作用:能安装成功,未必可以成功运行
    • 由众多目的单一的小程序组成,结果程序包之间存在相关性,甚至有循环依赖
    • rpm {-i|--install } [install-options]
    • -h:hash,以#来表示安装进度。100个#表示安装完成
    • -v,--verbose:显示安装过程中的详细信息
    • 安装时常用的组合:-ivh,-ivvh
    • --test,测试安装。不执行真正的安装过程,仅报告依赖关系及冲突信息等
    • 程序包之间存在的依赖关系:
    • 忽略依赖关系:--nodeps
    • 覆盖安装:重新安装并覆盖原有文件
    • 强制安装:
    • 重新定位程序包的安装位置
  • 升级:
    • 一定不要对内核进行升级(兼容性)。Linux允许多内核共存,故可直接安装多个不同版本内核
    • 若程序包的配置文件安装后曾被修改,升级时,新版本的配置文件不会覆盖老版本的配置文件,而把新版本的配置文件重命名(加后缀.rpmnew)后保存

    • -U:升级或安装。没有安装会安装目标程序
    • rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
    •  rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
    • --test
    • --nodepkgs
    • --force
    • --oldpackage:降级

    • 注:
  • 卸载:移除已安装的包
    •  rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts]
    •  [--notriggers] [--test] PACKAGE_NAME ...
  • 简单用法:rpm -e PACKAGE_NAME
  •  --nodeps:忽略依赖关系
  • --test:仅做测试卸载:dry-run模式
  • --allmatches:如果一个程序包同时安装多个版本,则此选项一次全部卸载之

  • 注:
    • 如果程序包的配置文件安装后曾被修改,卸载时,此文件通常不会删除,而是被重命名(加后缀.rpmsave)后保存

  • 查询:
    • rpm {-q|--query} [select-options] [query-options]
    • [select-options]:
    • [query-options]:
    • rpm -qf  /etc/fstab
    • rpm -qa 
    • rpm -q PACKAGE_NAME
    • rpm -q --scripts PACKAGE_NAME
    • rpm -q --requires PACKAGE_NAME
    • rpm -q --provides PACKAGE_NAME
    • rpm -q --changelog PACKAGE_NAME
    • rpm -qd PACKAGE_NAME
    • rpm -qc PACKAGE_NAME
    • rpm -ql PACKAGE_NAME
    • rpm -qi PACKAGE_NAME
    • 查询某包是否已经安装,以及检查安装的所有包,还可以查看特定包的详细信息
  1. rpm -qpi PACKAGE_FILE
  1. 查询某包或某些包是否安装:
  2. 查询已安装的所有包
  3. 查询某文件是由哪个包安装生成:
  4. 查询尚未安装的包文件的相关信息;
      1. preinstall:安装过程开始之前执行的脚本
      2. postinstall:安装过程完成后执行的脚本‘
      3. preuninstall:卸载开始之前执行的脚本
      4. postuninstall:下载过程完成之后执行的脚本

      1. 脚本有四类:
      1. 查询某包的简要说明信息:
      2. 查询某包安装后生成的文件列表:
      3. 查询某包安装后生成的配置文件:
      4. 查询某包安装后生成的帮助文件:
      5. 查看某包制作时随版本变化的changelog信息:
      6. 查询某包提供的capabilities(包和其他功能):
      7. 查询某包所依赖的capabilities:
      8. 查询某包安装或卸载时会执行的脚本;

      校验:

      • 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 /PATH/TO/RPM-GPG-KEY-GILE

      • 验证:rpm {-K|--checksig}  PACKAGE_FILE
      • --nosignature:不检查来源合法性
      • --nodigest:不检查完整性

      • 包未被二次修改,完整性校验成功
      • 依赖于:制作者提供的程序特征码
      • 验证方式:安装者用同样的特征码提取算法提取程序包的特征码,并与原作者提供的相比较

      • 由信任的制作者提供
      • 依赖于:制作者的数字签名:签名是作者使用自己的私钥加密程序包的特性码进行的
      • 来源合法
      • 内容合法
      • 验证其光盘中程序包的来源及完整性

      rpm管理器数据库:/var/lib/rpm

      • rpm {--initdb|--rebuilddb} [-v] [--dbpath DIRECTORY]

      • --initdb:初始化数据库,即数据库完全不存在时,可新建之
      • --rebuild:无论当前数据存在与否,都会直接重建此库
      时间: 2024-11-06 10:56:47

      9 Linux之rpm的相关文章

      第十章 Linux下RPM软件的安装与卸载

      第十章 Linux下RPM软件的安装与卸载 第一节 RPM软件包安装 rpm命名原则 如: vsftpd-3.0.2-9.el7.x86_64.rpm vsftpd 3.0.2 9 e17 x86_64 rpm 软件包名 软件版本 发行次数 适合的Linux平台 适合的硬件平台 rpm包扩展名 rpm包常用下载网址 http://www.rpmfind.net/ http://rpm.pbone.net/ rpm包安装 rpm -i    安装软件包 -v    显示安装过程 -h    显示安

      linux下rpm,yum学习

      linux下RPM及yum学习 linux中程序管理程序主要分为两类 dpkg(Debian Packager):debian,Ubuntu,Knoppix        rpm(Redhat Package Manager):Redhat,Centos,Fedora linux通过管理程序实现程序的安装,但不管是dpkg还是rpm安装软件时若软件存在依赖性关系,则自动安装所需要软件及相关配置,为实现此功能,rpm需包含自己的数据库(/var/lib/rpm),将安装程序分别安装到指定位置,本次

      linux之rpm包制作

      难点:spec文件的编写 1,首先安装rpm-build命令 yum install rpm-build 2,介绍spec编写规则: #ll #drwxr-xr-x  2 root root 4096 Jul 29 13:50 BUILD #drwxr-xr-x  2 root root 4096 Jul 29 13:51 RPMS #drwxr-xr-x  2 root root 4096 Jul 29 13:51 SOURCES #drwxr-xr-x  2 root root 4096 J

      Linux中rpm和yum

      RPM是RedHat Package Manager(RedHat软件包管理工具)类似Windows里面的"添加/删除程序" 1 rpm 执行安装包二进制包(Binary)以及源代码包(Source)两种.二进制包可以直接安装在计算机中,而源代码包将会由RPM自动编译.安装.源代码包经常以src.rpm作为后缀名. yum = Yellow dog Updater, Modified主要功能是更方便的添加/删除/更新RPM包,能自动解决包的倚赖性问题,能便于管理大量系统的更新问题.它还

      Linux下RPM操作

      在 Linux 操作系统下,几乎所有的软件均通过RPM 进行安装.卸载及管理等操作.RPM 的全称为Redhat Package Manager ,是由Redhat 公司提出的,用于管理Linux 下软件包的软件.Linux 安装时,除了几个核心模块以外,其余几乎所有的模块均通过RPM 完成安装. RPM 有五种操作模式,分别为:安装.卸载.升级.查询和验证. RPM 安装操作 命令: rpm -i 需要安装的包文件名 举例如下: rpm -i example.rpm 安装 example.rp

      菜鸟的成长记录--linux之rpm

      RPM 什么是rpm?rpm是RPM package manager的缩写,最早由RedHat公司提出的软件包标准,后来随着rpm的不断发展而又增加许多功能,逐渐的成为linux公认的软件包管理标准.支持该格式的厂商有RedHat linux.suse linux.Mandriva linux. Rpm的优点 由于RPM是通过预编译并打包成为rpm文件格式后再加以安装的一种方式,并且还能够进行数据库的记载,所以RPM有以下优点: 1.Rpm内含已经编译过的程序与设置文件等数据,可以让用户免除重新

      包管理 ----- Linux操作系统rpm包安装方式步骤

      Linux操作系统rpm包安装方式步骤 2016年08月04日 07:00:26 阅读数:17140 转自 : http://os.51cto.com/art/201003/186467.htm 特别值得一提的是Linux操作系统有很多值得学习的地方,这里我们主要介绍Linux操作系统,包括介绍Linux操作系统等方面.Linux操作系统软件安装方法总结 一.rpm包安装方式步骤: 引用: 1.找到相应的软件包,比如soft.version.rpm,下载到本机某个目录: 2.打开一个终端,su

      Linux的rpm包管理

      我们都知道,windows的程序无法直接在linux中运行,windows中大量的木马和病毒也无法被linux识别,所有的软件包都必须针对linux再做单独的开发. 软件包分类 源码包 (把源代码直接开放的包) 脚本安装包(源码包写一个安装界面,不需要手动安装) 二进制包(RPM包.系统默认包) 源码包的优点: 1.开源,如果有足够的能力,可以修改源代码 2.可以自由选择所需的功能 3.软件是编译安装,所以更加适合自己的系统,更加的稳定也效率更高 4.卸载方便 缺点: 1.安装步骤较多,尤其在安

      Linux下RPM软件包的安装及卸载

      在Linux 操作系统下,几乎所有的软件均通过RPM 进行安装.卸载及管理等操作.RPM 的全称为Redhat Package Manager ,是由Redhat 公司提出的,用于管理Linux 下软件包的软件.Linux 安装时...... 在 Linux 操作系统下,几乎所有的软件均通过RPM 进行安装.卸载及管理等操作.RPM 的全称为Redhat Package Manager ,是由Redhat 公司提出的,用于管理Linux 下软件包的软件.Linux 安装时,除了几个核心模块以外,