一.部署 YUM 软件仓库
借助于
YUM
软件仓库,可以完成安装、卸载、自动升级
rpm
软件包等任务,能够自动
查找并解决
rpm
包之间的依赖关系,而无须管理员逐个、手工地去安装每个
rpm
包,使管
理员在维护大量
Linux
服务器时更加轻松自如。特别是在拥有大量
Linux
主机的本地网络中,
构建一台
“
源
”
服务器可以大大缓解软件安装、升级等对
Internet
的依赖。
YUM
的前身是
YUP
(
Yellow dog Updater
,
Yellow dog Linux
的软件更新器),最初由
TSS
公司(
Terra Soft Solutions
,
INC.
)使用
Python
语言开发而成,后来由杜克大学(
Duck
University
)的
Linux
开发队伍进行改进,命名为
YUM
(
Yellow dog Updater
,
Modified
)。
要成功使用
YUM
机制来更新系统和软件,需要有一个包含各种
rpm
安装包文件及其依
赖软件的软件仓库(
repository
),提供软件仓库的服务器也称为
“
源
”
服务器。在客户机中只
要正确指定软件仓库的地址等信息,就可以通过对应的
“
源
”
服务器来安装或更新软件。
一.准备网络安装源(服务器端)
YUM
软件仓库通常借助于
HTTP
或
FTP
协议来进行发布,这样可以面向网络中的所有
客户机提供软件源服务。为了便于客户机查询软件包,获取依赖关系等信息,在软件仓库中
需要提供仓库数据(
repodata
),其中收集了目录下所有
rpm
包的头部信息。
1.准备软件仓库目录
在
CentOS 7
系统的安装光盘中,已针对软件目录
Packages
建立好
repodata
数据,
因此只要简单地将整个光盘中的内容通过
HTTP
或
FTP
进行发布,就可以作为软件仓库了。
例如,可以创建
/var/ftp/centos7
目录,并确保有足够的可用空间(本例中建议大于
5GB
),
然后将
CentOS 7
光盘中的所有数据复制到该目录下。
对于用户搜集的非
CentOS 7
光盘自带的更多其他软件包(必须包括存在依赖关系的所
有安装文件),除了准备相应的目录之外,还需要手动创建
repodata
数据文件,这就要用到
createrepo
工具(需要从
CentOS 7
光盘中安装)。例如,若已将作为源发布的其他
rpm
安
装包文件存放到
/var/ftp/other
目录下,则可执行以下操作为其创建
repodata
数据。
![](https://img-blog.csdnimg.cn/direct/f5a1b83d0eb740478c1174eaa392179c.png)
2.安装并启用 vsftpd 服务
![](https://img-blog.csdnimg.cn/direct/8677c669c542485ab68e5220b8407d06.png)
访 问
ftp://192.168.4.254/centos7/
, 确 保 可 以 查 看 到 已 复 制 到 软 件 仓 库 目 录
/var/ftp/centos7
下的光盘数据;访问
ftp://192.168.4.254/other/
,可以查看非
CentOS 7
光
盘自带的其他软件包。
二.配置软件仓库位置(客户端)
在客户机上需要指定至少一个可用的软件仓库,然后才能使用下一节将要介绍的
yum
工具来下载、安装软件包。
yum
工具使用的软件仓库信息存放在
/etc/yum.repos.d
目录下扩
展名为
“.repo”
的文件中。以上一小节的网络安装源为例,典型的仓库配置如下所示。
上述操作中,文件
centos7.repo
需要手动创建,
/etc/yum.repos.d
目录下若有其他未用
的
“*.repo”
文件建议将其删除。
“enabled=1”
为默认项,可以省略;
“gpgcheck”
和
“gpgkey”
两
行配置用来检查软件包的完整性,若无此要求则可以省略。
作为临时解决办法之一,实际上也可以使用本地文件夹作为软件仓库。例如,将
CentOS
7
光盘挂载到
/media/cdrom
目录下以后,可以参考以下操作来进行配置。当然,这种方式
仅限于在本机使用。
到这里
YUM
软件仓库的配置工作就算完成了,下一节将介绍
yum
命令的使用,通过集中提供的软件仓库来管理客户机中的软件安装。
二.使用 yum 工具管理软件包
在
CentOS 7
服务器中,
yum
工具是最常用的
YUM 客户端工具,由默认安装的
yum-3.2.29- 40.el6.noarch
软件包提供。下面分别介绍如何使用
yum
工具来查询、安装、
升级及卸载软件包。
一.查询软件包
yum
工具的常见查询操作包括查询软件包列表、查询软件包的描述信息、查询指定的
软件包,分别可结合子命令
list
、
info
、
search
来实现。
1.tum list——查询软件包列表
直接执行
“yum list”
命令可以获得系统中的软件安装情况,也可以查询软件仓库中可用
的软件包列表,其中子命令
list
表示列表查看。
若执行
“yum list installed”
命令,则表示只列出系统中已安装的软件包;若执行
“yum list
available”
命令,则表示只列出软件仓库中可用(尚未安装)的软件包;若执行
“yum list
updates”
命令,则表示只列出可以升级版本的软件包。
2.yum info——查询软件包的描述信息
当需要查看某个软件包的描述信息时,可以执行“yum info 软件包名”,其中子命令 info 表示获取信息。例如,执行以下操作可以查看软件包 httpd 的信息。
![](https://img-blog.csdnimg.cn/direct/15d46e27dd9448d0a6e1ea12043e61b1.png)
3.yum search——查询指定的软件包
当需要根据某个关键词来查找相关的软件包时,可以执行
“yum search
关键词
”
,默认
仅根据软件包名称和描述信息进行搜索;若执行
“yum search all
关键词
”
,可以扩大搜索范
围。例如,执行以下操作将搜索软件仓库并列出与
“httpd”
相关的软件包。
4.yum whatprovides——查询命令属于哪个软件包
在使用
Linux 操作系统过程中,经常遇到找不到某命令的现象。那这个命令需要安装什么软件包之后才会出现呢?yum whatprovides 就可以解决这个问题的,它可以查找某个命令属于哪个软件包。
注意:通过执行查询操作
“yum grouplist”“yum groupinfo
分组名称
”
可以获得
YUM
仓库中的软件分组信息。例如,执行
“yum groupinfo gnome-desktop”
命令后将列出软
件分组
gnome-desktop
所包括的软件包等信息。
5.yum的配置文件,/etc/yum.conf 详解
-
[main] 文件表示
-
cachedir=/var/cache/yum #yum下载的RPM包的缓存目录
-
keepcache=0 #缓存是否保存,1保存,0不保存。
-
debuglevel=2 #调试级别(0-10),默认为2(具体调试级别的应用,我也不了解)。
-
logfile=/var/log/yum.log #yum的日志文件所在的位置
-
exactarch=1 #在更新的时候,是否允许更新不同版本的RPM包,
-
#比如是否在i386上更新i686的RPM包。
-
obsoletes=1 #这是一个update的参数,具体请参阅yum(8),
-
#简单的说就是相当于upgrade,允许更新陈旧的RPM包。
-
gpgcheck=1 #是否检查GPG(GNU Private Guard),一种密钥方式签名。
-
plugins=1 #是否允许使用插件,默认是0不允许,
-
#但是我们一般会用yum-fastestmirror这个插件。
-
installonly_limit=3 #允许保留多少个内核包。
-
bugtracker_url #追踪bug路径
-
distroverpkg=centos-release 这个参数是指定从哪里获取系统版本相关的信息,发行版的获取。
二.安装丶升级丶卸载软件包
使用
yum
工具安装、升级软件包,分别通过子命令
install
、
update
来完成,操作对象
为指定的软件包名(可以有多个)。执行操作时会自动检查并解决软件包之间的依赖关系,
期间会提示用户按
Y
键确认安装或升级操作,若希望自动确认,可以在
yum
命令后添加
“-y”
选项。例如,执行以下操作将从软件仓库下载并安装
net-snmp
软件包,并自动解决其依赖
关系。
使用
yum
工具卸载软件包时,通过子命令
remove
来完成,卸载操作通过软件仓库也
可以完成。例如,执行以下操作将卸载
autofs
软件包,并自动解决其依赖关系。
注意:使用
yum
工具管理软件包时,结合子命令
groupinstall
、
groupupdate
、
groupremove
可以针对软件分组进行安装、升级、卸载操作。例如,若执行
“yum -y groupremove
gnome-desktop”
命令,则会删除整个
Desktop
分组所包含的软件包。
三.NFS共享存储服务
NFS
是一种基于
TCP/IP
传输的网络文件系统协议,最初由
Sun
公司开发。通过使用
NFS
协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源。对于大多数负
载均衡群集来说,使用
NFS
协议来共享数据存储是比较常见的做法,
NFS
也是
NAS
存储
设备必然支持的一种协议。
下面将学习
NFS
共享服务的基本配置和访问方法。
一.使用 NFS 发布共享资源
NFS
服务的实现依赖于
RPC
(
Remote Process Call
,远端过程调用)机制,以完成远
程到本地的映射过程。在
CentOS 7
系统中,需要安装
nfs-utils
、
rpcbind
软件包来提供
NFS
共享服务,前者用于
NFS
共享发布和访问,后者用于
RPC
支持。
1.安装 nfs-utils丶rpcbind 软件包
提供
RPC
支持的服务为
rpcbind
,提供
NFS
共享的服务为
nfs
,完成安装以后建议调
整这两个服务的自启动状态,以便每次开机后自动启用。手动加载
NFS
共享服务时,应该
先启动
rpcbind
,再启动
nfs
。
2.设置共享目录
NFS
的配置文件为
/etc/exports
,文件内容默认为空(无任何共享)。在
exports
文件中
设置共享资源时,记录格式为
“
目录位置 客户机地址
(
权限选项
)”
。例如,若要将文件夹
/opt/wwwroot
共享给
172.16.16.0/24
网段使用,允许读写操作,具体配置如下所示。
其中客户机地址可以是主机名、
IP
地址、网段地址,允许使用
*
、
?
通配符;权限选项
中的
rw
表示允许读写(
ro
为只读),
sync
表示同步写入,
no_root_squash
表示当客户机以
root
身份访问时赋予本地
root
权限(默认是
root_squash
,将作为
nfsnobody
用户降权对
待)。
当需要将同一个目录共享给不同的客户机,且分配不同的权限时,只要以空格分隔指定
多个
“
客户机(权限选项)
”
即可。例如,以下操作将
/var/ftp/public
目录共享给两个客户机,
并分别给予只读、读写权限。
3.启动 NFS 服务程序
![](https://img-blog.csdnimg.cn/direct/7d0dd4135bde4c49b3b2152a6d3e0857.png)
4.查看本机发布的 NFS 共享目录
![](https://img-blog.csdnimg.cn/direct/b94631fe7d27406586d0524c0abedd23.png)
二.在客户机中访问 NFS 共享资源
NFS
协议的目标是提供一种网络文件系统,因此对
NFS
共享的访问也使用
mount
命令
来进行挂载,对应的文件系统类型为
nfs
。既可以手动挂载,也可以加入
fstab
配置文件来
实现开机自动挂载。
1.安装并启动 rpcbind
若要正常访问
NFS
共享资源,客户机中也需要安装
rpcbind
软件包,并启动
rpcbind
系统服务。另外,为了使用
showmount
查询工具,建议将
nfs-utils
软件包也一并装上。
如果已经安装了
nfs-utils
软件包,则客户机也可以使用
showmount
查看
NFS
服务器
端共享了哪些目录,查询格式为
“showmount -e
服务器地址
”
。
2.手动挂载 NFS 共享目录
以
root
用户身份执行
mount
操作,将
NFS
服务器共享的
/opt/wwwroot
目录挂载到本
地目录
/var/www/html
。与挂载本地文件系统不同的是,设备位置处应指出服务器地址。
完成挂载以后,访问客户机的
/var/www/html
文件夹,实际上就相当于访问
NFS
服务器中的/opt/wwwroot
文件夹,其中的网络映射过程对于用户程序来说是透明的。例如,上述操作中创建的 index.html
测试文件,会立刻出现在服务器的
/opt/wwwroot/
目录下。
3.fstab 自动挂载设置
修改
/etc/fstab
配置文件,加入
NFS
共享目录的挂载设置。注意将文件系统类型设为
nfs
,挂载参数建议添加
_netdev
(设备需要网络);若添加
soft
、
intr
参数可以实现软挂载,
允许在网络中断时放弃挂载。这样客户机就可以在每次开机后自动挂载
NFS
共享资源了。
4.强制卸载 NFS
NFS
客户端与服务器端的耦合度是非常高的,如果客户端正在挂载使用,服务器端
NFS
服务突然间停掉了,那么在客户端就会出现执行
df -h
命令卡死的现象。这个时候使用umount 命令是无法直接卸载的,需要加上
-lf
才能卸载。
当出现卡死现象时,要重新开一个终端,执行
cat /etc/rc.local
命令,查看挂载点。
然后使用
umount
命令卸载,其中
-l
表示解除正在繁忙的文件系统,
-f
表示强制。