共计 5117 个字符,预计需要花费 13 分钟才能阅读完成。
rpm:安装,查询,升级,校验,卸载
Topic:
程序包
rpm 管理
yum 管理
程序包:
什么是程序包管理器:
将编译好的应用程序的各个组成文件打包成一个或几个程序包文件,从而更方便地实现程序包的安装、升级、卸载和查询等管理操作
程序包的组成清单:
文件清单
安装或卸载时运行的脚本
数据库 (公共)
程序包的名称和版本
依赖关系
功能说明
安装生成的个文件的文件路径及校验信息
…
获取程序包的途径
(1) 系统发行版的光盘或官方的文件服务器 (或镜像站点)
(2) 项目的官方站点
(3) 第三方组织
a. EPEL
b. rpm 包搜索引擎
(4) 自动动手制作 rpm 包
RPM 管理:包括 rpm 包的安装、查询、升级、校验、卸载
rpm 包命名格式
name-version-release.arch.rpm
version: major.minor.release
release: rpm 包的发行号
release os: 2.el7.i386.rpm
arch: 平台。例如:i386, x86_64 等
rpm 命令:rpm [OPTIONS] [PACKAGE_FILE]
安装:-i, –install,在当前系统安装一个新的 rpm 软件包
升级:-U, –update, 检查并升级指定的软件包,如果系统没有此软件包则执行安装命令
-F, –freshen,检查并升级指定的软件包,如果系统没有此软件包不执行安装命令
卸载:-e, –erase,删除指定的软件包
查询:-q, –query,查询软件包的相关信息
校验:-V, –verify,安装后校验指定的软件包
数据库维护:–builddb, –initdb
安装功能:
rpm {-i|–install} [install-options] PACKAGE_FILE…
常用选项:
rpm -ivh PACKAGE_FILE
-v:verbose,详细信息
-vv:更详细的输出
[install-options]:
-h:hash marks,输出进度条,每个 #表示 2% 的进度
–test:测试安装,并不是真正的安装,检查并报告依赖关系及冲突消息等。
–nodeps:忽略依赖关系,不建议使用
–replacepkgs:替代原来的包重新安装
–nosigature:不检查包签名信息,不检查包来源合法性
–nodigest:不检查包完整性
升级功能:
rpm {-U|–upgrade} [install-options] PACKAGE_FILE
rpm {-F|–freshen} [install-options] PACKAGE_FILE
注意:
(1) 不要对内核做升级操作,Linux 支持多内核版本并存,因此,直接安装新版本内核
(2) 如果某源程序包的配置文件安装后曾被修改过,升级时,新版本的程序提供的同一个配置文件不会覆盖原有版本的覆盖文件,而是把新版本的配置文件重命名后提供
卸载命令:
rpm {-e|–erase} ] [–allmatches] [–nodeps] [–noscripts] [–test] PACKAGE_NAME….
–allmatch:卸载所有匹配指定名称的程序包的各版本
–nodeps:卸载时忽略依赖关系
–test:测试卸载,并不执行真正的卸载命令
查询功能:
rpm {-q|–query} [selection-options] [query-options] PACKAGE_NAME
[selection-options]
PACKAGE_NAME:查询指定的程序包是否已经安装
-a, –all:查询所有已经安装过的包
-f FILE:查询指定文件由那个程序包安装生成
-p, –package PACKAGE_FILE:用于实现对未安装的程序包执行查询操作
–whatprovides CAPABILITY:查询指定的 CAPABILITY 由那个程序包提供
–whatrequires CAPABILITY:查询指定的 CAPABILITY 被那个包以来
[query-options]
–changelog:查询 rpm 包的 changelog
-l,–list PACKAGE_NAME:查询安装生成文件列表
-i,–info PACKAGE_NAME:程序包相关信息,版本号、大小、所属的包组等
-c,–configfiles:查询指定的程序包提供的配置文件
-d,–docfiles:查询指定的程序包提供的文档
–provides PACKAGE_NAME:列出指定的程序包提供的所有的 CAPABILITY
-R,–requires PACKAGE_NAME:查询指定的程序包的依赖关系
–scripts PACKAGE_NAME:查询程序包自带的 scripts 都有哪些信息
常用语法格式:
rpm -qi PACKAGE_NAME
rpm -qf PACKAGE_FILE
rpm -qc PACKAGE_NAME
rpm -ql PACKAGE_NAME
rpm -qd PACKAGE_NAME
rpm -qpl PACKAGE_FILE
rpm -qpi PACKAGE_FILE
rpm -qpc PACKAGE_FILE
校验功能:
rpm {-V|–verify} [select-options] [verify-optoins]
S file Size differ
M Mode differs (including 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
包来源合法性验证和完整性验证:
来源合法性验证:
数字签名:制作者提取加密程序包的特征码,然后将自己的私钥加到特征码后面
完整性验证:获取并导入新人的包制作者的秘钥
对于 CentOS 7 来说:rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-CENTOS-7
验证:
(1) 安装此组织签名的程序时,会自动执行验证;
(2) 手动验证:rpm -K PACKAGE_FILE
数据库重建:
rpm 管理器数据库路径:/var/lib/rpm
查询操作:通过此处的数据库进行
获取帮助:
CentOS 6:man rmp
CentOS 7:man rpmdb
rpm {–initdb | –rebuilddb}
–initdb:初始化数据库,当前无任何数据库可初始化创建一个新的;当前有时不执行任何操作
–rebuilddb:重新构建,通过读取当前系统上所有已经安装过的程序包进行重新创建
YUM 管理:
什么是 yum
yum 的全称是 (Yellow Dog Modifier),是 RHEL 系列 Linux 发行版的包管理工具。主要帮助我们解决了安装时包之间的依赖关系
yum repository:yum rempo
存储了众多 rpm 包,以及包的相关的元数据文件 (放置于特定目录下:repodata)
文件服务器的类型:
nfs://
yum 客户端
配置文件:
/etc/yum.conf:为所有仓库提供公共配置
/etc/yum.repo.d/*.repo:为仓库的指向提供配置
仓库指向的定义:
[repositoryID]
name=Some name for this repository
baseurl=url://path/to/repository
enabled={1|0}
gpgcheck
gpgkey=url
enablegroup={1|0}
failovermethod={roundrobin|priority}
默认为:roundrobin,意为碎金挑选
const=
默认为 1000
yum 命令的用法:
yum [options] [command] [package]
* install package1 [package2] […]
* update [package1] [package2] […]
* update-to [package1] [package2] […]
* update-minimal [package1] [package2] […]
* check-update
upgrade [package1] [package2] […]
* upgrade-to [package1] [package2] […]
* distribution-synchronization [package1] [package2] […]
* remove | erase package1 [package2] […]
* autoremove [package1] […]
* list […]
* info […]
* provides | whatprovides feature1 [feature2] […]
* clean [packages | metadata | expire-cache | rpmdb | plugins | all]
* makecache [fast]
* groups […]
* search string1 [string2] […]
* shell [filename]
* resolvedep dep1 [dep2] […]
(maintained for legacy reasons only – use repoquery or yum provides)
* localinstall rpmfile1 [rpmfile2] […]
(maintained for legacy reasons only – use install)
* localupdate rpmfile1 [rpmfile2] […]
(maintained for legacy reasons only – use update)
* reinstall package1 [package2] […]
* downgrade package1 [package2] […]
* deplist package1 [package2] […]
* repolist [all|enabled|disabled]
* repoinfo [all|enabled|disabled]
* repository-packages <enabled-repoid> <install|remove|remove-or-reinstall|remove-or-distribu‐
tion-synchronization> [package2] […]
* version [all | installed | available | group-* | nogroups* | grouplist | groupinfo]
* history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|roll‐
back|new|sync|stats]
* load-transaction [txfile]
* updateinfo [summary | list | info | remove-pkgs-ts | exclude-updates | exclude-all | check-run‐
ning-kernel]
* fssnapshot [summary | list | have-space | create | delete]
* fs [filters | refilter | refilter-cleanup | du]
* check
* help [command]
显示仓库列表:
repolist [all|enabled|disabled]
显示程序包
list
yum list [all | glob_exp1] [glob_ex2] […]
yum list availabel {available | installedupate} [glob_exp1] […]
安装程序包:
yum install package1 [package2] […]
reinstall package1 [package2] […] 重新安装
rpm 的安装包在安装时可能会和其他程序要有依赖关系。
前端工具能自动解决:
yum:RHEL 系列系统上 rpm 包管理器的前端工具
apt-get(apt-cache):Debian 系统 deb 包管理器的前端工具
zypper:SUSE 系统 rpm 包管理器的前端工具
-ivh:rpm 包安装
-Uvh:更新或安装
-Fvh:
yum:
编译:将程序源码编译后安装