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.-.el6.centos.x86_64
- dracut--.el6.noarch
- rsyslog-5.8.-.el6_6.x86_64
- cronie-1.4.-.el6_7..x86_64
- autofs-5.0.-.el6.x86_64
- lvm2-2.02.-.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.
- /usr/share/doc/python-2.6.
- /usr/share/doc/python-2.6./LICENSE
- /usr/share/doc/python-2.6./README
- /usr/share/man/man1/python..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./LICENSE
- /usr/share/doc/python-2.6./README
- /usr/share/man/man1/python..gz
--provides:列出指定程序包所提供的所有功能,如:
- [root@myadmin ~]# rpm -q --provides python
- Distutils
- python(abi) = 2.6
- python-abi = 2.6
- python-ctypes = 1.0.
- python-hashlib =
- python-sqlite = 2.3.
- python-uuid = 1.31
- python-x86_64 = 2.6.-.el6
- python2 = 2.6.
- python = 2.6.-.el6
- python(x86-) = 2.6.-.el6
-R,--requires:查询指定程序包的依赖关系,如:
- [root@myadmin ~]# rpm -qR python
- /usr/bin/python2.
- libc.so.()(64bit)
- libc.so.(GLIBC_2.2.5)(64bit)
- libdl.so.()(64bit)
- libm.so.()(64bit)
- libpthread.so.()(64bit)
- libpython2..so.1.0()(64bit)
- libutil.so.()(64bit)
- python-libs(x86-) = 2.6.-.el6
- rpmlib(CompressedFileNames) <= 3.0.-
- rpmlib(FileDigests) <= 4.6.-
- rpmlib(PartialHardlinkSets) <= 4.0.-
- rpmlib(PayloadFilesHavePrefix) <= 4.0-
- rpmlib(VersionedDependencies) <= 3.0.-
- rtld(GNU_HASH)
- rpmlib(PayloadIsXz) <= 5.2-
--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/
- 总用量
- -rw-r--r--. root root 5月 : RPM-GPG-KEY-CentOS-
- -rw-r--r--. root root 5月 : RPM-GPG-KEY-CentOS-Debug-
- -rw-r--r--. root root 5月 : RPM-GPG-KEY-CentOS-Security-
- -rw-r--r--. root root 5月 : RPM-GPG-KEY-CentOS-Testing-
手动验证:
rpm -K PACKAGE_FILE
例如:
- [root@myadmin ~]# rpm -K zsh-4.3.-.el6.centos..x86_64.rpm
- zsh-4.3.-.el6.centos..x86_64.rpm: rsa sha1 (md5) pgp md5 OK
Linux程序包管理初步-rpm的使用的更多相关文章
- Linux程序包管理之rpm
rpm简介 rpm( Red Hat Package Manager )是一个开放的软件包管理系统.它工作于Red Hat Linux及其他Linux系统,成为Linux中公认的软件包管理标准. rp ...
- 【程序包管理】Linux程序包管理之rpm安装总结
rpm简介 rpm( Red Hat Package Manager )是一个开放的软件包管理系统.它工作于Red Hat Linux及其他Linux系统,成为Linux中公认的软件包管理标准. rp ...
- Linux程序包管理初步-yum的使用
何为yum? yum:由yellow dog研发,全称Yellowdog Update Modifier 是rhel系列系统上rpm包管理器的前端工具,可用来自动解决依赖关系,从而更好的实现程序包的安 ...
- Linux程序包管理rpm与yum
Linux程序包管理 Linux中软件的安装主要有两种形式:一种是直接下载源代码包自行编译后安装,另一种直接获取rpm软件包进行安装. 程序的组成部分: 二进制程序:程序的主体文件,比如我们运行一个l ...
- Linux程序包管理之yum及源代码安装
第十六章.Linux程序包管理之yum及源代码安装 目录 yum介绍 yum配置文件 yum的repo配置文件中可用的变量 yum命令的使用 使用光盘作为本地yum仓库 如何创建yum仓库 编译安装的 ...
- Linux下程序包管理工具RPM
实验环境: CentOS release 6.6 (Final) 一台 IP地址:172.16.249.230 RPM 是 Red Hat Package Manager 的缩写,本意是Red Ha ...
- Linux 程序包管理-RPM
程序简介: POSIX(Portable Openratin System)跨平台系统:不同操作系统平台的标准C库(glibc)都是遵循POSIX规范的,这样基于标准库开发程序的源代码可以夸平台编译 ...
- 十六、程序包管理之 rpm
c语言程序的构建过程 1.程序源代码 --> 预处理 --> 编译 --> 汇编 --> 链接--> 可执行程序 开放源码:就是程序码,文本格式的源代码,写给人类看的程序 ...
- Linux 程序包管理-YUM
前端工具YUM管理程序包: rpm管理软件虽然方便,但是需要手工解决软件包的依赖关系:很多时候安装一个软件需要首先安装一个或多个(有时多达上百个)其它软件,手工解决很复杂:使用yum可以解决这个问题 ...
随机推荐
- ImportError: cannot import name webdriver解决方案
在sublime写一个Python程序的时候,使用from selenium import webdriver,在run的时候却出现ImportError: cannot import nam ...
- js字符实体 转义字符串
HTML字符实体(Character Entities),转义字符串(Escape Sequence) 为什么要用转义字符串? HTML中<,>,&等有特殊含义(<,> ...
- 1、docker centos 安装
Docker for CentOS: 第一步:使用官方yum仓库 [root@linux-node1 ~]# yum install -y yum-utils [root@linux-node1 ~] ...
- JavaScript特效源码(1、文字特效)
注:本文以及以下关于Javascript特效源码都是分享自JavaScript源码大全. 1.逐隐逐现的的特效 逐隐逐现的文字特效[推荐使用][适用于IE4++] (修改显示的文字后根据说明进行共2步 ...
- 关于Slice的一些补充说明
s[m:n:l] 规则总结如下. (1) 范围 [m,n),从m开始轮询:超出范围后选边界值. l>0 l<0 关于边界值 (2) 把字符串完全反序,用 s[::-1]. 有些文档上说 s ...
- 廖雪峰Java14Java操作XML和JSON-1XML-4第三方XML库
总结: 使用Jackson可以快速在XML和JavaBean之间互相转换 可使用Annotation定制序列化和反序列化
- Elasticsearch基本命令
检查集群运行情况: GET -> localhost:9200/_cat/health?v 查看集群节点列表: GET -> localhost:9200/_cat?n ...
- vue如何关闭sourceMap
Vue打包后出现一些map文件的解决办法: 问题: 可能很多人在做vue项目打包,打包之后js中,会自动生成一些map文件,那我们怎么把它去掉不要呢? 1,运行 cnpm run build 开始 ...
- git 命令行(四)-推送分支到远程
在本地新建一个分支: git branch newBranch 切换到你的新分支: git checkout newBranch 创建并切换到新分支: git checkout -b newBranc ...
- 一个Js开发者学习Python的第一天
原文地址:小寒的博客 https://www.dodoblog.cn/blogs/5bf6b8fa0c09883d0f8aad13 作为一个有着足足两年半学习经验和一年半开发经验的js开发者,看着js ...