Linux 软件包介绍---->RPM包管理
软件包分类:
源码包:
脚本安装包
二进制包:
rpm包 ,默认系统包
源码包优点:
开源,如果有足够能力,可以修改源代码
可以自由选择所需的功能
软件是编译安装,所以更加适合自己的系统,更加稳定效率更高
卸载方便
源码包缺点:
安装过程步骤较多,尤其安装较大的软件集合时(如LAMP环境建),容易出现拼写错误
编译过程时间较长,安装比二进制安装时间长
因为是编译安装,安装过程中一旦出现错误很难解决
RPM包优点:
包管理系统简单,只通过几个命令就可以实现包的安装,升级,卸载和查询
安装速度比源码包快得多
RPM包缺点:
经过编译不能再看源代码
功能选择不如源码包灵活
依赖性繁琐
RPM包命名规则:
httpd-2.2.15-15.e16.centos.1.i686.rpm
httpd 软件包名
2.2.15 软件版本
15 软件发布次数
e16.centos 适合的Linux平台
i686 适合的软件平台
rpm rpm包的扩展名
RPM依赖性:
树形依赖: a-->b---->c
环形依赖: a---->b----->c----->a
模块依赖: 模块依赖查询网站:www.rpmfind.net
包名和包全名:
包全名:操作的包是没有安装的软件包,使用包全名,注意路径
包名:操作已经安装的软件包时,使用包名,是搜索/var/lib/rpm/中的数据库
RPM安装
rpm -ivh 包全名
-i (install) 安装
-v (verbose) 显示详细信息
-h (hash) 显示进度
--nodeps 不检测依赖性
案例:
首先设置
然后挂载
输入安装命令 发现有依赖 先安装依赖 才能正常安装httpd 很是麻烦 后面用yum在线管理进行安装,就不用这鸟东西了
RPM升级
rpm -Uvh 包全名
-U(upgrade) 升级
RPM卸载
rpm -e 包名
-e (erase) 卸载
--nodeps 不检查依赖性
案例: (由于我前面没安装全 所以显示未安装 有耐心的按照依赖安装 在删除,在这不弄 蛮麻烦死了)
RPM查询:
rpm -q 包名
-q 查询
rpm -qa ----->查询所有已经安装的包名
-a all 所有
查询包的相关信息
rpm -qi 包名
-i 查询软件信息(information)
-p 查询未安装包信息(package)
查询包中文件安装位置
rpm -ql 包名
-l 列表
-p 查询未安装包的信息里
案例:(虽然这个包没有安装,但是它列出了打算安装在哪里)
查询系统文件属于哪个rpm包
rpm -qf 系统文件名
-f 查询系统文件属于哪个软件包
案例:
RPM包依赖性
查询软件包的依赖性:
rpm -qR 包名
-R 查询软件包的依赖性
-p 查询未安装包信息
案例:查询未安装包的依赖性
RPM包文件校验
rpm -V 已安装的包名
-V 校验指定RPM包中的文件
如果结果没有任何显示说明是没有修改过的
如果修改过 会显示修改的文件
对应的验证信息
RPM包中文件的提取
rpm2cpio 包全名| \
cpio -idv . 文件绝对路径
选项:-i copy-in 模式,还原
-d 还原时自动新建目录
-v 显示还原过程
例子:cpio 选项< 【文件|设备】
rpm2cpio 将rpm包转换为cpio格式的命令
cpio 是一个标准工具,同用于创建软件档案文件和从档案文件中提取文件
案例:(基本上用于 误删除系统文件,不用重新装系统)