• 运维rpm语法


    Linux软件包分类

    rpm 常用命令
    1.安装一个包 
    # rpm -ivh 

    2.升级一个包 
    # rpm -Uvh 

    3.卸载一个包 
    # rpm -e 

    4.安装参数 
    --force 即使覆盖属于其它包的文件也强迫安装 
    --nodeps 如果该RPM包的安装依赖其它包,即使其它包没装,也强迫安装。 

    5.查询一个包是否被安装 
    # rpm -q < rpm package name> 

    6.得到被安装的包的信息 
    # rpm -qi < rpm package name> 

    7.列出该包中有哪些文件 
    # rpm -ql < rpm package name> 

    8.列出服务器上的一个文件属于哪一个RPM包 
    #rpm -qf 

    9.可综合好几个参数一起用 
    # rpm -qil < rpm package name> 

    10.列出所有被安装的rpm package 
    # rpm -qa 

    11.列出一个未被安装进系统的RPM包文件中包含有哪些文件? 
    # rpm -qilp < rpm package name>

    12.解压RPM包

    有时我们需要RPM包中的某个文件,如何解压RPM包呢?

    RPM包括是使用cpio格式打包的,因此可以先转成cpio然后解压,如下所示:

    rpm2cpio xxx.rpm | cpio -div



    <>
    一、安装 

    命令格式: 

    rpm -i ( or --install) options file1.rpm ... fileN.rpm 

    参数: 

    file1.rpm ... fileN.rpm 将要安装的RPM包的文件名 

    详细选项: 

    -h (or --hash) 安装时输出hash记号 (``#'') 
    --test 只对安装进行测试,并不实际安装。 
    --percent 以百分比的形式输出安装的进度。 
    --excludedocs 不安装软件包中的文档文件 
    --includedocs 安装文档 
    --replacepkgs 强制重新安装已经安装的软件包 
    --replacefiles 替换属于其它软件包的文件 
    --force 忽略软件包及文件的冲突 
    --noscripts 不运行预安装和后安装脚本 
    --prefix 将软件包安装到由 指定的路径下 
    --ignorearch 不校验软件包的结构 
    --ignoreos 不检查软件包运行的操作系统 
    --nodeps 不检查依赖性关系 
    --ftpproxy 用 作为 FTP代理 
    --ftpport 指定FTP的端口号为 

    通用选项 

    -v 显示附加信息 
    -vv 显示调试信息 
    --root 让RPM将指定的路径做为"根目录",这样预安装程序和后安 
    装程序都会安装到这个目录下 
    --rcfile 设置rpmrc文件为 
    --dbpath 设置RPM 资料库存所在的路径为 

    二、删除 

    命令格式: 

    rpm -e ( or --erase) options pkg1 ... pkgN 

    参数 

    pkg1 ... pkgN :要删除的软件包 

    详细选项 

    --test 只执行删除的测试 
    --noscripts 不运行预安装和后安装脚本程序 
    --nodeps 不检查依赖性 

    通用选项 

    -vv 显示调试信息 
    --root 让RPM将指定的路径做为"根目录",这样预安装程序和后安装 
    程序都会安装到这个目录下 
    --rcfile 设置rpmrc文件为 
    --dbpath 设置RPM 资料库存所在的路径为 

    三、升级 

    命令格式 

    rpm -U ( or --upgrade) options file1.rpm ... fileN.rpm 

    参数 

    file1.rpm ... fileN.rpm 软件包的名字 

    详细选项 

    -h (or --hash) 安装时输出hash记号 (``#'') 
    --oldpackage 允许"升级"到一个老版本 
    --test 只进行升级测试 
    --excludedocs 不安装软件包中的文档文件 
    --includedocs 安装文档 
    --replacepkgs 强制重新安装已经安装的软件包 
    --replacefiles 替换属于其它软件包的文件 
    --force 忽略软件包及文件的冲突 
    --percent 以百分比的形式输出安装的进度。 
    --noscripts 不运行预安装和后安装脚本 
    --prefix 将软件包安装到由 指定的路径下 
    --ignorearch 不校验软件包的结构 
    --ignoreos 不检查软件包运行的操作系统 
    --nodeps 不检查依赖性关系 
    --ftpproxy 用 作为 FTP代理 
    --ftpport 指定FTP的端口号为 

    通用选项 

    -v 显示附加信息 
    -vv 显示调试信息 
    --root 让RPM将指定的路径做为"根目录",这样预安装程序和后安装程序都会安装到这个目录下 
    --rcfile 设置rpmrc文件为 
    --dbpath 设置RPM 资料库存所在的路径为 

    四、查询 

    命令格式: 

    rpm -q ( or --query) options 

    参数: 

    pkg1 ... pkgN :查询已安装的软件包 

    详细选项 

    -p (or ``-'') 查询软件包的文件 
    -f 查询属于哪个软件包 
    -a 查询所有安装的软件包 
    --whatprovides 查询提供了 功能的软件包 
    -g 查询属于 组的软件包 
    --whatrequires 查询所有需要 功能的软件包 

    信息选项 

    显示软件包的全部标识 
    -i 显示软件包的概要信息 
    -l 显示软件包中的文件列表 
    -c 显示配置文件列表 
    -d 显示文档文件列表 
    -s 显示软件包中文件列表并显示每个文件的状态 
    --scripts 显示安装、卸载、校验脚本 
    --queryformat (or --qf) 以用户指定的方式显示查询信息 
    --dump 显示每个文件的所有已校验信息 
    --provides 显示软件包提供的功能 
    --requires (or -R) 显示软件包所需的功能 

    通用选项 

    -v 显示附加信息 
    -vv 显示调试信息 
    --root 让RPM将指定的路径做为"根目录",这样预安装程序和后安装程序都会安装到这个目录下 
    --rcfile 设置rpmrc文件为 
    --dbpath 设置RPM 资料库存所在的路径为 

    五、校验已安装的软件包 

    命令格式: 

    rpm -V ( or --verify, or -y) options 

    参数 

    pkg1 ... pkgN 将要校验的软件包名 

    软件包选项 

    -p Verify against package file 
    -f 校验所属的软件包 
    -a Verify 校验所有的软件包 
    -g 校验所有属于组 的软件包 

    详细选项 

    --noscripts 不运行校验脚本 
    --nodeps 不校验依赖性 
    --nofiles 不校验文件属性 

    通用选项 

    -v 显示附加信息 
    -vv 显示调试信息 
    --root 让RPM将指定的路径做为"根目录",这样预安装程序和后安装程序都会安装到这个目录下 
    --rcfile 设置rpmrc文件为 
    --dbpath 设置RPM 资料库存所在的路径为 

    六、校验软件包中的文件 

    语法: 

    rpm -K ( or --checksig) options file1.rpm ... fileN.rpm 

    参数: 

    file1.rpm ... fileN.rpm 软件包的文件名 

    Checksig--详细选项 

    --nopgp 不校验PGP签名 

    通用选项 

    -v 显示附加信息 
    -vv 显示调试信息 
    --rcfile 设置rpmrc文件为 


    七、其它RPM选项 

    --rebuilddb 重建RPM资料库 
    --initdb 创建一个新的RPM资料库 
    --quiet 尽可能的减少输出 
    --help 显示帮助文件 
    --version 显示RPM的当前版本

     
    Linux系统下的软件包分为源码包和二进制包两种类型。
    • 源码包:源码包里面包含了软件的源代码,在使用源码包进行软件安装的时候,计算机需要先经过编译,将源代码编译为计算机能够识别的机器语言,然后才能进行安装。
    • 二进制包:二进制包其实就是将源代码经过编译之后生成的机器语言包,例如:rethat系列的二进制包是RPM包,debian系列的二进制包是DEB包。

    源码包和二进制包的优缺点

    源码包的优点:

    • 开源,如果有足够的能力,可以修改源代码;
    • 可以更加自由地选择安装所需的功能;
    • 编译安装使得软件能够更大限度的适配自己的系统,比采用二进制安装更加稳定、效率更高;
    • 卸载方便,直接删除源码包的安装目录即可。

    源码包的缺点:

    • 安装过程步骤复杂,容易出现安装错误,而一旦报错,解决起来极为困难;
    • 编译过程时间较长,比使用二进制包安装花费时间更多。

    二进制包的优点:

    • 包管理系统简单,只通过几个命令就可以实现包的安装、升级、查询和卸载;
    • 安装速度比源码包安装快的多。

    二进制包的缺点:

    • 经过编译,不能再看到源代码;
    • 功能选择不如源码包灵活;
    • 依赖性(RPM依赖查询网址:http://www.rpmfind.net/)。

    RPM包命名规则

    RPM包文件默认安装位置

    /etc/ 配置文件默认安装目录
    /usr/bin/ 可执行的命令安装目录
    /usr/lib/ 所依赖的函数库文件保存位置
    /usr/share/doc/ 软件帮助文档保存位置
    /usr/share/man/ 软件手册保存位置

    rpm命令

    命令用途:RPM包的管理工具。
    命令语法:rpm [选项] [包全名]|[包名]|[系统文件名]
    常用选项:
    -i:安装(install);
    -U:升级(upgrade);
    -e:卸载(erase);
    -v:显示安装过程详细信息(verbose);
    -h:显示安装进度(hash);
    --nodeps:不检查依赖性;
    [java] view plain copy
     
     
     
    1. //安装httpd-2.2.15-29.el6.centos.x86_64.rpm  
    2. rpm -ivh httpd-2.2.15-29.el6.centos.x86_64.rpm   
    3. //升级httpd-2.2.15-29.el6.centos.x86_64.rpm  
    4. rpm -Uvh httpd-2.2.15-29.el6.centos.x86_64.rpm  
    5. //卸载httpd软件包  
    6. rpm -e httpd  
    -q:查询(query);
    -i:查询软件包信息(information);
    -l:查询包中文件的默认安装位置(list);
    -f:查询系统文件属于哪个软件包(file);
    -R:查询软件包的依赖性(requires);
    -a:查询所有(all);
    -p:查询未安装包信息(package);
    -V:校验指定RPM包中的文件(verify);
    标识 意义
    S 文件大小是否改变
    M 文件的类型(参照文件类型对照表)或文件的权限是否改变
    5 文件MD5校验值是否改变
    D 设备中的从代码是否改变
    L 文件路径是否改变
    U 文件的所有者是否改变
    G 文件的所属组是否改变
    T 文件的修改时间是否改变

    校验的文件类型对照表如下。

    标识 类型
    c 配置文件(config file)
    d 普通文档(documentation)
    g “鬼”文件(ghost file),指不该出现在这个RPM包中的文件
    l 授权文件(license file)
    r 描述文件(read me)
    [java] view plain copy
     
     
     
    1. //查询所有已安装的httpd软件包  
    2. rpm -qa | grep httpd  
    3. //查询已安装的httpd软件包的详细信息  
    4. rpm -qi  httpd  
    5. //查询未安装的httpd-2.2.15-29.el6.centos.x86_64.rpm软件包的详细信息  
    6. rpm -qip  httpd-2.2.15-29.el6.centos.x86_64.rpm   
    7. //查询已安装的httpd软件包中文件的安装位置  
    8. rpm -ql  httpd  
    9. //查询未安装的httpd-2.2.15-29.el6.centos.x86_64.rpm软件包中文件的安装位置  
    10. rpm -qlp  httpd-2.2.15-29.el6.centos.x86_64.rpm  
    11. //查询系统文件/usr/sbin/httpd所属的软件包  
    12. rpm -qf /usr/sbin/httpd  
    13. //查询已安装的httpd软件包的依赖性  
    14. rpm -qR httpd  
    15. //查询未安装的httpd-2.2.15-29.el6.centos.x86_64.rpm软件包的依赖性  
    16. rpm -qRp httpd-2.2.15-29.el6.centos.x86_64.rpm  
    17. //校验已安装的httpd软件包  
    18. rpm -V httpd  
    19. //校验未安装的httpd-2.2.15-29.el6.centos.x86_64.rpm软件包  
    20. rpm -Vp httpd-2.2.15-29.el6.centos.x86_64.rpm  

    注:在使用rpm命令时,若操作的包是未安装的软件包时,需使用包全名,而且要注意路径;若操作的是已经安装的软件包时,使用包名,系统会去/var/lib/rpm/中的数据库中搜索。

    cpio命令

    命令用途:创建软件备份档案和从备份档案中提取文件。
    命令语法:cpio [选项] [<|>] [文件|设备]
    常用选项:
    -o:执行copy-out模式,建立备份档案;
    -c:使用旧ASCII备份格式;
    -B:将输入/输出的区块大小改成5210Bytes;
    -i:执行copy-in模式,还原备份档案;
    -d:还原时如有需要则自动新建目录;
    -v:详细显示执行过程;
    -u:更新,用较新的文件覆盖旧的文件;
    [java] view plain copy
     
     
     
    1. //将test目录下的所有普通文件都备份到/bak/test.cpio   
    2. find /test/ -type f |cpio -covB > /bak/test.cpio   
    3. //将备份包/bak/test.cpio中的文件还原到相应的位置,如果有相同文件则进行覆盖  
    4. cpio -idvcu < /bak/test.cpio  

    rpm2cpio命令

    命令用途:将rpm软件包转换为cpio格式的文件。
    命令语法:rpm2cpio [包全名] 
    [java] view plain copy
     
     
     
    1. //将RPM包中的bin/ls还原到当前目录  
    2. rpm2cpio /mnt/Packages/coreutils-8.4-31.el6.x86_64.rpm | cpio -idv ./bin/ls     
  • 相关阅读:
    Redis命令行之Hash
    Redis命令行之String
    Redis配置
    访问者模式【行为模式】
    状态模式【行为模式】
    责任链模式【行为模式】
    观察者模式【行为模式】
    策略模式【行为模式】
    模板方法模式【行为模式】
    组合模式【结构模式】
  • 原文地址:https://www.cnblogs.com/duanlinxiao/p/10789160.html
Copyright © 2020-2023  润新知