目录
4. yum whatprovides——查询命令属于哪个软件包
5.1 部署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),提供软件仓库的服务器也称为“源”服务器。在客户机中只要正确指定软件仓库的地址等信息,就可以通过对应的“源”服务器来安装或更新软件
5.1.1 准备网络安装源(服务器端)
YUM软件仓库通常借助于HTTP或FTP协议来进行发布,这样可以面向网络中的所有客户机提供软件源服务。为了便于客户机查询软件包,获取依赖关系等信息,在软件仓库中需要提供仓库数据(repodata),其中收集了目录下所有rpm包的头部信息。
1. 准备软件仓库目录
在CentOS7系统的安装光盘中,已针对软件目录Packages建立好repodata数据,因此只要简单地将整个光盘中的内容通过HTTP或FTP进行发布,就可以作为软件仓库了。例如,可以创建lvarlftp/centos7目录,并确保有足够的可用空间(本例中建议大于5GB),然后将CentOS7光盘中的所有数据复制到该目录下。
[root@localhost ~]# mkdir -p /var/ftp/centos7
[root@localhost ~]# cp -rf /media/cdrom/* /var/ftp/centos7/
[root@localhost ~]
对于用户搜集的非CentOS7光盘自带的更多其他软件包(必须包括存在依赖关系的所有安装文件),除了准备相应的目录之外,还需要手动创建repodata数据文件,这就要用到createrepo工具(需要从CentOS 7光盘中安装)。例如,若已将作为源发布的其他rpm安装包文件存到/var/ftplother目录下,则可执行以下操作为其创建repodata数据。
2. 安装并启用vsftpd服务
访问ftp://192.168.4.254/centos7/,确保可以查看到已复制到软件仓库目录/var/ftp/centos7下的光盘数据:访问ftp://192.168.4.254/other/,可以查看非 CentOS 7光盘自带的其他软件包。
5.1.2 配置软件仓库位置(客户端)
在客户机上需要指定至少一个可用的软件仓库,然后才能使用下一节将要介绍的yum工具来下载、安装软件包。yum工具使用的软件仓库信息存放在letclyum.repos.d目录下扩展名为".repo"的文件中。以上一小节的网络安装源为例,典型的仓库配置如下所示。
上述操作中,文件 centos7.repo需要手动创建,letclyum.repos.d目录下若有其他未用的"".repo"文件建议将其删除。"enabled=1"为默认项,可以省略:“gpgcheck"和""gpgkey"两行配置用来检查软件包的完整性,若无此要求则可以省略。
作为临时解决办法之一,实际上也可以使用本地文件夹作为软件仓库。例如,将Centos7光盘挂载到/medialcdrom目录下以后,可以参考以下操作来进行配置。当然,这种方式仅限于在本机使用。
到这里YUM软件仓库的配置工作就算完成了,下一节将介绍yum命令的使用,通过集中提供的软件仓库来管理客户机中的软件安装。
5.2 使用yum工具管理软件包
在CentOS 7服务器中,yum 工具是最常用的YUM客户端工具,由默认安装的yum-3.2.29- 40.el6.noarch软件包提供
5.2.1 查询软件包
yum 工具的常见查询操作包括查询软件包列表、查询软件包的描述信息、查询指定的软件包,分别可结合子命令list、info、 search来实现。
1. yum list——查询软件包列表
直接执行yum list"命令可以获得系统中的软件安装情况,也可以查询软件仓库中可用的软件包列表,其中子命令list表示列表查看。
若执行“yum list installed"命令,则表示只列出系统中已安装的软件包;若执行"yum listavailable"命令,则表示只列出软件仓库中可用(尚未安装)的软件包;若执行yum listupdates"命令,则表示只列出可以升级版本的软件包。
2. yum info——查询软件包的描述信息
当需要查看某个软件包的描述信息时,可以执行"yum info软件包名",其中子命令info表示获取信息。例如,执行以下操作可以查看软件包 httpd的信息。
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.2.2 安装、升级、卸载软件包
使用yum 工具安装、升级软件包,分别通过子命令install、update来完成,操作对象为指定的软件包名(可以有多个)。执行操作时会自动检查并解决软件包之间的依赖关系,期间会提示用户按丫键确认安装或升级操作,若希望自动确认,可以在yum命令后添加"-y"选项。例如,执行以下操作将从软件仓库下载并安装net-snmp软件包,并自动解决其依赖关系。
使用yum工具卸载软件包时,通过子命令remove来完成,卸载操作通过软件仓库也可以完成。例如,执行以下操作将卸载autofs 软件包,并自动解决其依赖关系。
注意:使用yum工具管理软件包时,结合子命令groupinstall 、 groupupdate、 groupremove可以针对软件分组进行安装、升级、卸载操作。例如,若执行"yum -y groupremovegnome-desktop"命令,则会删除整个Desktop 分组所包含的软件包。
5.3 NFS共享存储服务
NFS是一种基于TCP/IP传输的网络文件系统协议,最初由Sun公司开发。通过使用NFS协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源。对于大多数负载均衡群集来说,使用NFS协议来共享数据存储是比较常见的做法,NFS也是NAS存储设备必然支持的一种协议。
5.3.1 使用NFS发布共享资源
NFS服务的实现依赖于RPC (Remote Process Call,远端过程调用〉机制,以完成远程到本地的映射过程。在CentOS7系统中,需要安装nfs-utils、rpcbind软件包来提供NFS共享服务,前者用于NFS共享发布和访问,后者用于RPC支持。
1. 安装nfs-utils、rpcbind软件包
提供RPC支持的服务为rpcbind,提供NFS共享的服务为nfs,完成安装以后建议调整这两个服务的自启动状态,以便每次开机后自动启用。手动加载NFS共享服务时,应该先启动rpcbind,再启动nfs。
2. 设置共享目录
NFS的配置文件为letclexports,文件内容默认为空(无任何共享)。在 exports 文件中设置共享资源时,记录格式为“目录位置﹑客户机地址(权限选项)"。例如,若要将文件夹lopt/wwwroot共享给172.16.16.0/24网段使用,允许读写操作,具体配置如下所示。
其中客户机地址可以是主机名、I地址、网段地址,允许使用*、?通配符;权限选项中的rw表示允许读写(ro为只读),sync表示同步写入,no_root_squash表示当客户机以root身份访问时赋予本地root权限(默认是 root_squash,将作为nfsnobody用户降权对待)。
当需要将同一个目录共享给不同的客户机,且分配不同的权限时,只要以空格分隔指定多个“客户机(权限选项)"即可。例如,以下操作将/var/ftp/public目录共享给两个客户机,并分别给予只读、读写权限。
3. 启动NFS服务程序
4. 查看本机发布的NFS共享目录
5.3.2 在客户机中访问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 服务器共享的/optwwwroot目录挂载到本地目录lvar/www/html。与挂载本地文件系统不同的是,设备位置处应指出服务器地址。
完成挂载以后,访问客户机的/var/www/html文件夹,实际上就相当于访问NFS服务器中的/loptwwwroot文件夹,其中的网络映射过程对于用户程序来说是透明的。例如,上述操作中创建的index.html测试文件,会立刻出现在服务器的/opt/wwwroot/目录下。
3. fstab自动挂载设置
修改letc/fstab配置文件,加入NFS共享目录的挂载设置。注意将文件系统类型设为nfs,挂载参数建议添加_netdev(设备需要网络);若添加 soft、intr参数可以实现软挂载,允许在网络中断时放弃挂载。这样客户机就可以在每次开机后自动挂载NFS共享资源了。
4. 强制卸载NFS
NFS客户端与服务器端的耦合度是非常高的,如果客户端正在挂载使用,服务器端NFS服务突然间停掉了,那么在客户端就会出现执行df -h命令卡死的现象。这个时候使用umount命令是无法直接卸载的,需要加上 -lf 才能卸载。
当出现卡死现象时,要重新开一个终端,执行cat letclrc.local命令,查看挂载点。
然后使用umount命令卸载,其中-l表示解除正在繁忙的文件系统,-f表示强制。