zoukankan      html  css  js  c++  java
  • Linux系统之RPM包管理

    01 RPM包管理

    1.1RPM概述

    RPM是RedHat Package Manager的缩写,由Redhat公司开发出来的。
    RPM是通过数据库记录的方式来将你所需要的软件安装到你的Linux主机上一套管理程序。也就是说,你的linux系统中存在着一个关于RPM的数据库,它记录了安装包以及包之间依赖相关性。

    1.软件包类型

    分类 安装 版本
    rpm包 预先编译打包,安装简单 软件版本较低
    源码包 手动编译打包,安装频繁 软件版本随意
    二进制包 解压即可使用,安装简单 不能修改源码

    2.常见的软件包

    注意:不管是源码包,还是二进制包,安装时都可能会有依赖关系!

    系统平台 包类型 工具 自动解决依赖
    RedHat/Centos RPM rpm yum
    Ubuntu/Debian DPKG dpkg apt

    3.RPM获取途径

    1. RedHat光盘或官方网站
    2. RPM查询官网网站
    3. Nginx软件官网网站

    4.RPM软件包命名规则

    RPM包命名以-将软件分成了若⼲部分 bash-4.2.46-28.el7.x86_64.rpm

    name: 软件包名称
    version: 版本号, 主版本, 重⼤更新. 次版本, ⼦功能更新. 修订号, 修复bug
    release: 发布版本 el6, el7(hostnamectl)
    arch: 系统平台, i386、x86_64(uname -m,hostnamectl)

    rpm包的组成:

    安装释放的⽂件
    软件包的元数据(版本,发布号,架构,描述,要求,更改⽇志等)
    脚本:安装前执⾏的脚本和安装后的脚本

    5.查看系统光驱中RPM软件包

    如果你的系统中还有系统的安装盘,⾸先我们让虚拟机链接上我们的系统安装盘,然后我们可以 通过mount /dev/cdrom /mnt 命令把光驱挂载到/mnt⽬录下,那么你会在/mnt/Packages⽬录下 看到很多 .rpm 的包⽂件。

    [root@localhost ~]# mount /dev/cdrom /mnt/
    mount: /dev/sr0 is write-protected, mounting read-only
    [root@localhost ~]# ls /mnt/
    CentOS_BuildTag  EULA  images    LiveOS    repodata              RPM-GPG-KEY-CentOS-Testing-7
    EFI              GPL   isolinux  Packages  RPM-GPG-KEY-CentOS-7  TRANS.TBL
    
    [root@localhost ~]# ls /mnt/Packages/ |head
    

    1.2RPM包安装

    -i: 安装
    -v: 详细信息
    -h: 安装进度
    --test: 测试是否能够安装成功
    --force: 强制重新安装
    --nodeps: 忽略依赖关系
    
    //安装软件包,需要指定软件包绝对路径
    [root@xmh ~]# rpm -ivh /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm  
    [root@xmh ~]# rpm -ivh /mnt/Packages/vsftpd-3.0.2-22.el7.x86_64.rpm 
    
    //在软件包所在⽬录下,可以不指定绝对路径
    [root@xmh ~]# cd /mnt/Packages/
    [root@xmh Packages]# rpm -ivh zsh-5.0.2-28.el7.x86_64.rpm 
    
    //测试⼀个软件包是否能在该系统上安装
    [root@xmh ~]# rpm -ivh --test /mnt/Packages/vsftpd-3.0.2-22.el7.x86_64.rpm 
    
    //如果软件包存在, 强制再次安装
    [root@xmh ~]# rpm -ivh --force /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm   
    
    //安装samba服务需要依赖其他组件, 使⽤--nodeps可重新强制安装 
    [root@xmh ~]# rpm -ivh --nodeps /mnt/Packages/samba-4.6.2-8.el7.x86_64.rpm
    

    1.3RPM包查询

    使⽤rpm命令查询已安装好的rpm包, 需要了解如下参数:

    rpm -q #查看指定软件包是否安装 
    rpm -qa #查看系统中已安装的所有RPM软件包列表 
    rpm -qi #查看指定软件的详细信息 
    rpm -ql #查询指定软件包所安装的⽬录、⽂件列表 
    rpm -qc #查询指定软件包的配置⽂件 
    rpm -qd #查询指定软件包的帮助⽂档 
    rpm -qf #查询⽂件或⽬录属于哪个RPM软件 
    rpm -q --scripts #查询rpm包安装前和安装后执⾏的脚本
    
    //查询未安装的软件包信息 
    rpm -qip #查询未安装的rpm包详细信息 
    rpm -qlp #查询未安装的软件包会产⽣哪些⽂件
    
    //查询vsftpd这个rpm包是否安装 
    [root@xmh ~]# rpm -q vsftpd
    
    //模糊查找系统已安装的rpm包 
    [root@xmh ~]# rpm -qa |grep ftp
    
    //查询vsftpd软件包的相关信息 
    [root@xmh ~]# rpm -qi vsftpd
    
    //查询rpm包所安装的⽂件 
    [root@xmh ~]# rpm -ql vsftpd
    
    //查询rpm包相关的配置⽂件 
    [root@xmh ~]# rpm -qc vsftpd
    
    //查询配置⽂件或命令来⾃于哪个rpm包 (命令不存在系统则无法查询)
    [root@xmh ~]# rpm -qf /etc/vsftpd/vsftpd.conf 
    [root@xmh ~]# rpm -qf /usr/sbin/vsftpd
    
    //查询未安装的软件包会产⽣哪些⽂件 
    [root@xmh ~]# rpm -qlp /mnt/Packages/samba-3.6.23-41.el6.x86_64.rpm
    
    //查询未安装的软件包会产⽣哪些⽂件
    [root@xmh ~]# rpm -qip /mnt/Packages/samba-3.6.23-41.el6.x86_64.rpm
    

    1.4RPM包升级

    -U 如果⽼版本不存在,就全新安装,如果存在有新版即升级
    -f ⽼版本必须存在,才升级

    //如果有新版则升级, 软件升级不要跨操作系统主版本号
    [root@xmh ~]# rpm -Uvh /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm
    

    1.5RPM包卸载

    卸载包时需要先把依赖的包卸载掉,如果依赖的包是系统所必须的,那就不能卸载这个包,否则 会造成系统崩溃。

    //先查询, 然后卸载 
    [root@xmh ~]# rpm -qa |grep zsh 
    [root@xmh ~]# rpm -e zsh --nodeps
    [root@xmh ~]# rpm -e zsh
    

    1.6RPM包校验

    软件相关的数据库存放于/var/lib/rpm⽬录

    [root@xmh ~]# rpm -V vsftpd
    SM5....T.  c /etc/vsftpd/user_list
    
    S #⽂件的容量⼤⼩是否被改变 
    M #⽂件的类型或者⽂件的属性是否被修改 
    5 #MD5这⼀种指纹加密的内容已经不同 
    D #装置的主/次代码已经改变 
    L #路径已经被改变 
    U #⽂件的所属主已被修改 
    G #⽂件的所属组已被修改 
    T #⽂件的创建时间已被改变
    
  • 相关阅读:
    java.lang.NoClassDefFoundError: TagSupport 错误
    ${pageContext.request.contextPath}的作用
    JS获取table表格任意单元格值
    数据库导出为Excel
    requestScope含义
    每种创伤,都是另一种成熟
    关于AJAX
    the public type xxx must be defined in its own file
    MyEclipse取消Show in Breadcrumb的方法
    Sql2005里获取表的结构SQL
  • 原文地址:https://www.cnblogs.com/jasonminghao/p/12310386.html
Copyright © 2011-2022 走看看