rpm的使用,安装,升级,卸载,查询,验证软件包
系统软件所存放的目录:
/etc 配置文件
/bin 、/sbin 二进制文件
/lib 库文件
这几个目录不能挂载其他分区,因为系统启动需要里面的程序
核心功能软件安装目录:
可以单独备份,重装系统只要重新覆盖目录原有的软件依然存在
/usr/
bin
sbin
lib
第三方软件安装目录:
这个目录即使安装在其他分区也可以,重新挂载在其他电脑上也可以运行
/usr/local
bin
sbin
lib
etc
man
/opt 老的第三方软件会安装在这个目录,现在都是安装在/usr/local中
/proc 、 /sys 这两个目录是启动系统所用到的目录,不可单独分区,虽然没有任何文件但是很重要
/dev 设备,驱动,不能单独分区,在2.0内核以后udev会动态创建设备文件
/home 建议单独分区
/root 不建议单独分区
/var 系统运行时目录,日志文件等,建议单独分区
/boot 内核,建议单独分区
rpm软件包管理工具:
rpm 管理软件包的工具,rpm提供软件包追踪,这些数据在/var/lib/rpm下面
rpmbuild 创建软件包工具
rpm的功能有,安装、查询、卸载、升级、校验、数据库重建、验证数据表等工作。
源代码:name-version.tar.gz
version:major.minor.release major变化表示主程序发生改变,minor改变增加功能,release改变表示修复了bug
rpm包命名方式:name-version-arch.rpm arch表示平台
arch:release.os.arch 这个release是rpm包的release,arch表示运行平台,os表示兼容平台,常见的arch有x86_64,i386,i486,i586,i686等
ldd 查看二进制文件程序所依赖的库
ldd /bin/ls
管理查看本机装载的库文件:
ldconfig -p 库文件名称和位置的映射列表
配置文件:/etc/ld.so.conf , /etc/ld.so.conf.d/*.conf
缓存文件:/etc/ld.so.cache
直接运行ldconfig命令重新装载库列表
程序包管理:
程序包包含有文件清单,安装或卸载的脚本
程序包有一个公共数据库,用来记录程序安装产生的文件位置,依赖库,功能说明,校验码的信息。
获取程序包的途径:
1、官方镜像站点
http://mirrors.aliyun.com
http://mirrors.sohu.com
http://mirrors.163.com
2、程序包的官方站点
3、第三方组织
Fedora-EPEL
搜索引擎:
http://pkgs.org
http://rpmfind.net
http://rpm.pbone.net
安装:
rpm {-i|--install} [install-options] PACKAGE_FILE ...
-i 安装
-v 显示更多信息
-h 显示进度
[install-options]
--test 测试安装
--nodeps 忽略包依赖关系*
--replacepkgs 重新安装*
--nosignature 不检查包的来源合法性
--nodigest 不检查包的完整性
--noscripts 不执行某脚本
--nopre 不执行安装前脚本
--nopost 不执行安装后脚本
--nopreun 不执行卸载钱脚本
--nopostun 不执行卸载后脚本
rpm -ivh packages_file
升级:
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ... 之前有旧版程序包则升级,否者安装
rpm {-F|--freshen} [install-options] PACKAGE_FILE ... 之前有旧版程序包则升级,否者不执行操作
rpm -Uvh package_file
rpm -Fvh package_file
--oldpackage 允许老版本覆盖新版本
--force 强制升级,不管兼容不兼容
--nodeps 忽略依赖关系
注意:
不要对内核升级,Linux支持多内核并存,直接安装新版本内核。
升级后新版的配置文件并不会直接覆盖原有的,会生成filename.rpmnew的配置文件。
查询:
rpm {-q|--query} [select-options] [query-options]
-q 查询模式
[select-options]
-a 查询所有包
-f 查询指定的软件由那个程序生成,例:rpm -qf /bin/ls
-p 查询未安装的包信息
--whatprovides CAPABILITY:查询指定的CAPABILITY由哪个包所提供;
--whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖;
[query-options]
--changelog 查看rpm包的修改日志
-c 配置文件
-d 查询程序的帮助文档
-i 查询各种信息
-l 软件安装后生成的所有文件
--scripts 安装后生成的所有脚本
-R 查询指定的程序包所依赖的CAPABILITY
--provides 列出指定程序包所提供的CAPABILITY
卸载:
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts]
-e 卸载模式
--nodeps 忽略依赖关系
校验:
rpm {-V|--verify} [select-options] [verify-options]
-V 校验模式,rpm -V packages
例:rpm -V sudo
S.5....T. c /etc/sudoers
S.5....T. c 这个显示的信息表示如下:
S file Size differs
M Mode differs (includes permissions and file type)
5 digest (formerly MD5 sum) differs
D Device major/minor number mismatch
L readLink(2) path mismatch
U User ownership differs
G Group ownership differs
T mTime differs
P caPabilities differ
不匹配的信息会显示出来。
验证包的来源合法性:
rpm --import RPM-GPG-KEY-CentOS-6 光盘里面公钥RPM-GPG-KEY-CentOS-6,导入rpm即可。
重建rpm包的数据库:
数据库目录:/var/lib/rpm/
数据库重建是重新读取软件信息而重建的。
rpm {--initdb | --rebuilddb}
initdb 初始化,不存在则重建,否者不执行
rebuilddb 重建,无论是否存在,直接重新创建数据库