Linux命令之rpm

mac2022-06-30  24

 rpm是一个包管理器,用于生成、安装、查询、核实、更新以及卸载单个软件包。一个包通常包括一个文件存档以及元数据,用于安装和删除存档文件。元数据包括助手脚本、文件属性和包的描述信息。

  必选选择以下基本模式之一:查询,验证,安装/升级/刷新/重新安装,卸载,设置所属主/所属组,显示查询标签和显示配置。

查询和验证包:

rpm {-q|--query} [select-options] [query-options]

rpm {-V|--verify} [select-options] [verify-options]

安装/升级/卸载包:

rpm {-i|--install} [install-options] PACKAGE_FILE …

rpm {-U|--upgrade} [install-options] PACKAGE_FILE …

rpm {-F|--freshen} [install-options] PACKAGE_FILE …

rpm {-e|--erase} [--allmatches] [--justdb] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME …

杂项:

rpm {--querytags|--showrc}

rpm {--setperms|--setugids} PACKAGE_NAME …

(1).软件包的类型

rpm二进制包,已经使用gcc编译。

tar源码包,需要编译。

1)rpm包的获取方式:

         1.光盘或系统镜像

         2.网站rpmfind.net

         3.部分软件可以去它的官网下载,如mysql、nginx等

2)rpm包格式说明:

zsh     -5             .0           .2   -28    .el7                     .x86_64.rpm

软件名-主版本号.次版本号.修订-发布.操作系统版本.软件包位数

  说明:修订表示第几次修改bug。发布表好似第几次发布。发布可能只对软件安装的默认参数做了修改而没有其他改动。

3)rpm使用时,什么情况下用全名,什么情况下用软件名?

  在安装和更新时使用全名。对已经安装过的软件包进行操作时使用软件名,比如查找已经安装的某个包或卸载包。

  注意:当一个rpm包安装到系统上,安装信息通常会保存在本地的/var/lib/rpm/目录下

4)rpm在安装完成后,相关文件会复制到不同的目录下,一般默认分布如下(具体由打包人员设置):

  /etc  存放配置文件

  /bin/sbin  一些可执行文件

  /lib  /lib64  一些库文件

  /usr/include  一些头文件

  /usr/share/doc  使用手册帮助文件

  /usr/share/man  man手册

(2).常用选项

1)前置模式选择选项

1 2 3 4 5 6 -q,--query 查询指定格式的包信息。 -V,--verify 验证将比较包中已安装文件的信息与从存储在rpm数据库中的包的元数据中获取的文件信息。 -i,--install 安装一个新软件包。 -U,--upgrade 升级或安装较新的软件包。与install类似,但会删除其他所有版本。 -F,--freshen 仅升级,必须存在早期版本的软件包。 -e,--erase 卸载

2)一般选项

1 2 -v 打印详细信息,通常会显示常规进度消息。 --version 打印包含正在使用的rpm版本号的单行

3)包选择选项(select-options)

1 2 3 -a,--all 指定所有文件 -f,--file FILE 指定文件所属的包 -p,--package PACKAGE_FILE 指定未安装的包文件,可以是ftp或http的URL。

4)包查询选项(query-options)

1 2 3 -i,--info 显示包的名称、版本和说明。如果指定了--queryformat ,则使用它。 -l,--list 列出包内所有文件 -R,--requires 列出包的依赖信息(关联软件包)

5)安装选项(install-options)

1 2 -h,--hash 打开包存档时打印50个散列标记(#),与-v或--verbose一起使用可以获得更好的显示效果 --prefix=<dir> 把软件包安装到指定目录下

(3).实例

1)从本地安装软件

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [root@xuexi ~]# rpm -ivh /mnt/Packages/zsh-5.0.2-28.el7.x86_64.rpm 警告:/mnt/Packages/zsh-5.0.2-28.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY 准备中...                          ################################# [100%] 正在升级/安装...     1:zsh-5.0.2-28.el7                 ################################# [100%] [root@xuexi ~]# cat /etc/shells /bin/sh /bin/bash /sbin/nologin /usr/bin/sh /usr/bin/bash /usr/sbin/nologin /bin/tcsh /bin/csh /bin/zsh

2)从网上下载直接安装CentOS epel扩展yum源

  注:epel源是对CentOS7系统中自带的base源的扩展。针对有依赖关系的包安装,建议直接使用yum安装。

1 2 3 4 5 6 [root@xuexi ~]# rpm -ivh http: //dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm 获取http: //dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm 警告:/ var /tmp/rpm-tmp.Wl3pdy: 头V3 RSA/SHA256 Signature, 密钥 ID 352c64e5: NOKEY 准备中...                          ################################# [100%] 正在升级/安装...     1:epel-release-7-11                ################################# [100%]

3)查询指定包是否安装

1 2 3 4 [root@xuexi ~]# rpm -q zsh zsh-5.0.2-28.el7.x86_64 [root@xuexi ~]# rpm -qa zsh zsh-5.0.2-28.el7.x86_64

4)查看所有已安装包

1 2 3 4 5 6 [root@xuexi ~]# rpm -qa [root@xuexi ~]# rpm -qa | grep vim       //查询所有已安装包中带vim关键字的包 vim-filesystem-7.4.160-5.el7.x86_64 vim-enhanced-7.4.160-5.el7.x86_64 vim-minimal-7.4.160-5.el7.x86_64 vim-common-7.4.160-5.el7.x86_64

5)查询文件或命令属于哪个安装包

1 2 3 4 5 6 [root@xuexi ~]# rpm -qf /usr/bin filesystem-3.2-25.el7.x86_64 [root@xuexi ~]# which find       //查看find命令的路径 /usr/bin/find [root@xuexi ~]# rpm -qf /usr/bin/find findutils-4.5.11-6.el7.x86_64

6)查询包的详细信息或作用

  注意:没有安装才使用-p选项

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 [root@xuexi ~]# rpm -qpi /mnt/Packages/php-mysql-5.4.16-45.el7.x86_64.rpm  //没有安装 警告:/mnt/Packages/php-mysql-5.4.16-45.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY Name        : php-mysql Version     : 5.4.16 Release     : 45.el7 Architecture: x86_64 Install Date: (not installed) Group       : Development/Languages Size        : 237547 License     : PHP Signature   : RSA/SHA256, 2018年04月25日 星期三 19时36分39秒, Key ID 24c6a8a7f4a80eb5 Source RPM  : php-5.4.16-45.el7.src.rpm Build Date  : 2018年04月13日 星期五 03时12分53秒 Build Host  : x86-01.bsys.centos.org Relocations : (not relocatable) Packager    : CentOS BuildSystem <http: //bugs.centos.org> Vendor      : CentOS URL         : http: //www.php.net/ Summary     : A module  for  PHP applications that use MySQL databases Description : The php-mysql package contains a dynamic shared  object  that will add MySQL database support to PHP. MySQL  is  an  object -relational database management system. PHP  is  an HTML-embeddable scripting language. If you need MySQL support  for  PHP applications, you will need to install this  package and the php package. [root@xuexi /]# rpm -qi zsh      //已经安装 Name        : zsh Version     : 5.0.2 Release     : 28.el7 Architecture: x86_64 Install Date: 2019年01月10日 星期四 13时12分01秒 Group       : System Environment/Shells Size        : 5855982 License     : MIT Signature   : RSA/SHA256, 2017年08月11日 星期五 04时28分17秒, Key ID 24c6a8a7f4a80eb5 Source RPM  : zsh-5.0.2-28.el7.src.rpm Build Date  : 2017年08月02日 星期三 18时52分37秒 Build Host  : c1bm.rdu2.centos.org Relocations : (not relocatable) Packager    : CentOS BuildSystem <http: //bugs.centos.org> Vendor      : CentOS URL         : http: //zsh.sourceforge.net/ Summary     : Powerful interactive shell Description : The zsh shell  is  a command interpreter usable  as  an interactive login shell and  as  a shell script command processor.  Zsh resembles the ksh shell (the Korn shell), but includes many enhancements.  Zsh supports command line editing, built- in  spelling correction, programmable command completion, shell functions (with autoloading), a history mechanism, and more.

7)查询包生成或将会生成的文件

1 2 3 4 5 6 7 8 9 [root@xuexi /]# rpm -ql zsh      //已安装 [root@xuexi /]# rpm -qpl /mnt/Packages/php-mysql-5.4.16-45.el7.x86_64.rpm        //未安装 警告:/mnt/Packages/php-mysql-5.4.16-45.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY /etc/php.d/mysql.ini /etc/php.d/mysqli.ini /etc/php.d/pdo_mysql.ini /usr/lib64/php/modules/mysql.so /usr/lib64/php/modules/mysqli.so /usr/lib64/php/modules/pdo_mysql.so

8)验证软件包内容是否被修改,实际应用于验证命令有没有被黑客修改

1 2 3 4 5 6 7 8 9 10 11 [root@xuexi ~]# rpm -Va      //验证所有包 [root@xuexi ~]# which find /usr/bin/find [root@xuexi ~]# rpm -qf /usr/bin/find findutils-4.5.11-6.el7.x86_64 [root@xuexi ~]# rpm -Vf /usr/bin/find [root@xuexi ~]# echo aaa >> /usr/bin/find [root@xuexi ~]# rpm -Vf /usr/bin/find        //通过文件检查 S.5....T.    /usr/bin/find [root@xuexi ~]# rpm -V findutils         //通过包检查 S.5....T.    /usr/bin/find

  注:如果出现的全是点,表示测试通过。出现下面的字符代表某项测试失败:

1 2 3 4 5 6 7 8 9 5   MD5校验和是否改变,也看成文件内容是否改变 S   文件长度,大小是否改变 L   符号链接,文件路径是否改变 T   文件修改日期是否改变 D   设备 U   用户 G   用户组 M   模式 ?  不可读文件

  后面c文件名,表示的是文件类型

1 2 3 4 5 c   配置文件 d   普通文件 g   不该出现的文件,意思是包不含这个文件 l   授权文件(licase file) r   描述文件

  注意:验证时参考了/var/lib/rpm目录下的rpm数据库信息。

9)卸载

1 [root@xuexi ~]# rpm -e zsh

  注意:--nodeps忽略依赖,但不建议在卸载时使用rpm去卸载有依赖关系的包,应该用yum。

10)不存在就安装,存在就升级

1 2 3 4 5 [root@xuexi ~]# rpm -Uvh /mnt/Packages/zsh-5.0.2-28.el7.x86_64.rpm 警告:/mnt/Packages/zsh-5.0.2-28.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY 准备中...                          ################################# [100%] 正在升级/安装...     1:zsh-5.0.2-28.el7                 ################################# [100%]

 (4).扩展

srpm源码包(.src.rpm),私人定制rpm。安装rpmbuild --rebuild XXX.arc.rpm。很少使用,用兴趣可以了解下。

转载于:https://www.cnblogs.com/Jeely/p/11355920.html

最新回复(0)