Linux命令之rpm
  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
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)前置模式选择选项
-q,--query 查询指定格式的包信息。
-V,--verify 验证将⽐较包中已安装⽂件的信息与从存储在rpm数据库中的包的元数据中获取的⽂件信息。
-i,--install 安装⼀个新软件包。
-U,--upgrade 升级或安装较新的软件包。与install类似,但会删除其他所有版本。
-F,--freshen 仅升级,必须存在早期版本的软件包。
-e,--erase 卸载
2)⼀般选项
-v 打印详细信息,通常会显⽰常规进度消息。
--version 打印包含正在使⽤的rpm版本号的单⾏
3)包选择选项(select-options)
-a,--all 指定所有⽂件
-f,--file FILE 指定⽂件所属的包
-p,--package PACKAGE_FILE 指定未安装的包⽂件,可以是ftp或http的URL。
4)包查询选项(query-options)
-i,--info 显⽰包的名称、版本和说明。如果指定了--queryformat ,则使⽤它。
-l,--list 列出包内所有⽂件
-
R,--requires 列出包的依赖信息(关联软件包)
5)安装选项(install-options)
-h,--hash 打开包存档时打印50个散列标记(#),与-v或--verbose⼀起使⽤可以获得更好的显⽰效果
--prefix=<dir> 把软件包安装到指定⽬录下
(3).实例
1)从本地安装软件
[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安装。[root@xuexi ~]# rpm -ivh /pub/arch.rpm
获取/pub/arch.rpm
警告:/var/tmp/rpm-tmp.Wl3pdy: 头V3 RSA/SHA256 Signature, 密钥 ID 352c64e5: NOKEY
准备中...                          >>>>>>### [100%]
正在升级/安装...
1:epel-release-7-11                >>>>>>### [100%]
3)查询指定包是否安装
[root@xuexi ~]# rpm -q zsh
zsh-5.0.2-28.el7.x86_64
[root@xuexi ~]# rpm -qa zshlinux在线命令查询平台
zsh-5.0.2-28.el7.x86_64
4)查看所有已安装包
[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)查询⽂件或命令属于哪个安装包
[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选项
[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  : s.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <>
Vendor      : CentOS
URL        : www.php/
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  : s.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <>
Vendor      : CentOS
URL        : zsh.sourceforge/
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)查询包⽣成或将会⽣成的⽂件
[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)验证软件包内容是否被修改,实际应⽤于验证命令有没有被⿊客修改
[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      //通过⽂件检查
T.    /usr/bin/find
[root@xuexi ~]# rpm -V findutils        //通过包检查
T.    /usr/bin/find
  注:如果出现的全是点,表⽰测试通过。出现下⾯的字符代表某项测试失败:
5  MD5校验和是否改变,也看成⽂件内容是否改变
S  ⽂件长度,⼤⼩是否改变
L  符号链接,⽂件路径是否改变
T  ⽂件修改⽇期是否改变
D  设备
U  ⽤户
G  ⽤户组
M  模式
不可读⽂件
  后⾯c⽂件名,表⽰的是⽂件类型
c  配置⽂件
d  普通⽂件
g  不该出现的⽂件,意思是包不含这个⽂件
l  授权⽂件(licase file)
r  描述⽂件
  注意:验证时参考了/var/lib/rpm⽬录下的rpm数据库信息。
9)卸载
[root@xuexi ~]# rpm -e zsh
  注意:--nodeps忽略依赖,但不建议在卸载时使⽤rpm去卸载有依赖关系的包,应该⽤yum。
10)不存在就安装,存在就升级
[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。很少使⽤,⽤兴趣可以了解下。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。

发表评论