每天一个Linux命令(57)rpm命令

时间:2023-03-09 20:11:16
每天一个Linux命令(57)rpm命令

    rpm是一个功能十分强大的软件包管理系统。

    (1)用法:

    用法:  rpm  [参数]  [包名]

    (2)功能:

    功能:  使得在Linux下安装、升级和删除软件包的工作变得容易,并且具有查询、验证软件包的功能。与图形化工具相比,使用命令行可以获得更大的灵活性。

    (3)选项参数:

1) -l                显示套件的文件列表            

2) -h (or --hash)           安装时输出hash记号 ("#''),用来显示安装进度

3) -i                显示套件的相关信息
      4) -U<套件档> --upgrade<套件档>  升级指定的套件档

5) -p<套件档>             查询指定的RPM套件档

6) -q                 查看软件包是否被安装

7) -v                显示指令执行过程

8) -a                查询所有套件

9) -R                显示套件的关联性信息

    (4)实例:

1)[root@localhost sunmeng]rpm -q mariadb-5.5.47-1.el7_2.x86_64      查询指定软件包是否被安装

[root@localhost sunmeng]rpm -q mariadb-5.5.-.el7_2.x86_64
mariadb-5.5.-.el7_2.x86_64
[root@localhost sunmeng]# rpm -q httpd
未安装软件包 httpd

2)[root@localhost packages]# rpm -qa | grep httpd               查询所有套件中已经安装的软件包(与httpd有关的软件包)

[root@localhost packages]# rpm -qa | grep httpd
httpd-2.4.-.el7.centos..x86_64
httpd-tools-2.4.-.el7.centos..x86_64
[root@localhost packages]# yum search httpd-2.4.-.el7.centos..x86_64 //在网络软件库并没有这个包
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.cqu.edu.cn
* extras: mirrors.cqu.edu.cn
* updates: mirrors.cqu.edu.cn
警告:没有匹配 httpd-2.4.-.el7.centos..x86_64 的软件包
No matches found
[root@localhost packages]# yum info httpd-2.4.-.el7.centos..x86_64        //但本地确实已经安装了这个软件包:系统自带
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.cqu.edu.cn
* extras: mirrors.cqu.edu.cn
* updates: mirrors.cqu.edu.cn
已安装的软件包
名称 :httpd
架构 :x86_64
版本 :2.4.
发布 :.el7.centos.
大小 :9.4 M
源 :installed
来自源:updates
简介 : Apache HTTP Server
网址 :http://httpd.apache.org/
协议 : ASL 2.0
描述 : The Apache HTTP Server is a powerful, efficient, and extensible
: web server. [root@localhost packages]# yum info httpd-tools-2.4.-.el7.centos..x86_64
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.cqu.edu.cn
* extras: mirrors.cqu.edu.cn
* updates: mirrors.cqu.edu.cn
已安装的软件包
名称 :httpd-tools
架构 :x86_64
版本 :2.4.
发布 :.el7.centos.
大小 : k
源 :installed
来自源:updates
简介 : Tools for use with the Apache HTTP Server
网址 :http://httpd.apache.org/
协议 : ASL 2.0
描述 : The httpd-tools package contains tools which can be used with
: the Apache HTTP Server.

3)[root@localhost packages]# rpm -e mariadb-5.5.47-1.el7_2.x86_64        卸载指定的安装过的包

[root@localhost packages]# yum install mysql              //已经安装过
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.cqu.edu.cn
* extras: mirrors.cqu.edu.cn
* updates: mirrors.cqu.edu.cn
软件包 :mariadb-5.5.-.el7_2.x86_64 已安装并且是最新版本
无须任何处理
[root@localhost packages]# rpm -e mariadb-5.5.-.el7_2.x86_64   //卸载指定安装包  
[root@localhost packages]# yum install mysql              //重新下载指定安装包
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.cqu.edu.cn
* extras: mirrors.cqu.edu.cn
* updates: mirrors.cqu.edu.cn
正在解决依赖关系
--> 正在检查事务
---> 软件包 mariadb.x86_64.1.5.5.47-.el7_2 将被 安装
--> 解决依赖关系完成 依赖关系解决 ==========================================================================================================================================
Package 架构 版本 源 大小
==========================================================================================================================================
正在安装:
mariadb x86_64 :5.5.-.el7_2 updates 8.9 M 事务概要
==========================================================================================================================================
安装 软件包 总下载量:8.9 M
安装大小: M
Is this ok [y/d/N]: y
Downloading packages:
mariadb-5.5.-.el7_2.x86_64. FAILED
http://mirrors.cug.edu.cn/centos/7.2.1511/updates/x86_64/Packages/mariadb-5.5.47-1.el7_2.x86_64.rpm: [Errno 12] Timeout on http://mirrors.cug.edu.cn/centos/7.2.1511/updates/x86_64/Packages/mariadb-5.5.47-1.el7_2.x86_64.rpm: (28, 'Resolving timed out after 30419 milliseconds')
正在尝试其它镜像。
mariadb-5.5.-.el7_2.x86_64.rpm | 8.9 MB ::
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
警告:RPM 数据库已被非 yum 程序修改。
正在安装 : :mariadb-5.5.-.el7_2.x86_64 /
验证中 : :mariadb-5.5.-.el7_2.x86_64 / 已安装:
mariadb.x86_64 :5.5.-.el7_2 完毕!

4)[root@localhost packages]# rpm -qpR gnome-bluetooth-3.14.1-1.el7.x86_64.rpm     查看指定软件包的依赖关系

[root@localhost packages]# find -name "gnome-bluetooth-3.14.1-1.el7.x86_64.rpm" -exec ls -l {} \;      //在当前目录下能够找到指定.rpm包
-rw-r--r--. root root 11月 ./gnome-bluetooth-3.14.-.el7.x86_64.rpm
[root@localhost packages]# rpm -qpR gnome-bluetooth-3.14.-.el7.x86_64.rpm                   //查看它依赖的文件
/bin/sh
/bin/sh
/bin/sh
bluez >= 5.0
desktop-file-utils
desktop-file-utils
gnome-bluetooth-libs = :3.14.-.el7
libatk-1.0.so.()(64bit)
libc.so.()(64bit)
libc.so.(GLIBC_2.2.5)(64bit)
libc.so.(GLIBC_2.)(64bit)
libcairo-gobject.so.()(64bit)
libcairo.so.()(64bit)
libgdk-.so.()(64bit)
libgdk_pixbuf-2.0.so.()(64bit)
libgio-2.0.so.()(64bit)
libglib-2.0.so.()(64bit)
libgmodule-2.0.so.()(64bit)
libgnome-bluetooth.so.()(64bit)
libgobject-2.0.so.()(64bit)
libgtk-.so.()(64bit)
libm.so.()(64bit)
libpango-1.0.so.()(64bit)
libpangocairo-1.0.so.()(64bit)
libpthread.so.()(64bit)
libudev.so.()(64bit)
pulseaudio-module-bluetooth
rpmlib(CompressedFileNames) <= 3.0.-
rpmlib(FileDigests) <= 4.6.-
rpmlib(PayloadFilesHavePrefix) <= 4.0-
rtld(GNU_HASH)
rpmlib(PayloadIsXz) <= 5.2-
[root@localhost packages]# yum deplist gnome-bluetooth-3.14.-.el7.x86_64.rpm        //yum命令查询依赖关系
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.cqu.edu.cn
* extras: mirrors.cqu.edu.cn
* updates: mirrors.cqu.edu.cn
软件包:gnome-bluetooth.x86_64 :3.14.-.el7
依赖:/bin/sh
provider: bash.x86_64 4.2.-.el7
依赖:bluez >= 5.0
provider: bluez.x86_64 5.23-.el7
依赖:desktop-file-utils
provider: desktop-file-utils.x86_64 0.22-.el7
依赖:gnome-bluetooth-libs = :3.14.-.el7
provider: gnome-bluetooth-libs.x86_64 :3.14.-.el7
provider: gnome-bluetooth-libs.i686 :3.14.-.el7
依赖:libatk-1.0.so.()(64bit)
provider: atk.x86_64 2.14.-.el7
依赖:libc.so.()(64bit)
provider: glibc.x86_64 2.17-.el7_2.
依赖:libc.so.(GLIBC_2.2.5)(64bit)
provider: glibc.x86_64 2.17-.el7_2.
依赖:libc.so.(GLIBC_2.)(64bit)
provider: glibc.x86_64 2.17-.el7_2.
依赖:libcairo-gobject.so.()(64bit)
provider: cairo-gobject.x86_64 1.14.-.el7
依赖:libcairo.so.()(64bit)
provider: cairo.x86_64 1.14.-.el7
依赖:libgdk-.so.()(64bit)
provider: gtk3.x86_64 3.14.-.el7
依赖:libgdk_pixbuf-2.0.so.()(64bit)
provider: gdk-pixbuf2.x86_64 2.31.-.el7
依赖:libgio-2.0.so.()(64bit)
provider: glib2.x86_64 2.42.-.el7
依赖:libglib-2.0.so.()(64bit)
provider: glib2.x86_64 2.42.-.el7
依赖:libgmodule-2.0.so.()(64bit)
provider: glib2.x86_64 2.42.-.el7
依赖:libgnome-bluetooth.so.()(64bit)
provider: gnome-bluetooth-libs.x86_64 :3.14.-.el7
依赖:libgobject-2.0.so.()(64bit)
provider: glib2.x86_64 2.42.-.el7
依赖:libgtk-.so.()(64bit)
provider: gtk3.x86_64 3.14.-.el7
依赖:libm.so.()(64bit)
provider: glibc.x86_64 2.17-.el7_2.
依赖:libpango-1.0.so.()(64bit)
provider: pango.x86_64 1.36.-.el7
依赖:libpangocairo-1.0.so.()(64bit)
provider: pango.x86_64 1.36.-.el7
依赖:libpthread.so.()(64bit)
provider: glibc.x86_64 2.17-.el7_2.
依赖:libudev.so.()(64bit)
provider: systemd-libs.x86_64 -.el7_2.
依赖:pulseaudio-module-bluetooth
provider: pulseaudio-module-bluetooth.x86_64 6.0-.el7
依赖:rtld(GNU_HASH)
provider: glibc.x86_64 2.17-.el7_2.
provider: glibc.i686 2.17-.el7_2.

5)[root@localhost packages]# rpm -Va        校验所有的rpm包,查找丢失的文件

[root@localhost packages]# rpm -Va
S.....T. c /etc/hba.conf
....L.... c /etc/pam.d/fingerprint-auth
....L.... c /etc/pam.d/password-auth
....L.... c /etc/pam.d/postlogin
....L.... c /etc/pam.d/smartcard-auth
....L.... c /etc/pam.d/system-auth
遗漏 /var/run/wpa_supplicant
遗漏 /var/run/pluto
S.....T. c /etc/plymouth/plymouthd.conf
S.....T. c /etc/login.defs
S.....T. c /etc/libuser.conf
S.....T. c /etc/openldap/ldap.conf
遗漏 /var/run/gluster
.M....... c /etc/cups/subscriptions.conf
S.....T. c /etc/yum/pluginconf.d/langpacks.conf
.M....G.. /var/log/gdm
S.....T. c /etc/cgrules.conf
S.....T. c /etc/cups/cups-browsed.conf
.......T. /lib/modules/3.10.-.el7.x86_64/modules.devname
.......T. /lib/modules/3.10.-.el7.x86_64/modules.softdep
[root@localhost packages]# which mysql
/usr/bin/mysql

6)[root@localhost packages]# rpm -ql mariadb-5.5.47-1.el7_2.x86_64    查看指定软件包的安装的位置

[root@localhost packages]# yum install mysql
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.cqu.edu.cn
* extras: mirrors.cqu.edu.cn
* updates: mirrors.cqu.edu.cn
软件包 :mariadb-5.5.-.el7_2.x86_64 已安装并且是最新版本
无须任何处理
[root@localhost packages]# rpm -ql mariadb-5.5.-.el7_2.x86_64
/etc/my.cnf.d/client.cnf
/usr/bin/aria_chk
/usr/bin/aria_dump_log
/usr/bin/aria_ftdump
/usr/bin/aria_pack
/usr/bin/aria_read_log
/usr/bin/msql2mysql
/usr/bin/my_print_defaults
/usr/bin/mysql
/usr/bin/mysql_find_rows
/usr/bin/mysql_waitpid
/usr/bin/mysqlaccess
/usr/bin/mysqladmin
/usr/bin/mysqlbinlog
/usr/bin/mysqlcheck
/usr/bin/mysqldump
/usr/bin/mysqlimport
/usr/bin/mysqlshow
/usr/bin/mysqlslap
/usr/share/doc/mariadb-5.5.
/usr/share/doc/mariadb-5.5./COPYING
/usr/share/doc/mariadb-5.5./COPYING.Google
/usr/share/doc/mariadb-5.5./COPYING.LESSER
/usr/share/doc/mariadb-5.5./COPYING.Percona
/usr/share/doc/mariadb-5.5./README
/usr/share/doc/mariadb-5.5./README.mysql-docs
/usr/share/doc/mariadb-5.5./README.mysql-license
/usr/share/man/man1/aria_chk..gz
/usr/share/man/man1/aria_dump_log..gz
/usr/share/man/man1/aria_ftdump..gz
/usr/share/man/man1/aria_pack..gz
/usr/share/man/man1/aria_read_log..gz
/usr/share/man/man1/my_print_defaults..gz
/usr/share/man/man1/mysql..gz
/usr/share/man/man1/mysql_find_rows..gz
/usr/share/man/man1/mysql_waitpid..gz
/usr/share/man/man1/mysqlaccess..gz
/usr/share/man/man1/mysqladmin..gz
/usr/share/man/man1/mysqldump..gz
/usr/share/man/man1/mysqlshow..gz
/usr/share/man/man1/mysqlslap..gz

7)[root@localhost packages]# rpm -qi ftp-0.17-66.el7.x86_64       查看指定软件包的信息

[root@localhost packages]# yum install ftp
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.cqu.edu.cn
* extras: mirrors.cqu.edu.cn
* updates: mirrors.cqu.edu.cn
软件包 ftp-0.17-.el7.x86_64 已安装并且是最新版本
无须任何处理
[root@localhost packages]# rpm -qi ftp-0.17-.el7.x86_64
Name : ftp
Version : 0.17
Release : .el7
Architecture: x86_64
Install Date: 2016年06月21日 星期二 11时26分00秒
Group : Applications/Internet
Size :
License : BSD with advertising
Signature : RSA/SHA256, 2014年07月03日 星期四 18时25分20秒, Key ID 24c6a8a7f4a80eb5
Source RPM : ftp-0.17-.el7.src.rpm
Build Date : 2014年06月09日 星期一 13时01分11秒
Build Host : worker1.bsys.centos.org
Relocations : (not relocatable)
Packager : CentOS BuildSystem <http://bugs.centos.org>
Vendor : CentOS
URL : ftp://ftp.linux.org.uk/pub/linux/Networking/netkit
Summary : The standard UNIX FTP (File Transfer Protocol) client
Description :
The ftp package provides the standard UNIX command-line FTP (File
Transfer Protocol) client. FTP is a widely used protocol for
transferring files over the Internet and for archiving files. If your system is on a network, you should install ftp in order to do
file transfers.
[root@localhost packages]# yum info ftp-0.17-.el7.x86_64
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.cqu.edu.cn
* extras: mirrors.cqu.edu.cn
* updates: mirrors.cqu.edu.cn
已安装的软件包
名称 :ftp
架构 :x86_64
版本 :0.17
发布 :.el7
大小 : k
源 :installed
来自源:anaconda
简介 : The standard UNIX FTP (File Transfer Protocol) client
网址 :ftp://ftp.linux.org.uk/pub/linux/Networking/netkit
协议 : BSD with advertising
描述 : The ftp package provides the standard UNIX command-line FTP (File
: Transfer Protocol) client. FTP is a widely used protocol for
: transferring files over the Internet and for archiving files.
:
: If your system is on a network, you should install ftp in order to do
: file transfers.

8)[root@localhost packages]# rpm -i ftp://ftp.linux.org.uk/pub/linux/Networking/netkit        直接从网址下载(-i参数)

9)[root@localhost packages]# rpm -i -vv ftp://ftp.linux.org.uk/pub/linux/Networking/netkit      显示指令执行的细节(-vvc参数)

[root@localhost packages]# rpm -i ftp://ftp.linux.org.uk/pub/linux/Networking/netkit
curl: () RETR response:
错误:跳过 ftp://ftp.linux.org.uk/pub/linux/Networking/netkit - 传输失败
[root@localhost packages]# rpm -i -vv ftp://ftp.linux.org.uk/pub/linux/Networking/netkit
获取ftp://ftp.linux.org.uk/pub/linux/Networking/netkit
curl: () RETR response:
错误:跳过 ftp://ftp.linux.org.uk/pub/linux/Networking/netkit - 传输失败
[root@localhost packages]# rpm -e ftp
[root@localhost packages]# rpm -i -vv ftp://ftp.linux.org.uk/pub/linux/Networking/netkit
获取ftp://ftp.linux.org.uk/pub/linux/Networking/netkit
curl: () RETR response:
错误:跳过 ftp://ftp.linux.org.uk/pub/linux/Networking/netkit - 传输失败
[root@localhost packages]# wget ftp://ftp.linux.org.uk/pub/linux/Networking/netkit      //用wget测试是否能下载时,发现也是不行的,说明是网址的问题。
---- ::-- ftp://ftp.linux.org.uk/pub/linux/Networking/netkit
=> “netkit”
正在解析主机 ftp.linux.org.uk (ftp.linux.org.uk)... 195.92.253.2, :c35c:fd02::
正在连接 ftp.linux.org.uk (ftp.linux.org.uk)|195.92.253.2|:... 已连接。
正在以 anonymous 登录 ... 登录成功!
==> SYST ... 完成。 ==> PWD ... 完成。
==> TYPE I ... 完成。 ==> CWD () /pub/linux/Networking ... 完成。
==> SIZE netkit ... 完成。
==> PASV ... 无法连接到 0.0.0.0 端口号 : 拒绝连接               //指定网站拒绝连接

    (5)其它:

rpm的详细介绍:

1)简介:

  RPM(Red Hat Package Manager),是Red Hat 软件包管理器。RPM包里面包含有"可执行的二进制程序";"程序运行时所需要的文件"。

  一个RPM 包中的应用程序,有时除了自身所带的附加文件保证其正常以外,还需要其它特定版本文件,这就是软件包的依赖关系。依赖关系并不是Linux特有的, Windows操作系统中也是同样存在的;比如我们在Windows系统中运行3D游戏,在安装的时候,他可能会提示,要安装Direct 9 ;Linux和Windows原理是差不多的。

  一个软件包安装的流程图:

每天一个Linux命令(57)rpm命令

2)RPM软件包管理器的全面用途:

  1.可以安装、删除、升级和管理软件;当然也支持在线安装和升级软件;
  2.通过RPM包管理能知道软件包包含哪些文件,也能知道系统中的某个文件属于哪个软件包;
  3.可以在查询系统中的软件包是否安装以及其版本;
  4.作为开发者可以把自己的程序打包为RPM 包发布;
  5.软件包签名GPG和MD5的导入、验证和签名发布
  6.依赖性的检查,查看是否有软件包由于不兼容而扰乱了系统;

3)RPM 的使用权限:

RPM软件的安装、删除、更新只有root权限才能使用;对于查询功能任何用户都可以操作;如果普通用户拥有安装目录的权限,也可以进行安装。

      不是所有的软件包都能通过rpm 命令来安装,只有以.rpm结尾的软件包才可以。

4)当rpm系统出了不能安装和查询的问题时:

[root@localhost packages]rpm -initdb
[root@localhost packages]rpm -rebuilddb //这个命令需要执行很长时间

相关文章