在CentOS7中的软件包安装工具是rpm命令。由于软件包之间存在一定的依赖关系,有时使用rpm命令安装软件会报错,信息提示一个或多个包被当前包所需要,如下操作所示:
[root@linux ~]# cd /media/Packages/
[root@linux Packages]# ls | grep -i mysql-connector
mysql-connector-java-5.1.25-3.el7.noarch.rpm
mysql-connector-odbc-5.2.5-8.el7.x86_64.rpm
[root@linux Packages]# rpm -ivh mysql-connector-java-5.1.25-3.el7.noarch.rpm
错误:依赖检测失败:
java >= 1:1.6.0 被 mysql-connector-java-1:5.1.25-3.el7.noarch 需要
jpackage-utils 被 mysql-connector-java-1:5.1.25-3.el7.noarch 需要
jta >= 1.0 被 mysql-connector-java-1:5.1.25-3.el7.noarch 需要
slf4j 被 mysql-connector-java-1:5.1.25-3.el7.noarch 需要
[root@linux Packages]#
需要事先安装某些包,才能安装当前包称为软件包间的依赖关系。使用yum命令可以解决具有依赖关系的软件包安装问题,这也是在CentOS7中安装软件主要使用yum而不是rpm命令的主要原因。
yum命令的功能:在安装某个包前,自动查找到相关的依赖包并安装,再安装指定软件包。
yum命令的工作原理:事先把所有可能会用到的rpm包,集中存放到一个目录下,然后在yum配置文件(简称yum源)中指定rpm包的目录路径,则使用yum命令安装软件时,会自动到该指定目录下查找到要安装的软件包以及该包所依赖的软件包并自动安装。
由于Linux安装光盘上具备全部的软件包,且都在同一目录下(如/media),则只需要编写yum源配置文件,指定该目录为安装源目录即可,具体配置过程如下。
①执行cd /etc/yum.repos.d/,进入yum安装源配置文件所在目录,如下操作所示:
[root@linux yum.repos.d]# ls
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo CentOS-x86_64-kernel.repo
[root@linux yum.repos.d]#
打开其中一个文件,文件内容显示yum安装软件的来源是CentOS的网络地址(即官方网站地址)或CentOS网络地址的镜像网络地址(开源软件鼓励使用者在本地建立软件的复制内容,提供复制内容的网址为原软件网址的镜像地址),这表明使用yum安装软件时,yum命令自动到官网上下载指定的软件及其相关依赖包。如执行vi CentOS-Base.repo后,结果如下所示:
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-qpq/RPM-GPG-KEY-CentOS-7
上面配置文件中用baseurl关键字指定了安装软件包时搜索的网址,即要安装的软件包以及其所依赖的软件包将会从该网址来下载;mirrolist关键字指定了安装软件时搜索的镜像网址。下面我们用yum方式来安装mysql-connector-java软件包,rpm命令不能一次性安装该软件包,首先通过软件包的关键字查找软件包的名称(如果记不住具体的软件包名),然后安装软件包,最后验证软件包是否已经安装。相关操作如下所示:
[root@linux ~]# yum search all connector-java
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.huaweicloud.com
============================================================= 匹配:connector-java =============================================================
mysql-connector-java.noarch : Official JDBC driver for MySQL
[root@linux ~]# yum install mysql-connector-java
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.huaweicloud.com
正在解决依赖关系
--> 正在检查事务
---> 软件包 mysql-connector-java.noarch.1.5.1.25-3.el7 将被 安装
--> 正在处理依赖关系 jta >= 1.0,它被软件包 1:mysql-connector-java-5.1.25-3.el7.noarch 需要
--> 正在处理依赖关系 java >= 1:1.6.0,它被软件包 1:mysql-connector-java-5.1.25-3.el7.noarch 需要
--> 正在处理依赖关系 slf4j,它被软件包 1:mysql-connector-java-5.1.25-3.el7.noarch 需要
--> 正在处理依赖关系 jpackage-utils,它被软件包 1:mysql-connector-java-5.1.25-3.el7.noarch 需要
--> 正在检查事务
---> 软件包 geronimo-jta.noarch.0.1.1.1-17.el7 将被 安装
---> 软件包 java-1.8.0-openjdk.x86_64.1.1.8.0.262.b10-1.el7 将被 安装
--> 正在处理依赖关系 java-1.8.0-openjdk-headless(x86-64) = 1:1.8.0.262.b10-1.el7,它被软件包 1:java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64 需要
--> 正在处理依赖关系 xorg-x11-fonts-Type1,它被软件包 1:java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64 需要
--> 正在处理依赖关系 libjvm.so(SUNWprivate_1.1)(64bit),它被软件包 1:java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64 需要
......
---> 软件包 xml-commons-apis.noarch.0.1.4.01-16.el7 将被 安装
---> 软件包 xml-commons-resolver.noarch.0.1.2-15.el7 将被 安装
--> 解决依赖关系完成
依赖关系解决
=========================================================================================================
Package 架构 版本 源 大小
=========================================================================================================
正在安装:
mysql-connector-java noarch 1:5.1.25-3.el7 base 1.3 M
为依赖而安装:
apache-commons-lang noarch 2.6-15.el7 base 276 k
apache-commons-logging noarch 1.1.2-7.el7 base 78 k
......
xorg-x11-fonts-Type1 noarch 7.5-9.el7 base 521 k
事务概要
=========================================================================================================
安装 1 软件包 (+80 依赖软件包)
总下载量:53 M
安装大小:161 M
Is this ok [y/d/N]: y
Downloading packages:
(1/81): apache-commons-lang-2.6-15.el7.noarch.rpm | 276 kB 00:00:00
(2/81): avalon-logkit-2.1-14.el7.noarch.rpm | 87 kB 00:00:00
......
(80/81): fontconfig-2.13.0-4.3.el7.x86_64.rpm | 254 kB 00:00:46
avalon-framework-4.3-10.el7.no FAILED ==============================-] 11 kB/s | 53 MB 00:00:00 ETA
http://mirror.centos.org/centos/7/os/x86_64/Packages/avalon-framework-4.3-10.el7.noarch.rpm: [Errno 12] Timeout on http://mirror.centos.org/centos/7/os/x86_64/Packages/avalon-framework-4.3-10.el7.noarch.rpm: (28, 'Operation too slow. Less than 1000 bytes/sec transferred the last 30 seconds')
正在尝试其它镜像。
(81/81): avalon-framework-4.3-10.el7.noarch.rpm | 88 kB 00:00:00
------------------------------------------------------------------------------------------------------------------------------------------------
总计 808 kB/s | 53 MB 00:01:07
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
警告:RPM 数据库已被非 yum 程序修改。
正在安装 : libjpeg-turbo-1.2.90-8.el7.x86_64 1/81
正在安装 : mesa-libglapi-18.3.4-10.el7.x86_64 2/81
正在安装 : libxshmfence-1.2-1.el7.x86_64
......
79/81
正在安装 : geronimo-jta-1.1.1-17.el7.noarch 80/81
正在安装 : 1:mysql-connector-java-5.1.25-3.el7.noarch 81/81
验证中 : libXext-1.3.3-3.el7.x86_64 1/81
验证中 : libXi-1.7.9-1.el7.x86_64 2/81
验证中 : xml-commons-resolver-1.2-15.el7.noarch
......
80/81
验证中 : pixman-0.34.0-1.el7.x86_64 81/81
已安装:
mysql-connector-java.noarch 1:5.1.25-3.el7
作为依赖被安装:
apache-commons-lang.noarch 0:2.6-15.el7 apache-commons-logging.noarch 0:1.1.2-7.el7
atk.x86_64 0:2.28.1-2.el7 avahi-libs.x86_64 0:0.6.31-20.el7
.......
xorg-x11-font-utils.x86_64 1:7.5-21.el7 xorg-x11-fonts-Type1.noarch 0:7.5-9.el7
完毕!
[root@linux ~]# rpm -q mysql-connector-java
mysql-connector-java-5.1.25-3.el7.noarch
以上操作使用yum命令安装了mysql-connector-java软件包,安装过程所产生的内容做了部分节选。yum命令首先会安装该软件包所依赖的80个软件包,然后才能安装mysql-connector-java软件包,最后使用rpm -q 软件包名进行了验证,说明该软件包已经安装成功。