首页 > 代码库 > Linux程序包管理初步-rpm的使用
Linux程序包管理初步-rpm的使用
在Linux系统上,一般而言,对于程序包管理器来说分为三类:
debian:dpt,dpkg; (程序包后缀.deb)
rhel:rpm (程序包后缀.rpm)
suse:rpm (程序包后缀.rpm)
那么,程序包管理器该怎么理解呢?
程序包管理器:将编译好的应用程序的各组成文件打包成一个或几个程序包文件,从而更方便的实现程序包的安装、卸载、升级、查询、校验等管理操作。
对于Centos系列来讲,rpm数据库的路径是:/var/lib/rpm
rpm包命名格式:
name-version-release.arch.rpm //name:软件的名称 //version:软件的版本 //release:发行商版本 //arch:系统架构
如:heartbeat-2.1.4-12.el6.x86_64.rpm
接下来,详细介绍rpm命令的相关使用:
rpm [OPTIONS] [PACKAGE_FILE]
其主要选项有:
-i,--install:安装
-e,--erase:卸载
-U,--upgrade:升级
-q,--query:查询
-V,--verify:校验
--buliddb,--initdb:数据库维护
-v:显示安装详情
-vv:显示更为详细的信息
①安装相关:
rpm [OPTIONS] [INSTALL-OPTIONS] [PACKAGE_FILE]
其中,[INSTALL-OPTIONS](安装选项)有:
-h:显示安装进度条(50个#);
--test:测试安装;
--nodeps:忽略程序包依赖关系(不建议使用);
--replacepkgs:重新安装;
--nosignature:不检查程序包签名信息;
--nodigest:不检查程序包完整性信息;
②升级相关:
rpm [OPTIONS] [UPGRADE-OPTIONS] [PACKAGE_FILE]
rpm [OPTIONS] [FRESHEN-OPTIONS] [PACKAGE_FILE]
其中,常用选项有:
-U:升级并安装;
-F:仅进行升级;
--oldpackage:降级
--force:强制升级
③卸载相关:
rpm [OPTIONS] [ERASE-OPTIONS] [PACKAGE_FILE]
其中,常用选项有:
--allmatches:卸载所有匹配指定名称的程序包的各版本;
--nodeps:忽略依赖关系
--test:测试卸载
④查询相关:
rpm [OPTIONS] [SELECT-OPTIONS] [QUERY-OPTIONS]
其中:[SELECT-OPTIONS]有:
PAKAGE_NAME:查询指定软件是否已经安装即其版本(此处是packagename,不是packagefile)
-a,--all:查询所有已安装的程序包;
-f FILE:查询指定文件是由哪个程序包安装生成的,例如:
[root@myadmin ~]# rpm -q -f /etc/passwd setup-2.8.14-20.el6_4.1.noarch
-p,--package PACKAGE_FILE:用于实现对未安装的程序包执行查询操作
--whatprovides CAPBILITY:查询指定的能力是由哪个程序包提供的,如:
[root@myadmin ~]# rpm -q --whatprovides zsh zsh-4.3.11-4.el6.centos.2.x86_64
--whatrequires CAPBILITY:查询指定的能力是被哪个程序包所依赖,如:
[root@myadmin ~]# rpm -q --whatrequires bash initscripts-9.03.53-1.el6.centos.x86_64 dracut-004-409.el6.noarch rsyslog-5.8.10-10.el6_6.x86_64 cronie-1.4.4-15.el6_7.1.x86_64 autofs-5.0.5-122.el6.x86_64 lvm2-2.02.143-7.el6.x86_64
[QUERY-OPTIONS]有:
--changelog:查询rpm包的changelog;
-l,--list:程序安装生成的所有文件列表,如:
[root@myadmin ~]# rpm -ql python /usr/bin/pydoc /usr/bin/python /usr/bin/python2 /usr/bin/python2.6 /usr/share/doc/python-2.6.6 /usr/share/doc/python-2.6.6/LICENSE /usr/share/doc/python-2.6.6/README /usr/share/man/man1/python.1.gz
-i,--info:程序包的相关信息【版本号、大小、所属包组等】
-c,--configfiles:查询指定的程序包所提供的配置文件,如:
[root@myadmin ~]# rpm -qc zsh /etc/skel/.zshrc /etc/zlogin /etc/zlogout /etc/zprofile /etc/zshenv
-d,--docfiles:查询指定的程序包所提供的文档,如:
[root@myadmin ~]# rpm -qd python /usr/share/doc/python-2.6.6/LICENSE /usr/share/doc/python-2.6.6/README /usr/share/man/man1/python.1.gz
--provides:列出指定程序包所提供的所有功能,如:
[root@myadmin ~]# rpm -q --provides python Distutils python(abi) = 2.6 python-abi = 2.6 python-ctypes = 1.0.1 python-hashlib = 20081120 python-sqlite = 2.3.2 python-uuid = 1.31 python-x86_64 = 2.6.6-64.el6 python2 = 2.6.6 python = 2.6.6-64.el6 python(x86-64) = 2.6.6-64.el6
-R,--requires:查询指定程序包的依赖关系,如:
[root@myadmin ~]# rpm -qR python /usr/bin/python2.6 libc.so.6()(64bit) libc.so.6(GLIBC_2.2.5)(64bit) libdl.so.2()(64bit) libm.so.6()(64bit) libpthread.so.0()(64bit) libpython2.6.so.1.0()(64bit) libutil.so.1()(64bit) python-libs(x86-64) = 2.6.6-64.el6 rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PartialHardlinkSets) <= 4.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(VersionedDependencies) <= 3.0.3-1 rtld(GNU_HASH) rpmlib(PayloadIsXz) <= 5.2-1
--scripts:查看程序包自带的脚本片段;
④校验相关
rpm [OPTIONS] [SELECT-OPTIONS] [VERIFY-OPTIONS]
与上面的类似,在此不再赘述。
⑤数据库相关
rpm {--initdb|--rebuilddb}
其中:
--initdb:初始化数据库,当前无任何数据库可初始化创建一个新的;当前有时不执行任何操作;
--rebuilddb:重新构建,通过读取当前系统上所有已经安装过的程序包进行重新构建;
rpm包的验证相关:
首先要获取并导入程序包制作者的密钥:
对于CentOS发行版来说:
rpm --import /etc/pki/rpm-gpg/******
例如:
[root@myadmin ~]# ls -l /etc/pki/rpm-gpg/ 总用量 16 -rw-r--r--. 1 root root 1706 5月 19 03:47 RPM-GPG-KEY-CentOS-6 -rw-r--r--. 1 root root 1730 5月 19 03:47 RPM-GPG-KEY-CentOS-Debug-6 -rw-r--r--. 1 root root 1730 5月 19 03:47 RPM-GPG-KEY-CentOS-Security-6 -rw-r--r--. 1 root root 1734 5月 19 03:47 RPM-GPG-KEY-CentOS-Testing-6
手动验证:
rpm -K PACKAGE_FILE
例如:
[root@myadmin ~]# rpm -K zsh-4.3.11-4.el6.centos.2.x86_64.rpm zsh-4.3.11-4.el6.centos.2.x86_64.rpm: rsa sha1 (md5) pgp md5 OK
Linux程序包管理初步-rpm的使用