1.概述
最初只有.tar.gz的打包文件,用户必须编译每个他想在Linux上运行的软件。用户们普遍认为系统很有必要提供一种方法来管理这些安装在机器上的软件包,当Debian诞生时,这样一个管理工具也就应运而生,它被命名为dpkg。稍后RedHat才决定开发自己的“rpm”包管理系统
2.rpm优缺点及默认路径
2.1优点
- 自带编译后的文件,免除用户对软件编译的过程
- 可以自动检测文件系统(硬盘)的容量、系统的版本。避免软件被错误的安装。
- 自带软件的版本信息、帮助文档、用途说明等信息。
2.2缺点
- 无论安装还是卸载,RPM都有一个恶心人的依赖关系。
- 安装的软件需要依赖,那么优先安装依赖。
- 卸载的软件存在依赖,那么优先卸载依赖。
2.3默认路径
/etc | 一些配置文件放置的目录,例如/etc/crontab |
/usr/bin | 一些可执行文件 |
/usr/lib | 一些程序使用的动态链接库 |
/usr/share/doc | 一些基本的软件使用手册与说明文件 |
/usr/share/man | 一些man page(Linux命令的随机帮助说明)文件 |
3.安装
语法:rpm -ivh packageName.rpm
选项
i | 表示安装 |
v | 表示处理过程 |
h | 显示处理进度(进度条) |
单个安装:
# bash
rpm -ivh pack1.rpm
多个安装:
# bash
rpm -ivh pack1.rpm pack2.rpm *.rpm
安装网络上的RPM包
# bash
rpm -ivh "https://网络地址/package.rpm"
其他:对比与最初的方法,rpm 安装jdk 不需要配置 直接生效
4.查询
语法:rpm -[选项]
选项(-qa常用)
-q : | 仅查询,后面接的软件名称是否有安装 |
-qa : | 列出所有的,已经安装在本机Linux系统上面的所有软件名称 !!! |
-ql : | 列出该软件所有的文件与目录所在完整文件名 !! |
-qc : | 列出该软件的所有配置文件 ! |
-qd : | 列出该软件的所有说明文件 |
-qR : | 列出和该软件有关的相依软件所含的文件 |
案例1:查找是否安装jdk
# rpm -qa |grep jdk
查询时忽略大小写
rpm -qa |grep -i JDK
案例2:查找所有系统已经安装的包,并只查看前3个
# rpm -qa |head -n 3
案例3:查询lrzsz所包含的文件及目录
# rpm -ql lrzsz
案例4:查看lrzsz包的相关说明
# rpm -qi lrzsz
列出iptables的配置文件
# rpm -qc iptables
案例7:查看apr需要的依赖
# rpm -qR apr
5.卸载
5.1 package_Name需要通过qa的选项来查询出来,这种方法会检查依赖,如果软件有其他依赖需要先卸载完成其他所有的依赖才能卸载该软件。
rpm -e package_Name
5.2.上述方式太过繁琐,通常情况下,直接卸载就行,所以采用--nodeps,强行删除,不管依赖
rpm -e --nodeps filename
输入命令rpm --help 可以查看rpm 相关选项说明
下面是关于--nodeps 选项的说明
6.RPM 升级与更新
rpm -Uvh <package_name> (不管有没有都安装最新版)
-Uvh后面接的软件如果没有安装过, 系统会直接安装,若后面接的软件安装过但版本较旧,则更新至新版
[root@localhost soft]# rpm -Uvh jdk-8u111-linux-x64.rpm
Preparing... ########################################### [100%]
package jdk1.8.0_111-2000:1.8.0_111-fcs.x86_64 is already installed
rpm -Fvh <pacakge_name> (只有安装才更新)
-Fvh如果后面接的软件并未安装到Linux系统上,则该软件不会被安装,只有已安装的软件才会被升级