在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文件。
如果我们要做一个本地yum源,步骤如下:#频道名称,相当于服务器下的某个类目。这个名称是唯一的
[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
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文件)添加内容如下:
baseurl中要写你要导入的文件夹,该文件夹中必须要有repodata软件仓库,使用yum命令时,系统会自动找到我们写入的baseurl路径下的repodata仓库,常用的baseurl还有 file:///mnt/HighAvailability;
[local]
name=local
baseurl=file:///mnt/
enabled=1
gpgcheck=0
当需要启用这个频道时,将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 [软件包名]。