当前位置:首页 > 实时新闻 > 正文

Linux程序包管理(rpm和yum工具)

摘要: Linux程序包管理(rpm和yum工具)最佳答案53678位专家为你答疑解惑Linux程序包管理(rpm和yum工具)Linu...

Linux程序包管理(rpm和yum工具)

最佳答案 53678位专家为你答疑解惑

Linux程序包管理(rpm和yum工具)

Linux程序包的管理需要依赖程序包管理工具,程序包管理工具可以实现程序的安装、升级、卸载、查询和校验,等等相关操作。本文主要介绍使用rpm和yum实现程序包的管理。

rpm程序包管理基础(1) rpm程序包的命名格式(2) 如何获取rpm程序包?rpm命令(1) 安装(2) 升级(3) 卸载(4) 查询(5) 校验(6) rpm数据库管理(7) rpm命令的相关示例yum命令(1) yum仓库(2) yum的配置文件(3) 通过yum命令管理程序(4) yum仓库配置示例(5) yum命令的相关示例
1、rpm程序包管理基础(1) rpm程序包的命名格式

rpm程序包通常分为主程序包和程序包分支,命名格式分别如下:

主程序包命名格式NAME-VERSION-RELEASE.ARCH.rpm程序包分支命名格式NAME-FUNCTION-VERSION-RELEASE.ARCH.rpm

命名中各字段的含义:

NAME:程序包名,与源代码的名称一致VERSION: major.minor.release,版本信息,与源代码的版本信息一致,如4.3.2(主版本号.次版本号.发行号)RELEASE:rpm程序包自身的发行号,与源代码的发行号无关,是制作rpm包的不同修订版本,RELEASE还包括此rpm包适用的系统,如4.3.2-2.centos7ARCH:支持的cpu架构,如:i386、x86_64FUNCTION:用于描述程序包分支的功能

这里贴一张图来加深理解,出处不详:

image.png(2) 如何获取rpm程序包?

系统发行版的光盘或官方的文件服务器(或其他镜像站点)。系统自带的程序包可以光盘或光盘镜像文件获取。如:http://mirrors.aliyun.com | http://mirrors.sohu.com | http://mirrors.163.com

程序项目的官方站点。如:http://www.zabbix.com

EPELEPEL(Extra Packages for Enterprise Linux)是由Fedora Special Interest Group维护的Enterprise Linux(RHEL、CentOS)中经常用到的包。

rpm搜索引擎如:http://pkgs.org | http://rpmfind.net | http://rpm.pbone.net

自己制作rpm包

建议在网上获取rpm包后,检查其合法性(来源合法性和程序包完整性)

2、rpm命令

Linux发行版如RedHat、SuSE系列目前都是用rpm来实现程序包管理。rpm的全称是Redhat Package Manager,由RedHat研发,后形成标准后,成为Rpm is Package Manager,这是rpm的新定义。

程序包管理器的功能是将编译好的应用程序的各组成文件打包成一个或几个程序包文件,从而更方面地实现程序包的安装、升级、卸载和查询等管理操作,它由两部分组成:

程序包的组成清单这是基于个体的,每个程序包都有一个自己的清单,其中有程序包中的文件清单、安装或卸载时运行的脚本,等等。程序包管理器的数据库这是公共的,数据库中记录各程序包的名称和版本、依赖关系、程序包的功能说明、安装生成的各文件路径及校验码信息,等等。在CentOS中,各数据库文件存放在/var/lib/rpm/下。

接下来详细描述如何通过rpm命令实现rpm程序包的安装、升级、卸载、查询和校验,以及rpm数据库维护。

rpm命令的用法总结简化后如下:

rpm [OPTIONS] [GENERAL_OPTIONS] [PACKAGE_FILE | PACKAGE_NAME]

通过OPTIONS来指定要进行的操作:

安装:-i,--install升级:-u,--update,或-F,--freshen卸载:-e,--erase查询:-q,--query校验:-V,--verify数据库管理:--builddb,--initdb

通过GENERAL_OPTIONS来自定义操作过程

-v: verbose, 详细信息-vv:更详细的输出-_-||

通过程序包文件名和程序包名来指定作用对象PACKAGE_FILE是文件名,需要程序包文件的完整名称;PACKAGE_NAME是程序名,只需指定程序包名中的NAME。(1) 安装语法格式rpm {-i|--install} [install-options] PACKAGE_FILE...

安装需要指定程序包的文件名。安装rpm包的常用固定格式为:

rpm -ivh PACKAGE_FILE...表示安装过程中显示进度条和详细信息。

install-options包括:

-h:hash marks,输出进度条,用#表示,每个#表示2%的进度;--test:测试安装,检查并报告依赖关系及冲突消息等;--nodeps:忽略依赖关系,不建议;--replacepkgs:重新安装,(不会替代配置文件);--noscripts:不执行rpm自带的所有脚本(共四种,可分别单独禁用);--nosignature: 不检查包签名信息,即不检查来源合法性;--nodigest:不检查包完整性信息。

这里强调一下,rpm的自带脚本分为四种,分别为:

%pre:preinstall,安装过程开始之前运行的脚本,单独禁用使用install options中的--nopre;%post:postinstall,安装过程完成之后运行的脚本,单独禁用使用install options中的--nopost;%preun:preuninstall,卸载过程真正开始执行之前运行的脚本,单独禁用使用install options中的--nopreun;%postun:postuninstall,卸载过程完成之后运行的脚本,单独禁用使用install options中的--nopostun
(2) 升级语法格式rpm {-U|--upgrade} [install-options] PACKAGE_FILE...rpm {-F|--freshen} [install-options] PACKAGE_FILE...

这里需要注意一下-U和-F的区别:

-U表示升级或安装指定的程序已安装时,则执行升级;若未安装,则安装。

-F表示仅升级,不安装即程序未安装时,则不进行任何操作。

升级需要指定的也是程序包的文件名。

升级rpm包的常用固定格式为:

rpm -Uvh PACKAGE_FILE...rpm -Fvh PACKAGE_FILE...在升级过程中显示进度条和详细信息。

rpm安装的install-options同样适用于此,下面是两个额外的选项:

--oldpackage:降级--force:强制升级

关于程序升级有两点需要注意:

不要对内核做升级操作,Linux支持多内核版本并存,因此直接安装新版本内核即可;升级时,如果某程序包的配置文件安装后曾被修改过,新版本的程序提供的同一个配置文件不会覆盖原有版本的配置文件,而是把新版本的配置文件重命名后提供。(3) 卸载语法格式rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--test] PACKAGE_NAME...

卸载需要指定的是程序名。

常用的选项:

--allmatches: 卸载所有匹配指定名称的程序包的各版本;--nodeps: 忽略依赖关系;--test:测试卸载,dry run模式。
(4) 查询语法格式rpm {-q|--query} [--select options] [--query options] [PACKAGE_NAME]

select options用于指定要查询的对象或范围,包括:

PACKAGE_NAME: 查询指定的程序包是否已经安装,及其版本-a,--all:查询所有已安装的包;可以配合grep查询记不清包名的程序;-f FILE,--file FILE:查询指定的文件由哪个程序包安装生成-p,--package:用于实现对未安装的程序包执行查询操作;--whatprovides CAPABILITY:查询指定的CAPABILITY由哪个程序包提供;--whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖;

query options用来指定要查询什么内容,包括:

-changelog:查询rpm包的changelog;-l,--list:程序安装生成的所有文件列表;-i,--info:程序包相关的信息,版本号、大小、所属的包组,等;-c,--configfiles:查询指定的程序包提供的配置文件;-d,--docfiles:查询指定的程序包提供的文档;--provides:列出指定的程序包提供的所有CAPABILITY;-R,--requires:查询指定程序包的依赖关系;--scripts:查询指定的程序包自带的脚本片段;

rpm查询的常用固定组合:

查询已安装的程序(指定程序名):

rpm -qf FILErpm -qi PACKAGE_NAMErpm -qc PACKAGE_NAMErpm -ql PACKAGE_NAMErpm -qd PACKAGE_NAME

查询未安装的程序(指定程序包的文件名)

rpm -qpi PACKAGE_FILErpm -qpc PACKAGE_FILErpm -qpl PACKAGE_FILErpm -qpd PACKAGE_FILE...
(5) 校验语法格式rpm {-V|--verify} [select-options] [verify-options]

校验错误的结果显示包括:

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 mismatchU User ownership differs,属主不匹配;G Group ownership differs,属组不匹配;T mTime differs,修改时间不匹配;P caPabilities differ,程序包所提供的功能不匹配。
(6) rpm数据库管理

rpm程序包管理器的数据库路径为:/var/lib/rpm/,rpm管理操作就是基于此目录下的数据库文件进行的。

语法格式rpm {--initdb|--rebuilddb} [-v] [--dbpath DIRECTORY] [--root DIRECTORY]

选项含义:

--initdb:初始化数据库-当前无任何数据库时,可初始化创建一个新的;当时有数据库,则不执行任何操作;--rebuild:重新构建,通过读取系统上所有已经安装过的程序包进行重新创建。
(7) rpm命令的相关示例

rpm安装示例:安装光盘上的gnome-desktop3[root@localhost Packages]# rpm -ivh /mnt/cdrom/Packages/gnome-desktop3-3.14.2-2.el7.x86_64.rpmwarning: /mnt/cdrom/Packages/gnome-desktop3-3.14.2-2.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEYerror: Failed dependencies:gnome-themes-standard is needed by gnome-desktop3-3.14.2-2.el7.x86_64提示依赖的程序包没有安装,忽略依赖关系直接安装:[root@localhost Packages]# rpm -ivh --nodeps /mnt/cdrom/Packages/gnome-desktop3-3.14.2-2.el7.x86_64.rpmwarning: /mnt/cdrom/Packages/gnome-desktop3-3.14.2-2.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEYPreparing... ################################# [100%]Updating / installing...1:gnome-desktop3-3.14.2-2.el7 ################################# [100%]安装完成。使用rpm直接安装需要手动解决很多依赖关系,有时会绕的找不到北,后面用yum安装会方便快捷很多。也可以一次安装多个rpm包,后面的程序包文件名用“,”逗号隔开。

rpm查询示例:查看系统上是否安装了unzip程序[root@localhost Packages]# rpm -q unzip \\这里只需给出程序名即可unzip-6.0-15.el7.x86_64列出unzip程序所提供的目录和文件:[root@localhost Packages]# rpm -ql unzip/usr/bin/funzip/usr/bin/unzip/usr/bin/unzipsfx/usr/bin/zipgrep/usr/bin/zipinfo/usr/share/doc/unzip-6.0/usr/share/doc/unzip-6.0/BUGS/usr/share/doc/unzip-6.0/LICENSE/usr/share/doc/unzip-6.0/README/usr/share/man/man1/funzip.1.gz/usr/share/man/man1/unzip.1.gz/usr/share/man/man1/unzipsfx.1.gz/usr/share/man/man1/zipgrep.1.gz/usr/share/man/man1/zipinfo.1.gz可以看到安装unzip后都在系统上创建了哪些目录和文件。查看unzip程序的详细说明:[root@localhost Packages]# rpm -qi unzipName : unzip \\程序名Version : 6.0 \\程序版本Release : 15.el7 \\程序发行号Architecture: x86_64 \\支持的硬件平台Install Date: Tue 13 Feb 2018 05:06:57 PM CST \\安装时间Group : Applications/Archiving \\所属的包组Size : 365506 \\程序大小License : BSD \\授权方式Signature : RSA/SHA256, Thu 19 Mar 2015 04:52:16 AM CST, Key ID 24c6a8a7f4a80eb5Source RPM : unzip-6.0-15.el7.src.rpm \\程序包的文件名Build Date : Thu 19 Mar 2015 04:25:08 AM CST \\打包的时间Build Host : worker1.bsys.centos.orgRelocations : (not relocatable)Packager : CentOS BuildSystem <http://bugs.centos.org>Vendor : CentOSURL : http://www.info-zip.org/UnZip.htmlSummary : A utility for unpacking zip filesDescription : \\以下是更详细的程序描述The unzip utility is used to list, test, or extract files from a zip archive. Zip archives are commonly found on MS-DOS systems. The zip utility, included in the zip package, creates zip archives. Zip and unzip are both compatible with archives created by PKWARE(R)'s PKZIP for MS-DOS, but the programs' options and default behaviors do differ in some respects.

Install the unzip package if you need to list, test or extract files from a zip archive.找出unzip程序的说明文档和手册:[root@localhost Packages]# rpm -qd unzip/usr/share/doc/unzip-6.0/BUGS/usr/share/doc/unzip-6.0/LICENSE/usr/share/doc/unzip-6.0/README/usr/share/man/man1/funzip.1.gz/usr/share/man/man1/unzip.1.gz/usr/share/man/man1/unzipsfx.1.gz/usr/share/man/man1/zipgrep.1.gz/usr/share/man/man1/zipinfo.1.gz可以看到在/usr/share/man/man1/目录下有一些关于unzip的man手册,使用man 1 unzip可以查看这些手册中的相关说明。还可以查询已安装程序包的依赖关系,比如查询之前安装的gnome-desktop3的依赖关系:[root@localhost Packages]# rpm -qR gnome-desktop3/sbin/ldconfig/sbin/ldconfiggnome-themes-standardgsettings-desktop-schemas >=3.5.91libX11.so.6()(64bit)libXext.so.6()(64bit)libXrandr.so.2()(64bit)以下省略...可以看到gnome桌面依赖很多东西,所以手动使用rpm解决依赖关系非常费力。查询是/bin/bash由哪个程序所提供:[root@localhost Packages]# rpm -qf /bin/bashbash-4.2.46-19.el7.x86_64如果误删了某个文件,又不知道这个文件由哪个程序所提供,还是可以使用-qf选项来查询的,因为相关信息都存在rpm数据库中。获取一个rpm包,在安装前,查询它的依赖关系,可以加上-p选项,比如查询tree工具的依赖关系:[root@localhost Packages]# rpm -qpR tree-1.6.0-10.el7.x86_64.rpmwarning: tree-1.6.0-10.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEYlibc.so.6()(64bit)libc.so.6(GLIBC_2.14)(64bit)libc.so.6(GLIBC_2.2.5)(64bit)libc.so.6(GLIBC_2.3)(64bit)libc.so.6(GLIBC_2.3.4)(64bit)libc.so.6(GLIBC_2.4)(64bit)rpmlib(CompressedFileNames) <=3.0.4-1rpmlib(FileDigests) <=4.6.0-1rpmlib(PayloadFilesHavePrefix) <=4.0-1rtld(GNU_HASH)rpmlib(PayloadIsXz) <=5.2-1注意这里需要给出程序包的文件路径。查询系统上以c开头的程序有几个:[root@localhost ~]# rpm -qa | grep ^c | wc -l48

3、yum命令

百科中的定义:Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

可以将Yum当作一个C/S架构的服务,客户端是yum命令,服务器端就是yum的仓库指向。所以要使用yum,首先得有yum仓库,并且在本地的yum配置文件中指明仓库的位置。

(1) yum仓库

yum仓库(yum repository,又称yum repo),其中存储了:

众多rpm程序包;所以yum仓库首先是一个文件服务器。程序包的相关元数据文件。元数据文件存放在repodata这个特定的目录下,而yum配置文件中仓库的位置就是指定repodata目录所在的位置。

可以自己创建yum仓库,创建命令:createrepo [options] <directory>

(2) yum的配置文件

yum的配置文件主要有两类:

/etc/yum.conf这是yum命令的配置文件,为所有yum仓库提供公共配置。# man 5 yum.conf \\查看yum.conf配置文件的详细说明/etc/yum.repos.d/*.repo/etc/yum.repos.d/目录下所有以.repo结尾的文件,用于指定yum仓库指向的配置文件,每个文件中可以指定多个yum仓库。

*.repo配置文件中,仓库指向的定义:

[repositoryID]yum仓库的标识name=Name for this repositoryyum仓库的名字baseurl=url://path/to/repository/ (等号左右没有空格)yum仓库的url,即repodata目录所在的位置在指定url时,某个站点会包含多个适用于不同系统的yum仓库,它们的路径会按系统版本和支持的平台等来命名,如果通过手动指定会因系统的不同而比较繁琐,且容易出错,所以yum的repo配置文件中定义了一些可用的变量:
$releasever:当前OS的发行版的主版本号;$arch:平台$basearch:基础平台YUM0-YUM9:自定义

这些变量会获取系统版本和平台,自动补全到url路径中去。

enabled={1|0}是否启动(未指定的话,默认启动)gpgcheck={1|0}是否检查来源合法性和完整性repo_gpgcheck={1|0}是否检查repo元数据gpgkey=URL指明密钥文件enablegroups={1|0}是否支持在此仓库上执行组,来批量管理程序包failovermethod={roundrobin|priority}baseurl指向多个时,如何挑选(默认为roundrobin,随机挑选);cost=1000默认都为1000
(3) 通过yum命令管理程序语法格式

yum [options] [command] [package ...]

常用的commandrepolist - 显示仓库列表yum repolist [all|enabled|disabled]可以显示全部、已启用和未启用的(默认显示已启用的)list - 显示程序包yum list [all | glob_exp1] [glob_exp2] [...]yum list {available|installed|updates} [glob_exp1] [...]可以根据通配符进行匹配显示。install - 安装程序包yum install package1 [package2] [...]默认安装最新版本yum reinstall package1 [package2] [...]重新安装update - 升级程序包(如果不指定程序包,会升级所有已安装的程序)yum update [package1] [package2] [...]downgrade - 降级程序包yum downgrade [package1] [package2] [...]check-update - 检查可用升级remove | erase - 卸载程序包yum remove | erase package1 [package2] [...]info - 查看程序包信息provides | whatprovides - 查看指定的特性(或文件)是由哪个程序包所提供:yum provides | whatprovides feature1 [feature2] [...]clean - 清理本地缓存yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all]makecache - 构建缓存yum makecache [fast]search - 以指定的关键字搜索程序包名及summary信息yum search string1 [string2] [...]deplist - 查看指定包所依赖的capabilitiesyum deplist package1 [package2] [...]history - 查看yum事务历史yum history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]包组管理的相关命令yum grouplist [hidden] [groupwildcard] [...]yum groupinstall group1 [group2] [...]yum groupupdate group1 [group2] [...]yum groupremove group1 [group2] [...]yum groupinfo group1 [...]常用的options--nogpgcheck:禁止进行gpg check(即使配置文件中指定gpgcheck=1,也可以禁止);-y:自动回答为“yes”;-q:--quiet:静默模式;--enablerepo=repoidglob:临时启用此处指定的repo;--disablerepo=repoidglob:临时禁用此处指定的repo;--noplugins:禁用所有插件;(4) yum仓库配置示例

如何使用光盘或镜像文件当作本地yum仓库

首先挂载光盘或镜像文件至某目录[root@localhost ~]# mount -rt iso9660 /dev/cdrom /mnt/cdrom/在/etc/yum.repos.d/下创建.repo结尾的配置文件,并按格式配置[root@localhost ~]# cd /etc/yum.repos.d/[root@localhost yum.repos.d]# vim Local.repo[local]name=CentOS7 local repositybaseurl=file:///mnt/cdrom/enable=1gpgcheck=0

配置网络上的yum仓库为yum源以配置mirrors.aliyun.com为例:[root@localhost ~]# cd /etc/yum.repos.d/根据系统版本下载repo文件[root@localhost yum.repos.d]# wget http://mirrors.aliyun.com/repo/Centos-7.repo--2018-05-21 14:07:53-- http://mirrors.aliyun.com/repo/Centos-7.repoResolving mirrors.aliyun.com (mirrors.aliyun.com)... 124.238.245.105, 124.238.245.101, 124.238.245.104, ...Connecting to mirrors.aliyun.com (mirrors.aliyun.com)|124.238.245.105|:80... connected.HTTP request sent, awaiting response... 200 OKLength: 2573 (2.5K) [application/octet-stream]Saving to: ‘Centos-7.repo’

100%[============================================================================================>] 2,573 --.-K/s in 0s

2018-05-21 14:07:53 (79.0 MB/s) - ‘Centos-7.repo’ saved [2573/2573]查看yum仓库,aliyun的yum仓库已添加成功[root@localhost yum.repos.d]# yum repolistLoaded plugins: fastestmirror, langpacksLoading mirror speeds from cached hostfile* base: mirrors.aliyun.com* extras: mirrors.aliyun.com* updates: mirrors.aliyun.comrepo id repo name statusbase/7/x86_64 CentOS-7 - Base - mirrors.aliyun.com 9,911extras/7/x86_64 CentOS-7 - Extras - mirrors.aliyun.com 291updates/7/x86_64 CentOS-7 - Updates - mirrors.aliyun.com 539repolist: 10,741

(5) yum命令的相关示例搜索mysql相关程序包:[root@localhost yum.repos.d]# yum search mysqlLoaded plugins: fastestmirror, langpacksLoading mirror speeds from cached hostfile* base: mirrors.aliyun.com* extras: mirrors.aliyun.com* updates: mirrors.aliyun.com=========================================================N/S matched: mysql ``=========================================================MySQL-python.x86_64 : An interface to MySQLakonadi-mysql.x86_64 : Akonadi MySQL backend supportapr-util-mysql.x86_64 : APR utility library MySQL DBD driver以下省略查看mdadm程序的相关信息:[root@localhost yum.repos.d]# yum info mdadmLoaded plugins: fastestmirror, langpacksLoading mirror speeds from cached hostfile* base: mirrors.aliyun.com* extras: mirrors.aliyun.com* updates: mirrors.aliyun.comInstalled PackagesName : mdadmArch : x86_64Version : 3.3.2Release : 7.el7Size : 928 kRepo : installed以下省略列出yum仓库中可提供升级的本机程序:[root@localhost ~]# yum list updates | lessLoaded plugins: fastestmirror, langpacksLoading mirror speeds from cached hostfile* base: mirrors.aliyun.com* extras: mirrors.aliyun.com* updates: mirrors.aliyun.comUpdated PackagesImageMagick.x86_64 6.7.8.9-15.el7_2 baseImageMagick-perl.x86_64 6.7.8.9-15.el7_2 baseMySQL-python.x86_64 1.2.5-1.el7 base以下省略列出哪个程序提供了/bin/zsh这个文件[root@localhost bin]# yum provides /bin/zshLoaded plugins: fastestmirror, langpacksLoading mirror speeds from cached hostfile* base: mirrors.aliyun.com* extras: mirrors.aliyun.com* updates: mirrors.aliyun.comzsh-5.0.2-14.el7.x86_64 : Powerful interactive shell \\程序包名和程序简介Repo : local \\在哪个yum仓库Matched from:Filename : /bin/zsh以下省略yum下载rpm包只下载不安装

yum命令本身就可以用来下载一个RPM包,标准的yum命令提供了--downloadonly(只下载)的选项来达到这个目的。

$ sudo yum install --downloadonly <package-name>

默认情况下,一个下载的RPM包会保存在下面的目录中:

/var/cache/yum/x86_64/[centos/fedora-version]/[repository]/packages

以上的[repository]表示下载包的来源仓库的名称(例如:base、fedora、updates)

如果你想要将一个包下载到一个指定的目录(如/tmp):

$ sudo yum install --downloadonly --downloaddir=/tmp <package-name>

注意,如果下载的包包含了任何没有满足的依赖关系,yum将会把所有的依赖关系包下载,但是都不会被安装。

另外一个重要的事情是,在CentOS/RHEL 6或更早期的版本中,你需要安装一个单独yum插件(名称为 yum-plugin-downloadonly)才能使用--downloadonly命令选项:

$ sudo yum install yum-plugin-downloadonly

如果没有该插件,你会在使用yum时得到以下错误:

Command line error:no such option:--downloadonly

作者:豆约翰链接:https://www.jianshu.com/p/82300bc2b951來源:简书简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

Linux系统 管理软件包工具:RPM和YUM

前言

RPM:对RPM格式的软件包进行安装、查询、更新、升级、校验、卸载以及生成.rpm格式的软件包等。

YUM:能在线下载、安装、卸载、升级rpm软件包等任务,并且能够自动查找并解决rpm包之间的依赖关系,一次性完成所有具有依赖关系rpm包的安装。

目录

一、RPM管理工具

二、YUM管理工具

三、总结

四、思维导图

一、RPM管理工具

rpm原本是Red Hat Linux 发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。RPM套件管理方式的出现,让Linux易于安装,升级,简介提升了Linux的适用度。

1、RPM(Redhat Package Manager):

由Red Hat公司提出的一种软件包管理标准;是Linux各发行版中应用最广泛的软件包格式之一(还有debain发行的deb安装包)。

2、作用:对RPM格式的软件包进行安装、查询、更新、升级、校验、卸载以及生成.rpm格式的软件包等。

RPM功能通过rpm命令使用不同参数来实现。

3、RPM软件包:

压缩存贮;拥有一个头文件;其中包含有关于软件包的相关信息;便于对软件包信息进行查询。

4、RPM软件包的典型命名格式:

软件名 - 版本号 - 发行号 . 操作系统版本 . 硬件平台的类型 .rpm如:openssl软件包对应的软件包名称为:
openssl-1.0.1e-60.el7.x86_64.rpm

openssl:软件包的名称

1.0.1e:版本信息

60:发行号

el7:代表软件是提供给Enterprise Linux 7

x86_64:代表该软件适用于在Intel x86架构的64位cpu的计算机硬件平台上运行

.rpm:扩展名

5、rpm命令常见参数

[ -a ]:查询所有套件;[ -i ]:显示套件的相关信息;[ -i<套建档> ]:安装指定的套件档;[ -v ]:显示指令执行过程;[ -s ]:显示文件状态;[ -l ]:显示套件的文件列表;[ -h ]:套件安装时列出标记;[ -R ]:显示套件的关联性信息;[ -e<套建档> ]:删除指定的套件。[ -q ]:使用询问模式,当遇到任何问题时,rpm指令会先询问用户。

6、常用命令

安装:
rpm -ivh package    # 直接安装
卸载:
rpm -e tree    # 卸载
列出所有安装过的包:
rpm -qa
rpm包中的文件安装的位置:
rpm -ql tree

二、YUM管理工具

1、YUM(Yellow dog Updater,Modified):

能在线下载、安装、卸载、升级rpm软件包等任务;能够自动查找并解决rpm包之间的依赖关系;一次性完成所有具有依赖关系rpm包的安装;无需管理员逐个、手工地安装每个rpm包。

2、要实现YUM的功能,基于三个机制的建立:

其一:需要有包含各种rpm安装文件的软件仓库(即YUM源);其二:有软件仓库的仓库数据(repodata),其中收集了软件仓库中所有rpm包的头部信息(每个rpm包的包头信息包含了该包的描述,功能,提供的文件,依赖关系等信息);其三:有软件仓库的地址等信息。

3、yum常用命令:

清空缓存列表
yum clean packages    # 清空的是(/var/cache/yum)下的缓存yum clean headers    # 清除缓存目录下的headersyum clean oldheaders    # 清除缓存目录下的旧的headersyum clean all    # 清除缓存目录下的软件包以及旧的headers
显示信息
yum list    # 显示所有已安装和可以安装的程序包yum list tree    # 显示安装包信息treeyum list tree    # 显示可获得包,说明还没安装yum info tree    # 显示安装包rpm的详细信息
安装
yum -y install tree
删除
yum remove tree
yum包的升级
yum update package    # 更新yum upgrade package    # 升级

三、总结

RPM管理工具对RPM格式的软件包进行安装、查询、更新、升级、校验、卸载以及生成.rpm格式的软件包;rpm包命名格式:软件名 - 版本号 - 发行号 . 操作系统版本 . 硬件平台的类型 .rpm;yum能在线下载、安装、卸载、升级rpm软件包等任务;yum功能依赖于三个机制的建立。

四、思维导图

发表评论