【Linux】rpm软件包管理

在Linux中安装应用软件

从网站或者是光盘上找到的Linux软件包,常见的格式包括有rpm、tar、gz、tgz、bz、bz2等等。本文主要介绍RPM包的安装方法。

后缀名为RPM的安装包在Linux中可以用自带的RPM命令安装,但由于很多软件包有依赖关系,安装一个软件需要不停的寻找该软件依赖的软件包,层层相扣,费时繁琐,故经常使用RPM包管理工具yum工具来进行软件安装。接下来将介绍这两种方法如何使用。


一、RPM命令

a)        RPM文件

RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括OpenLinux、S.u.S.E.以及Turbo Linux等Linux的分发版本都有采用,可以算是公认的行业标准了。

b)        RPM包的名称格式

RPM包的一般格式为:

name-version-arch.rpm或name-version-arch.src.rpm

name是软件包的名称,version是软件包版本,arch是硬件平台(硬件平台包括:i386、i486、i586、i686、x86_64、ppc、sparc、alpha等),带有src的是源代码包。例如:“nfs-utils-1.2.3-64.el6.x84_64.rpm”中“nfs-utils”是软件包的名字,“1.2.3-64”是软件包的版本,“el6” 表示软件包的发行商版本,“x84_64”是硬件平台。

其中的一些特殊的名称:

(1)fcXX,elXX:表示软件包的发行商版本

(2)devel:表示这个包是软件开发包

(3)noarch:表示不需要特定的硬件环境,可以在任何平台上安装

c)        查询RPM包

(1)查询系统中安装的所有rpm包

#rpm -qa

(2)查询软件包是否安装

#rpm –q 软件包名称

例:#rpm –q nfs-untils

(3)查询软件包信息

#rpm –qi 软件包名称

例:#rpm –qi nfs-utils

(4)查询软件包中的文件

#rpm –ql 软件包名称

例:#rpm –ql nfs-untils

(5)查询系统中文件所属的软件包

#rpm –qf 软件包名称

例:#rpm -qf /etc/ssh/sshd_config

d)        安装RPM包

#rpm –ivh rpm包全路径文件名

以无依赖包的vsftpd软件为例:

Step1:查看是否有此软件#rpm –qa | grep vsftpd,若无,进行下述步骤;

Step2:找到系统中vsftpd安装包的位置。若系统中无此安装包,可在在iso文件中找到vsftpd安装包,拷贝至系统中某文件夹(自己能找到的文件夹就ok)这里我们放在/mnt文件夹下;

Step3:#rpm -ivh /mnt/vsftpdXXX(Tab键可以补全);

Step4:检查是否安装成功,同Step1

e)        删除RPM包

删除时一定要注意有没有包依赖你所删除的包,删除被依赖包后依赖它的软件就都无法使用了。

#rpm –e rpm包名称

f)         升级RPM包

#rpm –U rpm软件包全路径名

二、YUM工具

a)        认识YUM

YUM(Yellowdog Updater,Modified,改良的Yellowdog更新工具)是一个命令行的 RPM 包管理工具,它可以从指定的服务器查询/安装 RPM 包。更为重要的是,它可以一次性安装所有有依赖关系的软件包,避免了手动一次次安装 RPM 包的繁琐。

b)        YUM客户端配置文件

YUM 客户端常用的配置文件有主配置文件和REPO 文件。前者设定了 YUM 的全局设定,后者则存放了 YUM 服务端的信息。

(1)主配置文件/etc/yum.conf详解


#全局设定部分

[main]

#设定/var/cache/yum 文件夹存放 YUM 的缓存和数据库文件

cachedir=/var/cache/yum

#这里的设定值有 0 和 1。设定为 0 时,表示软件成功安装后不保存缓存

keepcache=0

#设定 debug 信息显示级别。设定值为 0 到 10。

debuglevel=2

#设定日志文件为/var/log/yum.log

logfile=/var/log/yum.log

#根据指定的已安装软件包,判断当前系统的发行版本。

#这里通过“redhat-release”这个已经安装的包来判断系统版本

distroverpkg=redhat-release

#这里的设定值为0或1。1 表示忽略软件安装错误, 0则相反

#比如需要安装 foo, bar 和 baz 软件包,但 baz 已经安装过了,那么如果此时 tolerant=1,则不会输出错误信息

tolerant=1

#设定值为 0 或 1。设定为 1 时,那么系统更新时,将只更新与现有包平台相兼容的软件包。

#比如 YUM 将不会用 i686 的软件包去更新之前的 i386 包

exactarch=1

#这个选项在 Linux 系统版本更新时有效。设定值为 0 或 1。

#设定为 1 时,启动 YUM 的旧式处理逻辑

obsoletes=1

#检查 GPG 签名

gpgcheck=1

#设定值为 0 或 1。 1 表示允许插件, 0 则相反

plugins=1

# Note: yum-RHN-plugin doesn't honor this.

#设定数据的失效时间为 1 小时。这个设定对 yum-RHN-plugin 不起作用

metadata_expire=1h

#这个参数设定了在 YUM 更新后,允许存在的核心最大数量。

#这里设定为 3,表示除了当前运行的核心,最多允许存在两个新核心

# installonly_limit = 3

#此处可以放置 REPO 设定


(2)YUM源文件:REPO配置文件

在/etc/yum.repos.d 目录下,存放着 YUM 服务端的信息配置文件,这些文件的命名以“.repo”结尾。系统一般会自带一个REPO文件。


#频道名称,相当于服务器下的某个类目。这个名称是唯一的

[rhel-debuginfo]

#频道描述

name=Red Hat Enterprise $releasever - $basearch - DebugLinux

#服务器上软件包的位置

baseurl=ftp://ftp.redhat.com/pub/redhat/linux/enterprise/$releasever/en/os/$basearch/Debuginfo/

#是否激活频道。 0 为不激活, 1 为激活

enabled=0

#检查 GPG 签名。 0 表示不检查, 1 表示检查

gpgcheck=1

#GPG 数据文件位置

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release


如果我们要做一个本地yum源,步骤如下:
Step1:将iso镜像文件或光盘(/dev/sr0)挂载到某目录(自己知道在哪就好了),这里我们挂载到/mnt上,注意这与上述将vsftpd软件包拷贝进/mnt不同,具体的不同点可以查看挂载的相关知识。
iso文件的挂载命令: #mount –o loop镜像文件的位置 /mnt
光盘挂载的命令: #mount /dev/sr0 /mnt
Step2:修改yum源文件,新建一个repo文件rhel.repo(建议在/etc/yum.repos.d文件夹下新建一个文件夹bak,将原来自带的repo文件移动进bak备份,/etc/yum.repos.d文件夹下只保留一个自己新建的repo文件)添加内容如下:


[local]

name=local
baseurl=file:///mnt/
enabled=1

gpgcheck=0


baseurl中要写你要导入的文件夹,该文件夹中必须要有repodata软件仓库,使用yum命令时,系统会自动找到我们写入的baseurl路径下的repodata仓库,常用的baseurl还有 file:///mnt/HighAvailability
当需要启用这个频道时,将enabled值取1,不需要使用时,改为0;
gpgcheck根据需要设置是否检查即可,一般不用检查。

Step3:此时yum就基本配置好了,可以通过命令yum install all(即把配置文件读入缓存)检查是否可以读取成功,最后一行出现Error:nothing to do(没有错误需要处理)时即为yum配置成功。

c)        YUM命令

#yum [参数] [指令] [软件包]

(1)常用参数如下:

-y 默认对所有问题都自动应答为 yes

-c 指定配置文件位置

-q 运行命令,但不输出

-v 详细输出模式

-C 仅从缓存中获取数据

--enablerepo=<REPO 频道名> 激活指定的 REPO 频道

--disablerepo=<REPO 频道名> 禁止指定的 REPO 频道

--disableplugin=<插件名称> 禁止制定的插件

--noplugins 禁止所有插件

--nogpgcheck 不检查 GPG 签名

(2)常用指令如下:

install <软件包名> 安装目标软件包。软件包可以为多个,中间用空格分开

update [软件包名] 升级目标软件包。如果没有指定软件包,则更新所有软件包

check-update 检测所有可用的更新包

remove <软件包名> 删除目标软件包。软件包可以为多个,中间用空格分开

remove <软件包名> 删除目标软件包。软件包可以为多个,中间用空格分开

list [参数] 列出参数中限定的软件包。

list 的常用参数为:

available 列出可用软件包

updates 列出可更新软件包

installed 列出已安装软件包

extras 列出已安装,但不在资源库中的软件包

recent 列出最近被添加到资源库中的软件包

list 参数的后面,均可跟正则表达式,以匹配目标范围

clean [参数] 删除参数中指定的缓存数据。

参数如下:

packages RPM 包缓存

headers 头文件缓存

metadata 数据元素缓存

dbcache 数据库缓存

all 所有缓存

groupinstall [组名] 安装目标组中的所有软件包。目标组可以为多个,以空格分开

groupupdate [组名] 升级目标组中的所有软件包。目标组可以为多个,以空格分开

grouplist [hidden] [组名] 列出目标组信息。

这里的组名可以是组名通配, hidden 参数可以列出所有组信息

groupremove [组名] 删除目标组中的所有软件包。目标组可以为多个,以空格分开

repolist [参数] 列出参数中指定的 REPO 频道。

参数有:

all 所有频道

enabled 激活的频道

disabled 禁止的频道

最常用命令即#yum install [软件包名]




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值