Linux-rpm命令管理介绍
2017-05-30 15:20
423 查看
简介
在Linux操作系统中,有一个系统软件包,它的功能类似于Windows里面的“添加/删除程序”,但是功能又比“添加/删除程序”强很多,它就是Red Hat Package Manager(简称RPM)。The RPM Package Manager,是在Linux下广泛使用的软件包管理器。RPM此名词可能是指.rpm的文件格式的软件包,也可能是指其本身的软件包管理器(RPM Package Manager)。最早由Red Hat研制,现在也由开源社区开发。RPM通常随附于Linux发行版,但也有单独将RPM作为应用软件发行的发行版(例如Gentoo)。RPM仅适用于安装用RPM来打包的软件,目前是GNU/Linux下软件包资源最丰富的软件包类型之一。
rpm命令管理大纲
rpm包的命令规则安装
升级与卸载
查询
校验
rpm包命名规则
这里以mysql的server端的包MySQL-server-5.6.16-1.rhel5.x86_64.rpm来举例说明:
MySQL-server软件报名
5.6.16软件版本
1软件发布的次数
rhel5适合的linux平台
x86_64适合的硬件平台
rpmrpm包的扩展名
rpm包的依赖性
树形依赖: a -> b -> c环形依赖: a -> b -> c -> a
模块依赖:模块依赖(依赖.so库文件),查询网站: www.rpmfind.net
rpm包的安装
1.全包名 与 包名
全包名: 操作的包是没有安装的软件包是,使用全包名.而且要注意路径.MySQL-server-5.6.16-1.rhel5.x86_64.rpm
包名: 操作的是已经安装的软件包时,使用包名,是搜索的/var/lib/rpm/中的数据库.
MySQL-server
2.rpm安装
rpm -ivh 包全名
eg:
rpm -ivh MySQL-server-5.6.16-1.rhel5.x86_64.rpm
选项:
-i (install) 安装 -v (verbose) 显示详细信息 -h (hash) 显示进度 -- nodeps 不检测依赖性(不建议使用,因为基本不去处理依赖的安装的软件都不能正常使用)
注意要安装的软件有多个包的时候,要先安装主包,再安装依赖包.比如这里的主包就是httpd包,
正在安装: httpd x86_64 2.4.6-45.el7.centos.4 updates 2.7 M 为依赖而安装: apr x86_64 1.4.8-3.el7 base 103 k apr-util x86_64 1.5.2-6.el7 base 92 k httpd-tools x86_64 2.4.6-45.el7.centos.4 updates 84 k mailcap noarch 2.1.41-2.el7 base 31 k
关于rpm包依赖的解决办法:
1如果是包的依赖,就比较简单直接下载安装对应所需要的依赖包后再安装既可.
2.下面主要讲解缺少的以来是库文件的解决办法
[root@localhost ~]# rpm -ivh apr-util-1.3.9-3.el6_0.1.x86_64.rpm 警告:apr-util-1.3.9-3.el6_0.1.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID c105b9de: NOKEY 错误:依赖检测失败: libapr-1.so.0()(64bit) 被 apr-util-1.3.9-3.el6_0.1.x86_64 需要 libdb-4.7.so()(64bit) 被 apr-util-1.3.9-3.el6_0.1.x86_64 需要
可知是缺省库文件libapr-1.so.0和libdb-4.7.so,通过网站查询找到对应的系统版本,下载安装依赖的包既可;模块依赖查询网站: 模块依赖查询网站
我这里是用的CentOS 7.3,下载安装apr-1.4.8-3.el7.i686.rpm即可.如果还有依赖依次安装最先需要的依赖再装后面的软件既可.千万注意64的操作系统不要下错了32位的依赖包.
apr-1.5.1-3.fc22.s390.html Apache Portable Runtime library Fedora 22 for s390 apr-1.5.1-3.fc22.s390.rpm apr-1.4.8-3.el7.i686.html Apache Portable Runtime library CentOS 7.3.1611 for x86_64 apr-1.4.8-3.el7.i686.rpm apr-1.3.9-5.el6_2.i686.html Apache Portable Runtime library CentOS 6.8 for x86_64 apr-1.3.9-5.el6_2.i686.rpm apr-1.3.9-5.el6_2.i686.html Apache Portable Runtime library CentOS 6.8 for i386 apr-1.3.9-5.el6_2.i686.rpm apr-1.3.9-5.el6_2.i686.html Apache Portable Runtime library CentOS 6.9 for i386 apr-1.3.9-5.el6_2.i686.rpm apr-1.3.9-5.el6_2.i686.html Apache Portable Runtime library CentOS 6.9 for x86_64 apr-1.3.9-5.el6_2.i686.rpm
3.rpm升级
rpm -Uvh 包全名
eg:
rpm -Uvh MySQL-server-5.6.16-1.rhel5.x86_64.rpm
注意:使用用升级命令,如果没有安装就安装,如果安装的是旧版本就升级成最新版本,如果已经是最新版本,就不做任何操作.
选项:
-U (upgrade) 升级 -v (verbose) 显示详细信息 -h (hash) 显示进度 -- nodeps 不检测依赖性(不建议使用,因为基本不去处理依赖的安装的软件都不能正常使用)
查询未安装的包的信息(输入包名即可):
4.rpm卸载
rpm -e 包名
eg:
rpm -e MySQL-server
注意: 只要输入包名,不需要输入包全名.卸载的时候也有包的依赖性,要卸载先安装的包,再卸载后安装的包.
选项:
-e (erase) 卸载 -- nodeps 不检测依赖性(不建议使用,因为基本不去处理依赖的安装的软件都不能正常使用)
5.rpm查询
rpm -q 包名查询是否安装了指定包
rpm -qa |grep 包名正则查,会查出包含了该包名的所有包(推荐使用)
eg:
rpm -qa | grep MySQL-server
注意: 查询的包名区分大小写;
选项:
-q (query) 查询
-a (all) 所有
-i (information) 查询软件信息
-p (package) 查询未安装包的信息
-l (list) 列表
1.查询已经安装的包的包信息(输入包名即可):
eg:`rpm -qi apr-util`,里面的信息包括了该包的官网网站等信息. [root@localhost ~]# rpm -qi apr-util Name : apr-util Version : 1.3.9 Release : 3.el6_0.1 Architecture: x86_64 Install Date: 2017年05月30日 星期二 14时38分05秒 Group : System Environment/Libraries Size : 202360 License : ASL 2.0 Signature : RSA/SHA256, 2011年07月06日 星期三 09时37分03秒, Key ID 0946fca2c105b9de Source RPM : apr-util-1.3.9-3.el6_0.1.src.rpm Build Date : 2011年06月25日 星期六 12时38分40秒 Build Host : c6b5.bsys.dev.centos.org Relocations : (not relocatable) Packager : CentOS BuildSystem <http://bugs.centos.org> Vendor : CentOS URL : http://apr.apache.org/ Summary : Apache Portable Runtime Utility library Description : The mission of the Apache Portable Runtime (APR) is to provide a free library of C data structures and routines. This library contains additional utility interfaces for APR; including support for XML, LDAP, database interfaces, URI parsing and more.
2.查询未安装的包的包信息(输入包全名即可):
eg:`rpm -qip MySQL-server-5.6.16-1.rhel5.x86_64.rpm`,里面的信息包括了该包的官网网站等信息.和是否安装的信息 [root@localhost ~]# rpm -qip MySQL-server-5.6.16-1.rhel5.x86_64.rpm Name : MySQL-server Version : 5.6.16 Release : 1.rhel5 Architecture: x86_64 Install Date: (not installed) Group : Applications/Databases Size : 259075416 License : Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. Under GPL license as shown in the Description field. Signature : DSA/SHA1, 2014年01月16日 星期四 12时56分49秒, Key ID 8c718d3b5072e1f5 Source RPM : MySQL-5.6.16-1.rhel5.src.rpm Build Date : 2014年01月14日 星期二 23时53分02秒 Build Host : tyr75 Relocations : (not relocatable) Packager : MySQL Release Engineering <mysql-build@oss.oracle.com> Vendor : Oracle and/or its affiliates URL : http://www.mysql.com/ Summary : MySQL: a very fast and reliable SQL database server Description : The MySQL(TM) software delivers a very fast, multi-threaded, multi-user, and robust SQL (Structured Query Language) database server. MySQL Server is intended for mission-critical, heavy-load production systems as well as for embedding into mass-deployed software. MySQL is a trademark of Oracle and/or its affiliates The MySQL software has Dual Licensing, which means you can use the MySQL software free of charge under the GNU General Public License (http://www.gnu.org/licenses/). You can also purchase commercial MySQL licenses from Oracle and/or its affiliates if you do not wish to be bound by the terms of the GPL. See the chapter "Licensing and Support" in the manual for further info. The MySQL web site (http://www.mysql.com/) provides the latest news and information about the MySQL software. Also please see the documentation and the manual for more information. This package includes the MySQL server binary as well as related utilities to run and administer a MySQL server. If you want to access and work with the database, you have to install package "MySQL-client" as well!
3.查询包中文件安装位置
rpm -ql 包名
参数:
-p (package) 查询未安装包的信息
-l (list) 列表
-f (file) 查询该文件是属于哪个包的
注意:如果是想查看一个未安装的软件在安装后该软件的文件会安装在哪里,要用-p参数:
eg:
rpm -qlp MySQL-server-5.6.16-1.rhel5.x86_64.rpm
下面列出的是已经安装的软件包的具体安装位置.
注意区分: `whereis apr-util`命令
[root@localhost ~]# rpm -ql apr-util /usr/lib64/apr-util-1 /usr/lib64/libaprutil-1.so.0 /usr/lib64/libaprutil-1.so.0.3.9 /usr/share/doc/apr-util-1.3.9 /usr/share/doc/apr-util-1.3.9/CHANGES /usr/share/doc/apr-util-1.3.9/LICENSE /usr/share/doc/apr-util-1.3.9/NOTICE
RMP包默认安装位置
路径 | 说明 |
---|---|
/etc/ | 配置文件安装目录 |
/usr/bin/ | 可执行命令安装目录 |
/usr/lib/ | 程序锁使用的函数库保存的位置 |
/usr/share/doc/ | 基本软件使用手册保存位置 |
/usr/share/man/ | 帮助文档保存位置 |
4.查询系统文件属于哪个rpm包
rpm -qf 系统文件名
参数:
-f (file) 查询该文件是属于哪个包的
注意:查询的前提条件,这个文件必须是通过rpm包安装出来的,比如你手动创建的文件就肯定是找不到所属的软件包的.
[root@localhost ~]# rpm -qf /usr/lib64/libaprutil-1.so.0.3.9 apr-util-1.3.9-3.el6_0.1.x86_64
5.查询包的依赖性
rpm -qR 包名
选项:
-R (requires) 查询软件包的依赖性
-p (package) 查询未安装包的信息
注意:这里查询出来的依赖包括shell,.so函数库等等,实际意义不大,建议直接安装软件包,然后根据提示需要那些包再去选择下载安装
[root@localhost ~]# rpm -qR apr /sbin/ldconfig /sbin/ldconfig libc.so.6 libc.so.6(GLIBC_2.0) libc.so.6(GLIBC_2.1) ...
rpm包校验
rpm -V 已安装的包名校验已经安装的包
选项
-V (verify)校验指定RMP包中的文件
说明:输入命令后,没有任何结果输出代表,这里安装的`apr-util-1.3.9-3.el6_0.1.x86_64.rpm`的文件没有进行过任何改动. [root@localhost ~]# rpm -V apr [root@localhost ~]#
1.说明: 这里改改动下安装后释放出来的文件 apr-util-1.3.9-3.el6_0.1.x86_64.rpm安装后释放的所有文件: [root@localhost ~]# rpm -ql apr /usr/lib/libapr-1.so.0 /usr/lib/libapr-1.so.0.4.8 /usr/share/doc/apr-1.4.8 /usr/share/doc/apr-1.4.8/CHANGES /usr/share/doc/apr-1.4.8/LICENSE /usr/share/doc/apr-1.4.8/NOTICE /usr/lib64/libapr-1.so.0 /usr/lib64/libapr-1.so.0.4.8 /usr/share/doc/apr-1.4.8 /usr/share/doc/apr-1.4.8/CHANGES /usr/share/doc/apr-1.4.8/LICENSE /usr/share/doc/apr-1.4.8/NOTICE 2.这里博主改动下文件:vi /usr/share/doc/apr-1.4.8/LICENSE,在里随便添加了个注释语句,然后保存: This software contains code derived from UNIX V7, Copyright(C) Caldera International Inc. #yves hello 3.再次执行:rpm -V apr [root@localhost ~]# rpm -V apr S.5...... d /usr/share/doc/apr-1.4.8/NOTICE 这时候有了结果:S.5...... d d代表普通文档
验证内容中8个信息的具体内容如下:分别用
.符号隔开
符号 | 意义 |
---|---|
S | 文件大小是否改变 |
M | 文件的类型或文件的权限是否改变(rwx)是否改变 |
5 | 文件的MD5校验和是否改变(可看文件的内容是否改变) |
D | 设备的主从代码是否改变 |
L | 文件的路径是否改变 |
U | 文件的属性所属者是否改变 |
U | 文件的属性所属者是否改变 |
G | 文件所属组是否改变 |
T | 文件修改时间是否改变 |
c | 配置文件(config file) |
d | 普通文档(documentation) |
g | “鬼文件” (ghost file) ,很少见,就是该文件不应该被这个rpm包包含 |
L | 授权文件(license file) |
r | 描述文件(read me) |
rpm包中文件提取:
目的:当误操作删除了某个软件包释放的文件时,可以通过该命令从原来的rpm包中提取需要的文件.
PS: 同样如果嫌麻烦,重新装一遍rpm包也是可以的.
rmp2cpi 包全名 | grep cpio -idv .文件绝对路径
注意:
.不能省略
说明:
rpm2cpio # 将软件包转化问cpio格式的命令
cpio #是一个标准工具,它用于创建软件文档文件和从文档文件中提取文件
操作:
cpio 选项 < [文件| 设备]
选项:
-i :copy-in 模式,还原
-d :还原时自动新建目录
-v 显示还原过程
实现RPM包中文件提取
这里不使用<方式,而是使用管道符|来提取丢失的文件:
1.模拟丢失文件:
rm -rf /usr/lib64/libaprutil-1.so.0.3.9
2.查找该文件是属于哪个rpm包:
如果我不知道该文件的具体路径,只知道文件名为:libaprutil-1.so.0.3.9,可以上网查是哪个包的.
然后再查看该包安装后的文件释放路径:
(虽然该文件已经不存在,但是在linux的数据中还有记录,可以知道它是位于:/usr/lib64/libaprutil-1.so.0.3.9)
[root@localhost ~]# rpm -ql apr-util /usr/lib64/apr-util-1 /usr/lib64/libaprutil-1.so.0 /usr/lib64/libaprutil-1.so.0.3.9 /usr/share/doc/apr-util-1.3.9 /usr/share/doc/apr-util-1.3.9/CHANGES /usr/share/doc/apr-util-1.3.9/LICENSE /usr/share/doc/apr-util-1.3.9/NOTICE
3.通过rpm2cpio命令来提取文件:
[root@localhost ~]# rpm2cpio /root/apr-util-1.3.9-3.el6_0.1.x86_64.rpm | cpio -idv ./usr/lib64/libaprutil-1.so.0.3.9 ./usr/lib64/libaprutil-1.so.0.3.9 398 块
这时候在当前目录就建立该文件的路径了:
[root@localhost ~]# ll | grep usr drwxr-xr-x. 3 root root 19 5月 30 16:27 usr
4.拷贝丢失文件到原来的目录即可:
cp /root/usr/lib64/libaprutil-1.so.0.3.9 /usr/lib64/
相关文章推荐
- Linux下用户管理的一些命令介绍
- 12个Linux进程管理命令介绍
- Linux中RPM软件管理命令
- Linux软件安装管理(二)-RPM命令管理
- Linux常用命令(23)之RPM软件包管理
- 12 个 Linux 进程管理命令介绍
- 12个Linux进程管理命令介绍
- 12 个 Linux 进程管理命令介绍
- Unix/Linux 网络接口管理相关命令介绍
- 7、 Linux的RPM软件包管理:RPM包的介绍、RPM安装、卸载等操作
- 20160218自学Linux_根文件目录介绍+目录管理命令学习(mkdir,rmdir,tree,touch,stat,rm,nano,cp,mv,insatll)
- Linux系统程序包的管理功能相关命令rpm与yum的使用
- Linux进程管理命令介绍
- linux中rpm命令详细介绍
- Linux 软件包介绍---->RPM包管理
- Linux中rpm命令管理
- Linux基础--进程管理相关命令介绍(1)
- 菜鸟学Linux 第029篇笔记 软件管理,rpm命令
- 12个linux进程管理命令介绍
- Linux基本命令――RPM包管理工具