zoukankan      html  css  js  c++  java
  • Linux-rpm

     跟上一篇一样,本文学习内容为B站上 史上最牛的Linux视频教程—兄弟连 课程学习的笔记,在此感谢李明老师和沈超老师,同时感谢UP的上传.

    一、rpm包的命名规则和依赖关系

    1.包全名和包名
    1.1 包全名:操作的包是没有安装的软件包时,使用包全名.而且要注意路径.
    1.2 包名:操作的包是已经安装的软件包时,使用包名.是搜索 /var/lib/rpm 中的数据库

    2.RPM 包命名规则

    httpd-2.2.15-15.el6.centos.1.i686.rpm
    httpd 软件包名
    2.2.15 软件版本
    15 软件发布的次数
    e16.centos 适合的Linux平台
    i686 适合的硬件平台
    rpm rpm 包扩展名

    3.RPM 依赖性
    3.1 树形依赖: a->b->c
    3.2 环形依赖: a->b->c->a

    二、rpm包的安装
    位置:镜像.iso/Packages
    1.首先将镜像挂载,并进入安装包目录下

    mkdir /mnt/cdrom
    mount /dev/sr0 /mnt/cdrom
    cd /mnt/cdrom/Packages

    2.rpm 安装命令

    rpm -ivh (绝对路径的)包全名
    选项:
    -i(install) 安装 -v(verbose) 显示详细信息 -h(hash) 显示进度 --nodeps 不检测依赖性(不建议使用,否则安装了也不能使用或者功能不全)

    3.尝试安装mysql 安装包

    rpm -ivh mysql-connector-odbc-5.2.5-8.el7.x86_64.rpm

    如图,提示安装mysql-connector-odbc-5.2.5-8.el7.x86_64.rpm必须要有libodbcinst.so.2()(64bit)

    以so.2 这种格式为结尾的都是模块,模块所需要的rpm包通过模块依赖查询网站:www.rpmfind.net这个地址查询


    通过查询,得知需要安装unixODBC-2.3.1-14.el7.x86_64.rpm 按步骤安装,即可安装成功

     

    4.升级RPM 包

    rpm -Uvh (绝对路径)更高版本的包全名
    选项:
    -U (upgrade) 升级

    5. 卸载

    rpm -e 包名
    
    选项: 
    -e(erase) 卸载(擦除)
    --nodeps 不检查依赖性

    三、rpm 查询
    1. 查询xx是否安装,如果为安装,则提示没有被安装

    rpm -q 包名
    
    选项: 
    -q(query) 查询

     

    2.查询所有已经安装的包

    rpm -qa
    
    选项:
    -a(all) 所有

    配合管道符号,也能查询包,如查询所有httpd 的包

    rpm -qa | grep httpd

     

    3.查询软件包详细信息

    rpm -qi 包名
    
    选项:
    -i(infomation) 查询软件信息
    -p(package) 查询未安装包所加选项

    软件包的信息在作者发出这个软件包之前就已经写到包的信息里了,加选项-i 进行查看
    注意位置不能选项的位置不能颠倒,否则只能查出rpm 包安装时候的包全名

     

    查询未安装包的信息一定要加上包的路径

     

    4.查询包中的文件安装位置

    rpm -ql 包名 (-qlp 绝对路径的包全名)
    
    选项:
    -l (list) 列表

    5.查询系统文件属于哪个RPM 包

    rpm -qf 系统文件名(必须是通过包安装时候带的文件,不能是手工创建的)
    
    选项: 
    -f(file) 查询系统文件属于哪个软件包

     

    6.查询软件包的依赖性

    rpm (-qR 包名) -qRp 绝对路径的未安装包
    
    选项: 
    -R(requires) 查询软件包的依赖性
    -p(package) 未安装包的选项

     

    四、RPM 包校验

    rpm -V 已安装的包名
    
    选项: 
    -V 校验指定RPM 包中的文件(verify)

    yum 如果未修改,则不会有任何提示或者返回值.

     

    尝试修改yum 的配置文件

     

    再次校验查询

     

    验证内容的8个信息的具体内容如下:

    1 S 文件的大小是否发生改变
    2 M 文件的类型或者文件的权限(rwx)是否被改变
    3 5 文件MD5校验和是否改变(可以看成文件内容是否改变)
    4 D 设备的中,从代码是否改变
    5 L 文件的路径是否改变
    6 U 文件的属主(所有者) 是否改变
    7 G 文件的属组(所属组) 是否改变
    8 T 文件的修改时间是否改变

     

    文件类型

    1 c 配置文件(config file)
    2 d 普通文档(documentation)
    3 g ""文件(ghost file),很少见,就是该文件不应该被这个RPM包所包含
    4 l 授权文件(license file)
    5 r 描述文件(read me)

    如果出现ghost file ,则需要谨慎对待,你所安装的文件可能非原作者所发布的文件.

    五、RPM包中文件的提取
    使用场景:不小心误删了系统命令(如ls,dir等),在不重装系统的情况下恢复该命令的功能

    1.rpm2cpio 绝对路径的包全名 | cpio -idv .文件的绝对路径

    命令说明:
    1).rpm2cpio 将rpm 包转换未cpio 格式的命令
    2).cpio 是一个标准工具, 它用于创建软件档案文件和从档案文件中提取文件
    cpio 选项说明:
    1). -i copy-in 模式,还原
    2).-d 还原时自动新建目录
    3).-v 显示还原过程

    2.查询dir 命令属于哪个rpm 包

    rpm -qf /bin/dir

    3.1 移动dir文件,模拟删除dir 命令,在移动前,确认dir 命令可以正常使用

    dir
    mv /bin/dir /tmp
    dir

    3.2使用命令,提取dir 文件到当前目录,并通过ls查看一下是否提取成功 ( 为换行符,下一行出现>,则可以继续输入命令)

    rpm2cpio /mnt/cdrom/Packages/coreutils-8.22-24.el7.x86_64.rpm | 
    > cpio -idv./usr/bin/dir
    ls

     

    3.3 测试dir 命令是否可以使用,将/temp/usr/bin/dir 复制到 /bin/ 下 ,然后再测试dir 是否可以使用

    dir
    cp /temp/usr/bin/dir /bin
    dir

     

     总结,最后一个提取的时候,由于原课件用的是CentOS 5.1的版本,所以提取的路径是./bin/ls,而笔者用的是CentOS 7.8 的版本,无论测试的命令是ls 还是dir,都是需要从./usr/bin/ 提取

  • 相关阅读:
    USACO Meteor Shower
    小技巧—取模防负
    CSP-S2019 D2T1 Emiya家今天的饭
    重谈DFS序、时间戳和欧拉序
    JDOJ 1842 Magictree
    CSP-S2019 D1T1 格雷码
    洛谷 P3919 【模板】可持久化线段树 1(可持久化数组)
    node+express api编写实战(一):环境安装及启动
    宝塔pureftpd设置FTP后,可连接,但无法上传、新建、覆盖文件的解决方法
    flex布局、css3选择器
  • 原文地址:https://www.cnblogs.com/yungiu/p/15528486.html
Copyright © 2011-2022 走看看