rpm,yum程序包管理器

在早期我们在Linux上安装程序时,都采用的源代码来安装应用程序,这就意味着我们每次都要经过预处理,编译,汇编,链接最后生成可执行的二进制文件;这样的操作太过繁琐,为简化安装步骤,便于广大用户的安装部署程序,程序提供商就在特定的系统上面编译好相关程序的安装文件并进行打包,提供给大家下载,而对这些程序包进行管理的就是程序包管理器;

不同Linux发行版本,就有不同的程序包管理器;在这里列举一些常用的程序包管理器;

在Debian中dpkg工具来管理所有.deb后缀名的包文件;Redhat中就使用最为经典的rpm程序包管理器,rpm是Linux的程序包管理器的行业标准,使用perl语言编写,在此基础上有人用C语言对其进行重新编写,提高了其运行效率;dpkg最早是由 Debian Linux 社群所开发出来的, 只要是衍生亍 Debian 的其他 Linux distributions 大多使用 dpkg 这个机制来管理软件的, 包括B2D, Ubuntu 等等,其前端工具有apt-get;

在这里给大家主要介绍关于rpm程序包管理器的相关功能;

首先必须要清楚关于rpm的源代码包以及二进制包的命名规则,能够熟悉其中所给予的信息;

源代码包:software_name-VERSION.src.rpm

二进制包:software_name-VERSION-[release].[os].arch.rpm

software_name:软件名;

VERSION:版本号,分为主版本号major,次版本号minor以及发行版本号release

[os]:所支持的操作系统版本信息,el6,el7,suse11,fedora22...

arch:硬件平台类型,i386,i686,x64,ppc,sparc,noarch

rpm在制作时,制作者通常会制作主包和次包两种,二者存在依赖关系,即先安装某部分程序才能按照他所依赖的部分进行接下去的安装,否则,安装无法进行;

主程序包:

software_name-VERSION-[release].[os].arch.rpm

附属功能包:

software_name-function-VERSION-[release].[os].arch.rpm

rpm命令行工具:

①可以将编译好的程序进行打包,封装在一起;

②可以进行安装,卸载,查看,升级,校验及数据库管理功能;

在使用rpm程序包进行安装时,rpm程序管理器会自动生成程序的文件,文件清单(保存文件名和依赖   关系)以及在安装程序所需要的一些固定的脚本内容如安装前脚本preinstall,安装后脚本

postinstall,卸载前脚本preunistall,卸载后脚本postunistall等;还需要安装rpm数据库,对所   安装的程序进行比对,看是否版本为最新;该数据库路径为/var/lib/rpm;在进行安装,卸载等操作   时,要在光盘挂载点下的Packets下进行;

rpm命令:

-v:显示安装例程的详细信息;

-vv:显示非常详细的安装信息;

安装:

rpm {-i|--install} [install-options] PACKAGE_FILE ...

install-option:

-h,--hash:用50个#来表示安装进度;

--test:并不是真正的安装软件包,仅仅测试在安装时能否正常完成,如果失败,则说出原              因;

--nodeps:忽略因为依赖关系导致的安装错误;(不建议使用)

--replacefiles:在安装软件包时,软件包中的文件会直接将原来安装的文件替换;

--replacekgs:不卸载软件包而重新安装;

--noscripts:不运行任何脚本;

--nopre:不运行安装前脚本;

--nopost:不运行安装后脚本;

--nosignature:不去考虑软件包的来源是否合法;

--nodigest:不考虑软件包是否完整;

常见组合选项:-ivh

例 安装tree命令 ######即为-h选项安装进度,tree-1.6.0-10.el7.x86_64.rpm即为-v选项的安装例     程信息;

使用--test进行测试操作,对安装进行测试,看是否能行,并不进行实质性安装;

升级:

升级安装有两种方式:

rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...

如果事先未安装程序,则直接安装最新版本的程序,若已经安装程序,就在该程序基础上进行升级安   装;

rpm {-F|--freshen} [install-options] PACKAGE_FILE ...

仅仅只能对已经安装的低版本的程序包进行升级安装;

注意:为了保证系统的正常运行最好不要对内核进行升级;

常用选项与安装相同:

-h,--hash:用50个#来表示安装进度;

--test:并不是真正的安装软件包,仅仅测试在安装时能否正常完成,如果失败,则说出原              因;

--nodeps:忽略因为依赖关系导致的安装错误;(不建议使用)

--replacefiles:在安装软件包时,软件包中的文件会直接将原来安装的文件替换;

--replacekgs:不卸载软件包而重新安装;

--noscripts:不运行任何脚本;

--nopre:不运行安装前脚本;

--nopost:不运行安装后脚本;

--nosignature:不去考虑软件包的来源是否合法;

--nodigest:不考虑软件包是否完整;

--oldpackage:降级安装,用老版本的程序包替换新版本的程序包;

卸载:

rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test]       PACKAGE_NAME(软件名) ...

常用选项:

--allmatches:卸载时所有匹配指定名称的程序包的各个版本;

--test:测试卸载;

--nodeps:卸载时忽略一栏关系,不建议使用;

卸载操作较为简单,直接命令+选项+卸载的软件名;

查询:

安装之前需要查询,卸载之前需要查询,做任何操作哦之前都要进行查询操作;

rpm {-q|--query} [select-options] [query-options](直接给出程序包名)

select options:

-a,--all:查询所有已经安装的程序包信息;

例 查找相关的软件包

-f,--file FILE:查找指定文件由那个程序包提供的;

--whatprovides CAPABILITY:查询指定的CAPABILITY是有哪个程序包提供

例 查找文件/bin/chown由哪个程序包提供

-p,--package PACKAGE_FILE(程序包文件名称):

对还没有安装的程序包文件执行查询操作;跟p配合的必须是程序包文件

[[email protected] wjq]# rpm -qpl /media/guangpan/Packages/tree-1.6.0-10.el7.x86_64.rpm

query options:

--changelog:查询rpm程序包的changelog

-c,--configfiles:查询指定程序包中有哪些配置信息;

-d,--docfiles:查询指定程序包中有哪些文档文件;

例 查看tree程序包中有哪些文档文件

-i,--info:查询程序包相关信息,包括版本号,发行号,大小;

例 查看tree程序相关信息

-l,--list:列表显示程序生成哪些文件;

--provides:列出制定程序包提供的所有的CAPABILITY;

-R,--requires:查询程序包的依赖关系

--scripts:查看程序包所携带的脚本的内容

校验:用于检查包安装生成的文件属性是否发生变化

rpm {-V|--verify} [select-options] [verify-options]

select options与查询的select options一样;

常用选项:

-V :后面加的是程序名称,若该程序属有的文件发生改变就会显示;

-Va :显示目前系统上面所有可能被修改过的文件;

-Vp :后面加的是文件名,显示该程序内可能被更改过的文件;

-Vf :后面加的是文件名,显示某个文件是否被修改过。

对应属性位说明:只有在对应的属性为发生改变后,属性才会显示;

S file Size differs 表示文件大小发生改变

M Mode differs (includes 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 包的能力发生改变

数据库管理:数据库路径为/var/lib/rpm若该路径下的数据遭到破坏则系统无法知道有哪些软件在            系统中,那些软件的详细信息都无法显示;

rpm数据库管理主要分为初始化与重建两个部分,初始化,若已安装数据库则初始化结果不变,若    未安装数据库,则对数据库进行安装,重建就是在原有数据库的基础上进行覆盖安装操作;

rpm {--initdb|--rebuilddb} --dbpath /PATH/TO/FILE

--initdb:初始化数据库;

--rebuilddb:重建数据库;

yum程序包管理器:

yum(全称Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。yum是客户机服务器模式,服务器也称为软件仓库,存储着许多的软件包以供安装;客户端是用来指定服务器以及程序包的路径喝一些必要的控制操作;

yum的主配置文件/etc/yum.conf

该文件一般情况下是不修改的,只提供yum软件包的公共配置信息;

yum的次配置文件/etc/yum.repos.d/*.repo

在yum.repos.d目录下创建以repo为后缀的文本文件,每个文件可以配置指向多个软件仓库;yum命令在安装或更新时,通过查找这些配置文件所指向的路径,得到多个软件仓库,从这些软件仓库中得到最新版本进行安装或更新;

在/etc/yum.repos.d下创建的文本文件中的格式:

[repoid]

name=

baseurl=schema://hostname/PATH/TO/REPODATA  (hostname可省略不写)

schema:

http,ftp,nfs:网络服务器指向

file:本地服务器指向

enabled={0|1},0表示禁用此仓库指向,1表示启用,如果没有enable语句,默认为启动状态;

gpgcheck={0|1}:0表示不进行程序包认证,1表示认证,如果为1,需要指定认证所需要的公钥文     件,需要使用gpgkey语句;

gpgkey=schema://hostname//PATH/TO/PUBLIC_KEY_FILE 软件包公钥,当为本地服务器指向时可省略公钥路径;

注意:同一个文本文件下的不同配置信息之间使用[repoid]进行隔离,所有配置信息生效的范围是从一个[]开始到下一个[]结束;

主配置文件解析:

cachedir:yum缓存的目录,yum在此存储下载的rpm包和数据库,一般是/var/cache/yum。

debuglevel:除错级别,0──10,默认是2

logfile:yum的日志文件,默认是/var/log/yum.log。

exactarch,有两个选项1和0,代表是否只升级和你安装软件包cpu体系一致的包,如果设为1,则如你   安装了一个i386的rpm,则yum不会用686的包来升级。

gpgchkeck= 有1和0两个选择,分别代表是否是否进行gpg校验,如果没有这一项,默认好像也是检查   的。

自定义配置软件仓库

1.创建一个目录将需要的程序包放入目录中;

2.使用createrepo命令创建仓库;产生repodata;

3.在/etc/yum.repos.d下创建一个关于该软件仓库的配置文件,以repo为后缀;

yum命令(该命令的使用要在联网的情况下):

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

option:

-q:安静模式,使yum没有输出任何的信息,不显示安装过程;

-y:yum命令下的所有交互操作yes or no全部以yes表示;

yum安装:

yum install:全部安装

install package1 [package2] [...]:指定程序包安装

yum卸载:

yum remove|erase package1 [package2] [...]

yum更新:

update [package1] [package2] [...]:对所更新的程序包进行最新更新

update-to [package1] [package2] [...]:指定目的版本号的更新;

yum list [...]查询操作,可查看当前系统下的安装的,未安装但可用的程序包;

查看所有程序包:

yum list all

查看所有已安装的程序包:

yum list installed

显示所有尚未安装但可以安装的程序包:

yum list available

显示最近安装的程序包:

yum list recent

显示所有可以升级更新的程序包:

yum list updates

yum清除缓存:

清理本地缓存信息;

clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]

清除缓存目录下的软件包

yum clean packages

程序包组的管理命令:

groups [...]

组安装:

groupinstall group1 [group2] [...]等于groups install

组更新:

groupupdate group1 [group2] [...]等于groups update

显示当前组列表:

grouplist [hidden] [groupwildcard] [...]

卸载安装的组:

groupremove group1 [group2] [...]

显示组信息:

groupinfo group1 [...]

根据关键字进行匹配,默认情况下,搜索程序包名称及汇总信息,模糊搜索;

search string1 [string2] [...]

yum重新安装

reinstall package1 [package2] [...]

显示每个程序包所有的依赖关系

deplist package1 [package2] [...]

时间: 2024-11-08 20:26:02

rpm,yum程序包管理器的相关文章

yum程序包管理器浅谈

基于rpm安装程序包时,程序包之间的依赖性太过于复杂和麻烦,开发了yum程序包管理器,可以自行的解决程序包之间的依赖关系,并且一次性安装所有的有依赖关系的程序包,无须繁琐的下载依赖性的程序包,相对于rpm来说,rpm为基础包管理,yum是前端工具.而yum需要一个文件服务的服务器,总共有四种文件服务器:ftp服务,http服务,本地文件目录,NFS服务.yum命令工具可以通过配置文件,指向仓库的位置以及相关的各种配置信息:每个yum命令行可以同时指向多个仓库,仓库间可以优先级等相关的配置. 当y

CentOS程序包管理器rpm、yum以及程序包编译安装详解

一.程序包管理器RPM和Yum简介 程序包管理器:将编译好的应用程序的各组成文件打包成一个或几个程序包文件,可以更方便地实现程序包的安装.升级.卸载和查询等管理操作. rpm软件包管理器(RPM Package Manager):rpm包存在依赖关系,依赖关系复杂,安装时间很长,虽然可以忽略依赖关系,但是可能会导致程序包安装后无法正常使用. yum程序包管理器( Yellow dog Updater, Modified):yum是基于RPM包管理,自动解决程序包间的依赖关系.根据配置文件的资源地

linux程序包管理之rpm程序包管理器与yum前端工具

这里主要讲以CentOS为例,rpm程序包管理器的相关内容: CentOS的程序包管理器:   1) 程序包的命名规则:        源代码包:            software_name-VERSION.tar.gz            VERSION:major.minor.release                major:主版本号,通常代表重大功能改进的版本分支:                minor:次版本号,通常代表在某个版本的分支中的某个功能发生变化:     

RHEL系统程序包管理器【rpm、yum】

程序包管理器 将编译好的文件打包成一个或有限的几个文件,可用于实现便捷的安装.卸载.升级.查询,校验等程序管理. centos常用的程序管理器有rpm和yum rpm: redhat package manager, RPM is Package Manager rpm是由红帽公司开发的软件包管理方式,使用rpm我们可以方便的进行软件的安装.查询.卸载.升级等工作.但是rpm软件包之间的依赖性问题往往会很繁琐,尤其是软件由多个rpm包组成时. RPM包的命名 例如,bash-4.3.2-1.ce

以rpm为后端及以yum为前端工具的程序包管理器在Linux发行版系统centos中的使用

程序包管理: 应用程序的安装,实际上是解压缩并复制程序包中的文件到指定目录的过程: 程序包管理器: 方便终端用户进行程序的安装.卸载.升级.安装信息查询及校验等工作: 不同的Linux的发行版本中,有不同的程序包管理器: Debian:dpt:Redhat:rpm:S.u.S.E:rpm:Gentoo:借鉴了FREEBSD的portage程序包管理机制,ports方式,emerge工具:ArchLinux:pacman 以CentOS为例,rpm程序包管理器: rpm程序包的命名规则: 源代码包

程序包管理的前端工具yum、程序包管理器编译安装、sed命令

下面介绍的是程序包管理的前端工具yum.程序包管理器编译安装.sed命令. 一.Linux程序包管理:程序包管理的[前端工具] 1.yum软件包仓库简介 CentOS系的管理工具有yum和dnf.yum是一款发行版的Linux,其使用的默认程序包管理工具为rpm. URL是yum定位软件包仓库和仓库中程序文件的主要标识方式,表示如下: 例如:schema://[[email protected]]hostname/PATH/TO/DOCUMENT[paramers][methord] (例子中的

Linux的程序包管理器(上)——rpm详解

在使用Linux操作系统的过程中,我们需要的一些服务(例如Nginx)并没有提供,需要用户自行安装相应的程序包,才能使用相应的服务.本文以CentOS6.6为例,分三小节为读者朋友们尽可能详细的讲解rpm.yum以及程序包的编译安装三种程序包的管理方法. rpm rpm包管理工具是Red Hat公司贡献的一款rpm程序包管理器,在RHEL.CentOS.Fedora.SUSE等主流发行版本中,被广泛使用. rpm包管理工具可用于安装,升级,卸载,重新安装程序:也可以用于查询当前系统上安装了哪些程

CentOS系统之程序包管理器-RPM

在早期我们使用源代码的方式来安装软件时,都需要先把源程序代码编译成可执行的二进制安装程序,然后进行安装.这就意味着每次安装软件都需要经过预处理-->编译-->汇编-->链接-->生成安装文件--> 安装,这个复杂而艰辛的过程.为简化安装步骤,便于广大用户的安装部署程序,程序提供商就在特定的系统上面编译好相关程序的安装文件并进行打包,提供给大家下载,我们只需要根据自己的系统去下载相应的安装包进行安装即可,其类似 Windows 的安装方式,由程序开发者直接在已知的系统上面编译好

rpm程序包管理器详解

1. 程序包管理器的功能 我们知道,由程序员编写并提供的程序源代码要转换成目标二进制格式才能在计算机上运行起来,但用户要在平台上使用时需要手动编译安装后才能使用,对于普通用户来说有一定难度.因此为了降低普通用户对应用程序的使用难度,程序员可在提供源代码的同时提供已在特定环境下编译好的程序文件,只要用户的平台环境和程序员的平台环境相同,就可以通过解压程序员提供的二进制格式文件即可使用,而无需自己手动编译安装. 一个已编译好的程序由二进制程序.库文件.配置文件和帮助手册等组成,而程序包管理器的功能就