在CentOS系统中linux下的程序管理主要会用到rpm,yum,与源码编译这几种手段,这篇文章主要对于rpm工具的使用做简要介绍。
软件安装到计算机上,能够正常运行并使用,是要进行一系列复杂的操作的,平常我们安装软件基本上不需要几个步骤,是因为软件厂商对软件进行了特殊的处理,能够让我们非常方便的使用,编译安装好的rpm包就是其中一种手段。由于rpm是通过预编译并打包成为rpm包的形式,再加以安装的一种方式,并且还能够进行数据库的记载,所以rpm有以下的优点:
1.rpm内含已经编译好的程序与设置文件等数据,可以让用户免除重新编译的困扰
2.rpm在被安装之前,会先检测系统的硬盘容量、操作系统版本等数据,以避免文件被错误安装
3.rpm文件本身提供软件版本信息、属性依赖信息、软件用途信息、软件所含文件等信息,便于了解软件;
4.rpm软件管理的方式使用数据库记录rpm文件的相关参数,便于升级、删除、查询、验证
rpm软件包的格式:我们可以使用rpm
例:VNC-Viewer-5.2.3-Linux-x64.rpm
例如上面的一个rpm包的名称:
VNC-Viewer:表示文件名
5.2.3:表示版本号,主版本号.次版本号.微小改动的次数
Linux-x64:适用的操作平台类型,Linux-x64代表适合64位Linux系统使用,此外还有 i386,i586,i686,x86-64,noarch等各种表示
rpm命令的用法:rpm [OPTIONS] [PACKAGE_FILE]
安装:-i, --install
升级:-U, --update, -F, --freshen
卸载:-e, --erase
查询:-q, --query
校验:-V, --verify
数据库维护:--builddb, --initdb
1.安装:rpm -i [安装选项] [软件包名称]:安装软件
安装选项:-v,显示更详细的安装信息
-h,以安装信息栏显示安装进度
--test:测试安装,检查并报告依赖关系及冲突消息等;
还有后面这几个,但是平常不建议使用:
--nodeps:忽略依赖关系;不建议;
--replacepkgs:重新安装
--nosignature:不检查包签名信息,不检查来源合法性;
--nodigest:不检查包完整性信息;
软件安装过程中的依赖关系:在我们使用rpm安装软件的过程中,很可能会出现,我们安装一个软件,却因为软件之间的依赖关系,需要安装多个文件,否则没办法安装的问题。这是因为只有这些依赖关系都存在的情况下,这个软件才能够正常使用,如果忽略了依赖关系,即使软件安装好,可能也无法正常使用。那么如何解决这个问题呢,留待下一篇文章。。。
2.升级:rpm [-U|--upgrade] [升级选项] PACKAGE_FILE ...
rpm [-F|--freshen] [升级选项] PACKAGE_FILE ...
-U:升级或安装;rpm -Uvh PACKAGE_FILE ...
-F:升级,rpm -Fvh PACKAGE_FILE ...
升级选项:--oldpackage:降级;
--force:强制升级;
3.卸载:rpm {-e|--erase} [卸载选项] PACKAGE_NAME ...
卸载选项:--allmatches:卸载所有匹配指定名称的程序包的各版本;
--nodeps:忽略依赖关系
--test:测试卸载,dry run模式
卸载就是解除安装,注意:解安装的过程一定要由最上层往下解除,而且删除的过程中,一些具有依赖关系的软件也是没办法强制卸载的。
4.查询:
rpm {-q|--query} [select-options] [query-options]
-q:查询指定的程序包是否已经安装,及其版本;
-qa, --all:查询所有已经安装过的程序包;
-qf FILE:查询指定的文件由哪个程序包安装生成;
-qp, --package PACKAGE_FILE:用于实现对未安装的程序包执行查询操作;
[query-options]
--changelog:查询rpm包的changlog;
-l, --list:程序安装生成的所有文件列表;
-i, --info:程序包相关的信息,版本号、大小、所属的包组,等;
-c, --configfiles:查询指定的程序包提供的配置文件;
-d, --docfiles:查询指定的程序包提供的文档;
--provides:列出指定的程序包提供的所有的CAPABILITY;
-R, --requires:查询指定的程序包的依赖关系;
--scripts:查看程序包自带的脚本片断;
注意:这些选项可以组合使用,例如:-qi PACKAGE, -qf FILE, -qc PACKAGE, -ql PACKAGE, -qd PACKAGE,-qpi PACKAGE_FILE, -qpl PACKAGE_FILE, -qpc PACKAGE_FILE, ...
5.校验:验证(Verify)功能主要在于提供系统管理员一个有用的管理机制。其作用的方式是使用/var/lib/rpm下面的数据库内容来比较目前Linux系统下面的所有文件
rpm -Va:列出目前系统上所有可能被改动过的文件
rpm -V [已安装软件名称]:若该软件所含的文件被改动过,才会显示出来
rpm -Vp [某个rpm文件名称]:列出软件内可能被改动的文件
rpm -Vf [在系统上的某个文件]
对于列出的信息,你会发现文件名之前有个c,然后就是一堆奇怪的文字。c表示configuration,即设置文件的意思。至于最前面的8个信息:
S file Size differs:文件的容量大小是否被改变
M Mode differs (includes permissions and file type):文件的类型或属性是否被改变
5 digest (formerly MD5 sum) differs:MD5这一种指纹码的内容已经不同
D Device major/minor number mismatch:设备的主/次代码已经改变
L readLink(2) path mismatch:Link路径已经被改变
U User ownership differs:文件的所有者已经被改变
G Group ownership differs:文件的所属用户组已经被改变
T mTime differs:文件的创建时间已经被改变
经过验证,就可以知道哪个文件被改动过。所以当一个设置文件的所有信息都被改过之后,那么他的显示就会是:
SM5DLUGT c filename
数据库重建:由于rpm文件经常会安装/删除/卸载/升级等,某些操作可能会导致rpm数据库/var/lib/rpm内的文件损坏。那么就可以使用--rebuilddb这个参数来重建数据库。
rpm --rebuilddb:重建数据库
包来源合法性验正和完整性验正:
来源合法性验正:
完整性验正:
获取并导入信任的包制作者的密钥:
对于CentOS发行版来说:rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
验证:(1) 安装此组织签名的程序时,会自动执行验正;
(2) 手动验正:rpm -K PACKAGE_FILE
本文出自 “飞越之路” 博客,请务必保留此出处http://zpf461435.blog.51cto.com/11283159/1753174
原文地址:http://zpf461435.blog.51cto.com/11283159/1753174