二十一、安装软件包的三种方法、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本地仓库即可搞定。