在管理CentOS服务器的过程中难免需要安装或者删除一些软件。而在这个过程中就涉及到程序包的管理。在很久以前的CentOS上,包管理真的是一个技术活,在这个过程中不仅需要管理者去了解一些常用程序软件的安装,还需要管理者很熟练地掌握这些技术,以便出现问题可以及时的解决。
在包的安装过程中不可避免的会出现一些包的依赖问题。简而言之,就是你需要安装A软件,而A软件又依赖了B包的一些基础功能,而B呢又有一些功能依赖于C等等这样的问题很常见。作为系统管理员,在早期的程序管理过程中解决包的依赖问题是一件很麻烦的事情,你不仅需要了解一款软件,更重要的是需要知道它有哪些依赖,从而快速准确的安装一个程序。这些东西想想就很可怕。
还好,REH系列发行版在使用中也发现了这一问题,就在自己的系统中集成了rpm包管理程序。这是一款后台的包管理程序,通过rpm包管理程序可以解决程序包的一些依赖问题。但是,这个rpm包管理器也有自己的一些缺陷,其中最为人诟病的一点就是,包太少,还是需要从第三方站点下载,然后手动编译安装。由此,又一个程序包管理器诞生了。yum,这个是迄今为止CentOS下比较好用的程序包管理器了。yum是一个C/S架构的软件。通常服务端是一个镜像服务器,而客户端只要正确配置,能够正常使用即可。使用简单,最重要的是它有丰富的软件仓库,而且还支持在本地假设软件仓库。所以今天就来说一说CentOS下这两款程序包管理器。
首先来看看man文档中rpm的使用方法
RPM(8) System Manager's Manual RPM(8)
NAMEISCELLANEOUS:
rpm - RPM Package Manager}
Manual page rpm(8) line 1 (press h for help or q to quit)
SYNOPSIS
QUERYING AND VERIFYING PACKAGES:
rpm {-q|--query} [select-options] [query-options]
rpm {-V|--verify} [select-options] [verify-options]
INSTALLING, UPGRADING, AND REMOVING PACKAGES:
rpm {-i|--install} [install-options] PACKAGE_FILE ...
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
rpm {-e|--erase} [--allmatches] [--justdb] [--nodeps] [--noscripts]
[--notriggers] [--test] PACKAGE_NAME ...
MISCELLANEOUS:
rpm {--querytags|--showrc}
rpm {--setperms|--setugids} PACKAGE_NAME ...
select-options
[PACKAGE_NAME] [-a,--all] [-f,--file FILE]
[-g,--group GROUP] {-p,--package PACKAGE_FILE]
[--hdrid SHA1] [--pkgid MD5] [--tid TID]
[--querybynumber HDRNUM] [--triggeredby PACKAGE_NAME]
[--whatprovides CAPABILITY] [--whatrequires CAPABILITY]
query-options
[--changelog] [-c,--configfiles] [--conflicts]
[-d,--docfiles] [--dump] [--filesbypkg] [-i,--info]
[--last] [-l,--list] [--obsoletes] [--provides]
[--qf,--queryformat QUERYFMT] [-R,--requires]
[--scripts] [-s,--state] [--triggers,--triggerscripts]
verify-options
[--nodeps] [--nofiles] [--noscripts]
[--nodigest] [--nosignature]
[--nolinkto] [--nofiledigest] [--nosize] [--nouser]
[--nogroup] [--nomtime] [--nomode] [--nordev]
[--nocaps] [--noconfig]
install-options
[--allfiles] [--badreloc] [--excludepath OLDPATH]
[--excludedocs] [--force] [-h,--hash]
[--ignoresize] [--ignorearch] [--ignoreos]
[--includedocs] [--justdb] [--nocollections]
[--nodeps] [--nodigest] [--nosignature] [--noplugins]
[--noorder] [--noscripts] [--notriggers]
[--oldpackage] [--percent] [--prefix NEWPATH]
[--relocate OLDPATH=NEWPATH]
[--replacefiles] [--replacepkgs]
[--test]
看到这些也是很头疼,然而在日常的系统管理过程中用到的也不是很多。
先来看看rpm的安装
rpm -ivh pkg_name
install options:
--test:测试安装,但不真正执行安装过程
--nodeps:忽略依赖关系 <处理循环依赖>
--replacepkgs:替换原有程序包
--ignoreos: 忽略OS
--ignoresignature:不检查来源合法性
--nodigest:不检查包完整性
--noscripts:不执行安装过程中的所有脚本
在安装软件包的时候会有大概四类脚本需要安装
--nopre 不执行安装前的脚本
--nopost 不执行安装后的脚本
--nopreun 不执行卸载前的脚本
--nopostun 不执行卸载后的脚本
--oldpackage pkg_name 对于一个软件包进行降级处理
升级相关的操作
rpm -U[Upgrade]vh pkg_name 有旧版程序则升级没有则安装
rpm -F[freshen]vh pkg_name 有旧版程序则升级没有不做任何操作
这里有一个不经常用的选项--force 强制升级 <一般不建议使用>
查询相关的操作
rpm [-q|query] [select optins] [qurey options]
这是rpm在查询时所用的一般的语法
select options:
-a 查询所有已经安装的包
rpm -qa [pkg_name] 如果没有任何参数则显示所有已经安装的包
-f 查询指定的文件由那个包生成
rpm -qf file_name
--whatrequires 查询指定的capability被哪个包依赖
rpm -q --whatrequires bash 即查看bash被那些包所依赖
--whatprovides 查询指定的capability由哪个包提供
rpm -q --whatprovides bash 可以查看哪个包提供了bash功能
query options:
--changelog 查询rpm包制作的changelog<这里指的是制作rpm包的changelog而不是软件升级的log>
rpm -q --changelog pkg_name 可以查看这个包的changelog
-c|--configfile 查询安装后的配置文件
rpm -q --configfile pkg_name 查看此包的配置文件由哪些
--conflicts 查询安装包的冲入选项
rpm -q --conflicts pkg_name 查看此包的冲突项
-i|--info 查看这个包的所有信息
rpm -qi pkg_name 查看这个包的摘要信息 <常用项>
-l 查看安装包后所有生成的文件
rpm -ql pkg_name
--scripts 查看指定包的所有脚本
rpm -q --scripts pkg_name
rpm包认证相关的操作
rpm -V|verfiey [select options] [verfiey options] pkg_name
rpm -V bash 如果认证成功则没有任何显示
可以从本地导入rpm的GPG-KEY文件[安装需要校验的公钥文件]
rpm --import local-GPG-KEY
rpm卸载软件
rpm -e|erase pkg_name
rpm数据库维护操作
rpm initdb 初始化数据库,如果数据库不存在则重建,如果存在则不做任何操作
rpm rebuilddb 重建数据库,无论存在与否直接重建
rpm相关的操作就这些,由于篇幅关系,关于yum的相关操作,在下一个博客中