天天看点

Linux RPM管理RPM管理

文章目录

  • RPM管理
    • Linux软件包介绍
      • Linux软件包的种类
      • 源码包
        • 源码包缺点
        • 安装位置
      • 二进制包
        • RPM包优点
        • RPM缺点
        • 安装默认位置
    • RPM软件包简介
    • RPM语法
    • RPM软件包管理
      • 安装RPM软件包
        • 安装软件包
        • 安装软件并显示详细信息和水平进度条
        • 测试安装,并不实际安装
        • 安装以soft开头的软件包
        • 在已经安装了的情况下,依旧重新安装软件包
        • 忽略软件包的依赖关系,安装软件包
        • 忽略软件包的依赖关系,强制安装软件包
        • 直接从HTTP网络地址中安装软件包
      • 查询软件包
        • 查看系统中所有安装的软件包
        • 查询系统中是否已经安装指定的软件包
        • 查找是否安装soft相关的软件包
        • 查看一个文件属于哪个PRM包
        • 获取RPM包的说明信息
        • 查询指定该软件包所包含的文件列表
      • 升级RPM包和刷新RPM软件包
        • 升级软件包
        • 刷新软件包
      • 卸载RPM软件包
        • 卸载指定软件包
        • 删除软件包及其软件包依赖项
      • RPM数据库
        • 初始化RPM数据库
        • 从安装软件中重建RPM数据信息
    • 杂项

RPM管理

Linux软件包介绍

在linux系统中,如果要完成一些功能,则需要安装软件来支持,安装软件就需要软件包,接下来笔者带你了解什么是软件包!

Linux软件包的种类

在Linux中使用的软件包大致分为两类,一类是二进制的软件包,还有一类是含有源码的软件包;

  • 源码包

    :源码包是编程人员写的程序代码文件,不能够直接在计算机上运行;源码包需要进行编译,编程二进制的软件包后才能安装使用;源码包一般是压缩后的文件;源码包不能直接执行,需编译,可对源码进行修改;
  • 二进制包

    (CentOS系统中一般指rpm包): 二进制包指的是已经安装好了的软件包,只需要直接安装就可以使用;二进制包不需要编译,直接下载即可使用;二进制包需要根据自己的计算机CPU和操作系统去选择合适的包来安装;二进制包可以直接执行,不需要编译;

源码包

源码包是编程人员写的程序代码文件,不能够直接在计算机上运行;源码包需要进行编译,编程二进制的软件包后才能安装使用;源码包一般是压缩后的文件;源码包不能直接执行,需编译,可对源码进行修改;

####源码包优点

  • 开源,源码可见,且可以修改
  • 配置更加灵活,可以自由选择所需的功能
  • 软件是编译安装,所以更加适合自己的系统,更加稳定和高效
  • 卸载方便,只要将配置的安装的文件夹删掉即可,不能残留任何垃圾

源码包缺点

  • 安装过程步骤较多,尤其安装较大的软件集合时,容易出现拼写错误
  • 编译时间长
  • 因为是编译安装,安装过程中一旦报错新手很难解决

安装位置

安装在指定位置,一般是 /usr/local/软件名/

二进制包

(CentOS系统中一般指rpm包): 二进制包指的是已经安装好了的软件包,只需要直接安装就可以使用;二进制包不需要编译,直接下载即可使用;二进制包需要根据自己的计算机CPU和操作系统去选择合适的包来安装;二进制包可以直接执行,不需要编译;

RPM包优点

  • 管理简单,安装、查询、卸载简单
  • 安装速度快

RPM缺点

  • 不可以看到源代码
  • 功能选择不如源码包灵活
  • 依赖性:有可能软件包之间依赖关系比较复杂,安装A需要依赖B和C,只有先安装B和C后,才能安装A

安装默认位置

  • /etc

    :配置文件安装目录
  • /usr/bin/

    :可执行命令安装目录
  • /usr/lib/

    :程序所使用的函数库保存位置
  • /usr/share/doc/

    :基本的软件使用手册保存位置
  • /usr/share/man/

    :帮助文档保存位置

RPM软件包简介

RPM

Red-Hat Package Manager

(RPM软件包管理器)的缩写,rpm工具用于管理

.rpm

格式的软件包,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括OpenLinux、S.u.S.E.以及Turbo Linux等Linux的分发版本都有采用,可以算是公认的行业标准了

RPM 是以一种数据库记录的方式来将你所需要的套件安装到你的Linux 主机的一套管理程序。也就是说,你的linux系统中存在着一个关于RPM的数据库,它记录了安装的包以及包与包之间依赖相关性。RPM包是预先在linux机器上编译好并打包好的文件,安装起来非常快捷。但是也有一些缺点,比如安装的环境必须与编译时的环境一致或者相当;包与包之间存在着相互依赖的情况;卸载包时需要先把依赖的包卸载掉,如果依赖的包是系统所必须的,那就不能卸载这个包,否则会造成系统崩溃。

RPM语法

功能说明:安装、删除、升级、刷新、查询

语法:

选项及参数

  • -a

    :查询所有软件;
  • -b<完成阶段><软件包>+或-t <完成阶段><软件包>+

    :设置包装软件的完成阶段,并指定软件包的文件名称;
  • -c

    :只列出组态配置文件,本参数需配合"-l"参数使用;
  • -d

    :只列出文本文件,本参数需配合"-l"参数使用;
  • -e<软件包>或--erase<软件包>

    :删除指定的软件;
  • -f<文件>+

    :查询拥有指定文件的软件;
  • -h或--hash

    :软件安装时列出标记;
  • -i

    :显示软件的相关信息;
  • -i<软件包>或--install<软件包>

    :安装指定的软件包;
  • -l

    :显示软件的文件列表;
  • -p<软件包>+

    :查询指定的RPM软件包;
  • -q

    :使用询问模式,当遇到任何问题时,rpm指令会先询问用户;
  • -R

    :显示软件的关联性信息;
  • -s

    :显示文件状态,本参数需配合"-l"参数使用;
  • -U<软件包>或--upgrade<软件包>

    :升级指定的软件包;
  • -v

    :显示指令执行过程;
  • -vv

    :详细显示指令执行过程,便于排错。
  • addsign<软件包>+

    :在指定的软件里加上新的签名认证
  • --allfiles

    :安装所有组件
  • --allmatches

    :删除符合指定的软件所包含的文件
  • --badreloc

    :发生错误时,重新配置文件
  • --buildroot<根目录>

    :设置产生软件时,欲当做根目录的目录
  • --changelog

    :显示软件的更改记录
  • --checksig<软件包>+

    :验证该软件的签名认证
  • --clean

    :完成软件的包装后,删除包装过程中所建立的目录
  • --dbpath<数据库目录>

    :设置欲存放RPM数据库的目录
  • --dump

    :显示每个文件的验证信息。本参数需配合-l参数使用
  • --excludedocs

    :安装软件时,不要安装文件
  • --excludepath<排除目录>

    :忽略在指定目录里的所有文件
  • --force

    :强行置换软件或文件
  • --ftpproxy<主机名称或IP地址>

    :指定FTP代理服务器
  • --ftpport<通信端口>

    :设置FTP服务器或代理服务器使用的通信端口
  • --httpproxy<主机名称或IP地址>

    :指定HTTP代理服务器
  • --httpport<通信端口>

    :设置HTTP服务器或代理服务器使用的通信端口
  • --ignorearch

    :不验证软件包的结构正确性
  • --ignoreos

    :不验证软件包的结构正确性
  • --ignoresize

    :安装前不检查磁盘空间是否足够
  • --includedocs

    :安装软件时,一并安装文件
  • --initdb

    :确认有正确的数据库可以使用
  • --justdb

    :更新数据库,当不变动任何文件
  • --nobulid

    :不执行任何完成阶段
  • --nodeps

    :不验证软件包的相互关联性
  • --nofiles

    :不验证文件的属性
  • --nogpg

    :略过所有GPG的签名认证
  • --nomd5

    :不使用MD5编码演算确认文件的大小与正确性
  • --nopgp

    :略过所有PGP的签名认证
  • --noorder

    :不重新编排软件的安装顺序,以便满足其彼此间的关联性
  • --noscripts

    :不执行任何安装script文件
  • --notriggers

    :不执行该软件包装内的任何script文件
  • --oldpackage

    :升级成旧版本的软件
  • --percent

    :安装软件时显示完成度百分比
  • --pipe<执行指令>

    :建立管道,把输出结果转为该执行指令的输入数据
  • --prefix<目的目录>

    :若重新配置文件,就把文件放到指定的目录下
  • --provides

    :查询该软件所提供的兼容度
  • --queryformat<档头格式>

    :设置档头的表示方式
  • --querytags

    :列出可用于档头格式的标签
  • --rcfile<配置文件>

    :使用指定的配置文件
  • --rebulid<软件包>

    :安装原始代码软件,重新产生二进制文件的软件
  • --rebuliddb

    :以现有的数据库为主,重建一份数据库
  • --recompile<软件包>

    :此参数的效果和指定

    --rebulid

    参数类似,当不产生软件包
  • --relocate<原目录>=<新目录>

    :把本来会放到原目录下的文件改放到新目录
  • --replacefiles

    :强行置换文件
  • --replacepkgs

    :强行置换软件
  • --requires

    :查询该软件所需要的兼容度
  • --resing<软件包>+

    :删除现有认证,重新产生签名认证
  • --rmsource

    :完成软件的包装后,删除原始代码
  • --rmsource<文件>

    :删除原始代码和指定的文件
  • --root<根目录>

    :设置欲当做根目录的目录
  • --scripts

    :列出安装软件的script的变量
  • --setperms

    :设置文件的权限
  • --setugids

    :设置文件的拥有者和所属群组
  • --short-circuit

    :直接略过指定完成阶段的步骤
  • --sign

    :产生PGP或GPG的签名认证
  • --target=<安装平台>+

    :设置产生的软件的安装平台
  • --test

    :仅做测试,并不真的安装软件
  • --timecheck<检查秒数>

    :设置检查时间的计时秒数
  • --triggeredby<软件包>

    :查询该软件的包装者
  • --triggers

    :展示软件包内的包装Script
  • --verify

    :此参数的效果和指定

    -q

    参数相同
  • --whatprovides<功能特性>

    :查询该软件对指定的功能特性所提供的兼容度
  • --whatrequires<功能特性>

    :查询该软件对指定的功能特性所需要的兼容度

RPM软件包管理

RPM软件包管理主要有安装、删除、升级、刷新、查询这五种基本操作模式

安装RPM软件包

使用

rpm -i

命令可以在Linux系统中安装RPM软件包

rpm安装软件常用参数说明

  • -i

    :安装软件包
  • -v

    :安装软件时显示命令的执行过程
  • -h

    :安装软件时输出hash记号:#

安装软件包

安装软件并显示详细信息和水平进度条

####强制安装软件包

测试安装,并不实际安装

安装以soft开头的软件包

通过以下方式可以一次安装多个软件包

在已经安装了的情况下,依旧重新安装软件包

忽略软件包的依赖关系,安装软件包

忽略软件包的依赖关系,强制安装软件包

直接从HTTP网络地址中安装软件包

查询软件包

使用

rpm -q

命令可以在Linux系统中查询RPM软件包

rpm查看软件常用参数说明

  • -q

    :查询软件包
  • -p

    :查询软件包的文件
  • -l

    :显示软件包中的文件列表
  • -a

    :显示安装的所有软件列表
  • -f<文件>

    :查询拥有指定文件的软件包;
  • -R

    :显示软件的依赖性(关联性)信息;

查看系统中所有安装的软件包

查询系统中是否已经安装指定的软件包

查找是否安装soft相关的软件包

查看一个文件属于哪个PRM包

获取RPM包的说明信息

查询指定该软件包所包含的文件列表

升级RPM包和刷新RPM软件包

更新/刷新软件rpm常用参数说明

  • -U

    :升级指定的软件
  • -F

    :刷新指定的软件
  • -v

    :升级/刷新软件时显示命令的执行过程
  • -h

    :升级/刷新软件时输出hash记号:#

升级和刷新的区别

-U

表示升级或安装,如果没有老版本,就进行安装。如果有老版本,升级之后删除老版本

-F

表示刷新,前提是有老版本,有新版本就升级,没有新版本就升级,如果没有安装该软件则不会安装台软件

升级软件包

刷新软件包

卸载RPM软件包

使用

rpm -e

命令可以在Linux系统中卸载RPM软件包

卸载软件包参数常用说明

  • -e

    :从系统中移除指定的软件包

卸载指定软件包

删除软件包及其软件包依赖项

RPM数据库

参数

  • --initdb

    :确认有正确的数据库可以使用
  • --justdb

    :更新数据库,当不变动任何文件
  • --rebuliddb

    :以现有的数据库为主,重建一份数据库

初始化RPM数据库

从安装软件中重建RPM数据信息

杂项

rpm -ivh package.rpm 安装一个rpm包
rpm -ivh --nodeeps package.rpm 安装一个rpm包而忽略依赖关系警告
rpm -U package.rpm 更新一个rpm包但不改变其配置文件
rpm -F package.rpm 更新一个确定已经安装的rpm包
rpm -e package_name.rpm 删除一个rpm包
rpm -qa 显示系统中所有已经安装的rpm包
rpm -qa | grep httpd 显示所有名称中包含 "httpd" 字样的rpm包
rpm -qi package_name 获取一个已安装包的特殊信息
rpm -qg "System Environment/Daemons" 显示一个组件的rpm包
rpm -ql package_name 显示一个已经安装的rpm包提供的文件列表
rpm -qc package_name 显示一个已经安装的rpm包提供的配置文件列表
rpm -q package_name --whatrequires 显示与一个rpm包存在依赖关系的列表
rpm -q package_name --whatprovides 显示一个rpm包所占的体积
rpm -q package_name --scripts 显示在安装/删除期间所执行的脚本l
rpm -q package_name --changelog 显示一个rpm包的修改历史
rpm -qf /etc/httpd/conf/httpd.conf 确认所给的文件由哪个rpm包所提供
rpm -qp package.rpm -l 显示由一个尚未安装的rpm包提供的文件列表
rpm --import /media/cdrom/RPM-GPG-KEY 导入公钥数字证书
rpm --checksig package.rpm 确认一个rpm包的完整性
rpm -qa gpg-pubkey 确认已安装的所有rpm包的完整性
rpm -V package_name 检查文件尺寸、 许可、类型、所有者、群组、MD5检查以及最后修改时间
rpm -Va 检查系统中所有已安装的rpm包- 小心使用
rpm -Vp package.rpm 确认一个rpm包还未安装
rpm2cpio package.rpm | cpio --extract --make-directories *bin* 从一个rpm包运行可执行文件
rpm -ivh /usr/src/redhat/RPMS/`arch`/package.rpm 从一个rpm源码安装一个构建好的包
rpmbuild --rebuild package_name.src.rpm 从一个rpm源码构建一个 rpm 包