二十一、安装软件包的三种方法、RPM包介绍、rpm工具用法、yum工具用法、yum搭建本地仓库

一、安装软件包的三种方法

rpm工具、yum工具、源码包

RPM工具:是以一种数据库记录的方式将需要的套件安装到Linux主机的一套管理程序。就是说,你的Linux系统中有一个关于RPM的数据库,它记录了安装的包以及包与包之间的依赖关系。RPM包是预先在Linux机器上编译并打包的文件,安装快捷。缺点:安装环境必须与编译时的环境一致或相当,包与包之间存在着相互依赖的情况,卸载包时需先把依赖的包卸载。若依赖的包是系统必需的,就不能卸载这个包,否则系统崩溃。

yum工具:优势:可联网下载所需要的RPM包,然后自动安装。若安装的RPM包有依赖关系,yum工具会自动依次安装相关的RPM包。

源码包优点:可以看到源代码,可以自定义修改源代码,还可以定制相关的功能,因为源码包在编译时可以附加额外的选项。安装时,需要把源代码编译成可执行的二进制文件。若能读懂这些源代码,就能修改源代码的自定义功能,再按你的需求编译。

二、RPM包介绍

若你的虚拟机光驱中海油系统安装盘镜像,就可以通过执行以下命令把光驱挂载到/mnt目录下。先检查VMware右下角小光驱图标是否点亮,若没有,点击一下,再点连接就可点亮。当挂载光驱后,会在/mnt/Packages目录下看到很多后缀为.rpm的文件,这些文件就是RPM包。

# mount /dev/cdrom /mnt

mount: /dev/sr0 写保护,将以只读方式挂载      //光驱是以只读方式挂载的

# ls /mnt/

CentOS_BuildTag  EULA  images    LiveOS    repodata              RPM-GPG-KEY-CentOS-Testing-7

EFI              GPL   isolinux  Packages  RPM-GPG-KEY-CentOS-7  TRANS.TBL

# ls /mnt/Packages/|head

389-ds-base-1.3.6.1-16.el7.x86_64.rpm

389-ds-base-libs-1.3.6.1-16.el7.x86_64.rpm

abattis-cantarell-fonts-0.0.25-1.el7.noarch.rpm

abrt-2.1.11-48.el7.centos.x86_64.rpm

abrt-addon-ccpp-2.1.11-48.el7.centos.x86_64.rpm

abrt-addon-kerneloops-2.1.11-48.el7.centos.x86_64.rpm

abrt-addon-pstoreoops-2.1.11-48.el7.centos.x86_64.rpm

abrt-addon-python-2.1.11-48.el7.centos.x86_64.rpm

abrt-addon-vmcore-2.1.11-48.el7.centos.x86_64.rpm

abrt-addon-xorg-2.1.11-48.el7.centos.x86_64.rpm

解析:abrt-2.1.11-48.el7.centos.x86_64.rpm  

abrt:RPM包名。

2.1.11:版本号。2为主版本号,1为次版本号,11是更小的版本号、又叫修正版本。

48.el7:发布版本号。el7代表centos7,6则代表centos6。

centos.x86_64:运行平台。CPU:64位或32位,centos7已经不区分32和64位了,默认全都是64位。centos6或5、4都区分32或64位。常见运行平台:i386、i586、i686和x86_64。32位平台:i386、i586、i686;64位平台:x86_64。有些RPM包没有写运行平台而是noarch,说明这个RPM包没有硬件平台限制。

.rpm:后缀名。

三、RPM工具用法

# rpm -ivh rpm包名文件  //安装

i:install

v:可视化,执行过程。

h:显示安装进度。

举例:# rpm -ivh abrt-2.1.11-48.el7.centos.x86_64.rpm

错误:依赖检测失败:

abrt-libs = 2.1.11-48.el7.centos 被 abrt-2.1.11-48.el7.centos.x86_64 需要

abrt-python = 2.1.11-48.el7.centos 被 abrt-2.1.11-48.el7.centos.x86_64 需要

libabrt.so.0()(64bit) 被 abrt-2.1.11-48.el7.centos.x86_64 需要

libreport >= 2.1.11-38 被 abrt-2.1.11-48.el7.centos.x86_64 需要

libreport-plugin-rhtsupport 被 abrt-2.1.11-48.el7.centos.x86_64 需要

libreport-plugin-ureport >= 2.1.11-38 被 abrt-2.1.11-48.el7.centos.x86_64 需要

libreport.so.0()(64bit) 被 abrt-2.1.11-48.el7.centos.x86_64 需要

libsatyr.so.3()(64bit) 被 abrt-2.1.11-48.el7.centos.x86_64 需要

python-augeas 被 abrt-2.1.11-48.el7.centos.x86_64 需要

python-dmidecode 被 abrt-2.1.11-48.el7.centos.x86_64 需要

satyr >= 0.13-10 被 abrt-2.1.11-48.el7.centos.x86_64 需要

sos 被 abrt-2.1.11-48.el7.centos.x86_64 需要

由于没有安装依赖的包,故不能安装此包。

举例:# rpm -ivh zsh-5.0.2-28.el7.x86_64.rpm

准备中...                          ################################# [100%]

正在升级/安装...

  1:zsh-5.0.2-28.el7                 ################################# [100%]

没有依赖关系的则会正常安装。

-i选项,安装rpm包,跟rpm包文件名。示例:

# rpm -ivh zsh-5.0.2-28.el7.x86_64.rpm

加-U选项代表升级这个包,跟rpm包文件名。示例:

# rpm -Uvh zsh-5.0.2-28.el7.x86_64.rpm

-e:卸载rpm包名。示例:

# rpm -e zsh(跟包名就可以了)也可加上v和h。

查询安装的包,跟rpm包名。示例:

# rpm -qa (列出来的都是已经安装的包)

里面的包可以直接卸载。

# rpm -q+包名      查询此包是否安装,安装了就会显示详情,未安装就会显示未安装。

# rpm -qi+包名    查询指定包信息,i:信息

# rpm -ql+包名    列出包安装的文件

# rpm -qf+文件的绝对路径    查看一个文件是由哪个包安装的

# rpm -qf `which cd`   忘记了命令的绝对路径,就可使用反引号再which查询。

bash-4.2.46-28.el7.x86_64

四、yum工具用法

yum list      列出可用的rpm包

zenity.x86_64                               3.22.0-1.el7                                         base  

包名;版本号                              平台版本号                                        仓库名字

/etc/yum.repos.d/       yum的配置文件

# ls /etc/yum.repos.d/

CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Media.repo    CentOS-Vault.repo

CentOS-CR.repo    CentOS-fasttrack.repo  CentOS-Sources.repo

CentOS-Base.repo(核心文件)

# cat  /etc/yum.repos.d/CentOS-Base.repo

文件中有仓库的链接地址:

[base]

name=CentOS-$releasever - Base

mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra

安装RPM包:# yum install -y [rpm包名],不加-y,则会以与用户交互的方式安装。

搜索包:

yum search +包名(如vim,network等,该搜索只能搜到大概,包含搜索的名字的都会搜出来)

yum list |grep 'vim'(可以过滤掉不需要的东西,搜索更精准,将yum list输出的东西给后面输入)

yum grouplist  把可用的组全列出来

yum groupinstall   ‘vir  host’         中间有空格的包就用groupinstall,没有就用install。不加-y可以查看里面有多少包。

Install  65 Packages (+185 Dependent packages)

Upgrade              (   6 Dependent packages)

Total download size: 73 M

解析:65个包,185个被依赖的包,6个需要升级的。

# yum remove +包名     可以查看到被卸载包的依赖的包。卸载加-y即可。

# yum update +包名     若不加包名,会把系统内所有的rpm包升级,甚至系统和内核,该操作往往在刚安装完系统的时候进行操作,若安装系统很久了,很多服务开启了,升级就须谨慎。升级加-y即可。

# yum provides "/*/vim"   搜索rpm包,没有安装就不能用rpm -qf搜索。

五、yum搭建本地仓库

yum不能用的时候可以搭建一个本地仓库,使yum在本地仓库内查找rpm包。

做该操作的条件:

1.有一个光盘镜像文件,再将它挂载。

# mount /dev/cdrom /mnt

2.删除/etc/yum.repos.d目录下的所有repo文件(删除前,最好先做备份)

# cp -r /etc/yum.repos.d /etc/yum.repos.d.bak

# rm -rf /etc/yum.repos.d/*

3.创建新文件dvd.repo,如下:

# vim dvd.repo      //加入以下内容

[dvd]

name=install dvd        仓库名

baseurl=file:///mnt       rpm包的位置,光驱的位置。

enabled=1                   yum原是否可用,1代表可用,0代表不可用。

gpgcheck=0                 是否需要检测

4.# yum clean all         把之前的repo的文件的缓存进行清除。

5.刷新repos生成缓存,如下所示:

# yum makecache

# yum list  可以查看到已经安装的rpm包。示例一个:

xz-libs.x86_64                                                   5.2.2-1.el7                                                @anaconda

以@开头的代表已经安装的rpm包,以dvd为后缀的代表可以安装的包。

然后就可以使用yum命令安装所需要的软件包了!示例:

# yum install -y tftp

若rpm包循环依赖,yum本地仓库即可搞定。