目录
YUM简介
yum是一个基于RPM包(是Red-Hat Package Manager红帽软件包管理器的缩写)构建的软件更新机制,能够自动解决软件包之间的依赖关系。解决了日常工作中的大量查找安装依赖包的时间。所有软件包由集中的YUM软件仓库提供
因为linux本身就是以系统简洁为自身优势,所以在安装操作系统的时候并没有将所有的库文件以及编译软件包进行安装,所以在linux操作系统上进行软件安装的时候会出现软件包依赖的情况。yum由仓库和客户端组成,也就是整个yum由两部分组成,所以yum可以存放在两台服务器上。也可以存放在一台服务器上。可以有官方来提供服务,也可以由第三方来提供,比如国内的阿里云,搜狐云,还有一些非盈利组织比如学校等。官方的源一般在国外,下载速度肯定有限,手动更改成国内的云可以大幅提升下载速度。
YUM 的前身是 YUP(Yellow dog Updater,Yellow dog Linux 的软件更新器),最初由TSS 公司(Terra Soft Solutions,INC.)使用 Python 语言开发而成,后来由杜克大学(DuckUniversity)的 Linux 开发队伍进行改进,命名为 YUM(Yellow dog Updater,Modified)。要成功使用 YUM 机制来更新系统和软件,需要有一个包含各种 rpm 安装包文件及其依赖软件的软件仓库(repository),提供软件仓库的服务器也称为“源”服务器。在客户机中只要正确指定软件仓库的地址等信息,就可以通过对应的“源”服务器来安装或更新软件。
yum的实现过程
先在yum服务器上创建 yum repository(仓库),在仓库中事先存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录repodata下),当yum客户端利用yum/dnf工具进行安装时包时,会自动下载repodata中的元数据,查询远数据是否存在相关的包及依赖关系,自动从仓库中找到相关包下载并安装。
YUM配置文件及命令
yum配置文件
主配置文件在/etc/yum.conf
[root@localhost ~]#vim /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever //yum下载rpm包的缓存目录/$basearch代表硬件,$releasever代表版本 比如7
keepcache=0 //是否保存缓存 0代表不保存,1代表保存
debuglevel=2 //调试级别
logfile=/var/log/yum.log //日志文件位置
exactarch=1 //是否允许不同版本的rpm安装
obsoletes=1 //update 的一个参数是否可以允许旧版本的运行
gpgcheck=1 //验证秘钥
plugins=1 //是否允许插件1代表可以
installonly_limit=5 //保存几个内核 5代表5个
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release
yum的repo配置文件中可用的变量
$releasever: 当前OS的发行版的主版本号,如:8,7,6
$arch: CPU架构,如:aarch64, i586, i686,x86_64等
$basearch:系统基础平台;i386, x86_64
$contentdir:表示目录,比如:centos-8,centos-7
$YUM0-$YUM9:自定义变量
yum仓库设置文件
/etc/yum.repos.d //yum仓库文件的位置
这里是默认的yum仓库 是centos官方的yum源,需要联网才可以使用
yum日志文件
查看日志
[root@localhost ~]#cat /var/log/yum.log
YUM命令详解
命令 | 不加关键字 | 加入关键词、软件包、软件包组 |
---|---|---|
yum list | 显示所有可用包 | 单个的可安装包 |
yum info | 显示所有可用包的信息 | 单个具体的信息 |
yum search | \ | 模糊查找所有的相关信息 |
yum whatprovides | \ | 精确查找 |
yum grouplist | 显示所有可用包组 | 显示具体的包组 |
yum groupinfo | \ | 显示具体的包组的具体信息 |
yum install | \ | 安装具体软件包 |
yum groupinstall | \ | 安装具体软件包组 |
yum update | 所有软件升级 | 具体软件升级 |
yum group update | 所有包组升级 | 具体包组升级 |
yum remove | \ | 卸载具体软件 |
yum groupremove | \ | 卸载具体包组软件 |
yum history | 查看当前yum操作历史 | \ |
yum history undo | 加入序号卸载序号里安装的软件 | \ |
yum history redo | 加入序号重新执行序号里的操作 | \ |
查询
yum list 【软件包】
显示可用的安装包,如不加软件名是显示所有的可用包
指定某个软件包
yum info 【】
显示安装包详细信息
yum search <关键词>
根据关键字查找软件安装包,相当于你只知道这个包里的某个关键字会全部给你匹配出来(跟过滤差不多)
yum whatprovides <关键词>
知道某个命令却不知道具体的包可以用此命令查找
yum grouplist [包组名]
安装包组的查询 不加包组名 就是显示所有(建议安装英文操作系统,中文操作系统无法显示英文包名字,无法直接复制)
yum groupinfo <包组名>
显示具体的包组的具体信息,不可单独使用
yum安装升级
yum install [软件名]
安装软件包,如安装一个httpd
[root@localhost ~]#yum install httpd
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.ustc.edu.cn
* extras: mirrors.cn99.com
* updates: mirrors.cn99.com
Resolving Dependencies
--> Running transaction check
---> Package httpd.x86_64 0:2.4.6-97.el7.centos will be installed
--> Processing Dependency: httpd-tools = 2.4.6-97.el7.centos for package: httpd-2.4.6-97.el7.centos.x86_64
--> Processing Dependency: /etc/mime.types for package: httpd-2.4.6-97.el7.centos.x86_64
--> Processing Dependency: libaprutil-1.so.0()(64bit) for package: httpd-2.4.6-97.el7.centos.x86_64
--> Processing Dependency: libapr-1.so.0()(64bit) for package: httpd-2.4.6-97.el7.centos.x86_64
--> Running transaction check
---> Package apr.x86_64 0:1.4.8-7.el7 will be installed
---> Package apr-util.x86_64 0:1.5.2-6.el7 will be installed
---> Package httpd-tools.x86_64 0:2.4.6-97.el7.centos will be installed
---> Package mailcap.noarch 0:2.1.41-2.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
========================================================================================================================
Package Arch Version Repository Size
========================================================================================================================
Installing:
httpd x86_64 2.4.6-97.el7.centos updates 2.7 M
Installing for dependencies:
apr x86_64 1.4.8-7.el7 base 104 k
apr-util x86_64 1.5.2-6.el7 base 92 k
httpd-tools x86_64 2.4.6-97.el7.centos updates 93 k
mailcap noarch 2.1.41-2.el7 base 31 k
Transaction Summary
========================================================================================================================
Install 1 Package (+4 Dependent packages)
Total download size: 3.0 M
Installed size: 10 M
Is this ok [y/d/N]: y
Downloading packages:
(1/5): apr-util-1.5.2-6.el7.x86_64.rpm | 92 kB 00:00:00
(2/5): httpd-tools-2.4.6-97.el7.centos.x86_64.rpm | 93 kB 00:00:00
(3/5): mailcap-2.1.41-2.el7.noarch.rpm | 31 kB 00:00:00
(4/5): apr-1.4.8-7.el7.x86_64.rpm | 104 kB 00:00:00
(5/5): httpd-2.4.6-97.el7.centos.x86_64.rpm | 2.7 MB 00:00:01
------------------------------------------------------------------------------------------------------------------------
Total 2.1 MB/s | 3.0 MB 00:00:01
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : apr-1.4.8-7.el7.x86_64 1/5
Installing : apr-util-1.5.2-6.el7.x86_64 2/5
Installing : httpd-tools-2.4.6-97.el7.centos.x86_64 3/5
Installing : mailcap-2.1.41-2.el7.noarch 4/5
Installing : httpd-2.4.6-97.el7.centos.x86_64 5/5
Verifying : httpd-2.4.6-97.el7.centos.x86_64 1/5
Verifying : apr-1.4.8-7.el7.x86_64 2/5
Verifying : mailcap-2.1.41-2.el7.noarch 3/5
Verifying : httpd-tools-2.4.6-97.el7.centos.x86_64 4/5
Verifying : apr-util-1.5.2-6.el7.x86_64 5/5
Installed:
httpd.x86_64 0:2.4.6-97.el7.centos
Dependency Installed:
apr.x86_64 0:1.4.8-7.el7 apr-util.x86_64 0:1.5.2-6.el7 httpd-tools.x86_64 0:2.4.6-97.el7.centos
mailcap.noarch 0:2.1.41-2.el7
Complete!
yum groupinstall <包组名>
包组安装同yum install,安装一个桌面
安装桌面
[root@localhost ~]#yum -y groups install "GNOME Desktop"
ps:如果安装不成功,就先升级一下yum -y upgrade,再安装
yum软件卸载
yum remove <软件名>
卸载已安装的软件必须加软件名,把刚刚安装的httpd删除
[root@localhost ~]#yum remove httpd
Loaded plugins: fastestmirror, langpacks
Resolving Dependencies
--> Running transaction check
---> Package httpd.x86_64 0:2.4.6-97.el7.centos will be erased
--> Finished Dependency Resolution
Dependencies Resolved
========================================================================================================================
Package Arch Version Repository Size
========================================================================================================================
Removing:
httpd x86_64 2.4.6-97.el7.centos @updates 9.4 M
Transaction Summary
========================================================================================================================
Remove 1 Package
Installed size: 9.4 M
Is this ok [y/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Erasing : httpd-2.4.6-97.el7.centos.x86_64 1/1
Verifying : httpd-2.4.6-97.el7.centos.x86_64 1/1
Removed:
httpd.x86_64 0:2.4.6-97.el7.centos
Complete!
yum history
查看历史的使用记录
yum history undo <序号>
对比remove好处是可以将所有的依赖都删除
yum history redo <序号>
恢复刚刚删除的
如果后悔 卸载 可以使用两种方式
yum history redo 4 (重新安装一遍)
yum history undo 6 (反悔卸载等于重新安装一遍)
搭建仓库的方式
软件仓库的提供方式
FTP服务:ftp://ip地址/站点里路径
HTTP服务:http://域名或者ip地址/站点里的路径
本地目录:file://绝对路径 (file:///mnt 此处第三个/为根目录)
搭建本地yum仓库
将自带的仓库移走
[root@localhost ~]#cd /etc/yum.repos.d/
[root@localhost 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
[root@localhost yum.repos.d]#mkdir bak
[root@localhost yum.repos.d]#mv *.repo bak
[root@localhost yum.repos.d]#ls
bak
[root@localhost yum.repos.d]#
新建yum仓库文件
[root@localhost yum.repos.d]# vim abc.repo
清理缓存
[root@localhost yum.repos.d]#yum clean all
yum list 检查仓库 无报错信息即可正常使用。
如果没有网络,可以只下载,/data 没有会自动创建
[root@localhost ]#yum -y install --downloadonly --downloaddir=/data/bind bind
# 只下载 指定下载目录(如不存在会新建) 软件名
搭建阿里云仓库 (http方式外网环境)
国外云仓库比较慢,可以使用阿里云仓库代替
将自带的仓库移走
[root@localhost ~]#cd /etc/yum.repos.d/
[root@localhost 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
[root@localhost yum.repos.d]#mkdir bak
[root@localhost yum.repos.d]#mv *.repo bak
[root@localhost yum.repos.d]#ls
bak
[root@localhost yum.repos.d]#
Centos系统的国内yum源,可以去网上找,这里整理了一些
CentOS系统的yum源
#阿里云
https://mirrors.aliyun.com/centos/$releasever/
#腾讯云
https://mirrors.cloud.tencent.com/centos/$releasever/
#华为云
https://repo.huaweicloud.com/centos/$releasever/
#清华大学
https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/
EPEL的yum源
#阿里云
https://mirrors.aliyun.com/epel/$releasever/x86_64
#腾讯云
https://mirrors.cloud.tencent.com/epel/$releasever/x86_64
#华为云
https://mirrors.huaweicloud.com/epel/$releasever/x86_64
#清华大学
https://mirrors.tuna.tsinghua.edu.cn/epel/$releasever/x86_64
#更新源
http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/ http://mirrors.aliyuncs.com/centos/$releasever/updates/$basearch/ http://mirrors.cloud.aliyuncs.com/centos/$releasever/updates/$basearch/
新建aliyun仓库
ftp方式搭建云仓库
服务端:192.168.91.100
客户端:192.168.91.111
先在服务端安装vsftp
[root@localhost ~]#yum install vsftpd
cd到var/ftp
[root@localhost ~]#cd /var/ftp/
创建两个目录
[root@localhost ftp]#mkdir centos7 other
挂载,把镜像文件挂载到/mnt目录上
[root@localhost ftp]#mount /dev/sr0 /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载
将mnt目录下所有复制到centos7 里 &代表文件大,在后台运行
[root@localhost ftp]#cp -rf /mnt/* centos7/ &
[1] 19562
[root@localhost ftp]#jobs
[1]+ 运行中 cp -i -rf /mnt/* centos7/ &
[root@localhost ftp]#jobs
[1]+ 完成 cp -i -rf /mnt/* centos7/
cd到other
在客户端安装ftp
尝试连接服务端
编写yum仓库文件
[root@localhost yum.repos.d]#vim centos.repo
测试yum是否可以正常使用
[root@localhost yum.repos.d]#yum install dhcp
已加载插件:fastestmirror, langpacks
centos7 | 3.6 kB 00:00:00
other | 3.6 kB 00:00:00
(1/4): centos7/group_gz | 156 kB 00:00:00
(2/4): centos7/primary_db | 3.1 MB 00:00:00
(3/4): other/group_gz | 1.1 kB 00:00:00
(4/4): other/primary_db | 1.1 kB 00:00:00
Determining fastest mirrors
正在解决依赖关系
--> 正在检查事务
---> 软件包 dhcp.x86_64.12.4.2.5-58.el7.centos 将被 安装
--> 解决依赖关系完成
依赖关系解决
========================================================================================================================
Package 架构 版本 源 大小
========================================================================================================================
正在安装:
dhcp x86_64 12:4.2.5-58.el7.centos centos7 513 k
事务概要
========================================================================================================================
安装 1 软件包
总下载量:513 k
安装大小:1.4 M
Is this ok [y/d/N]: y
Downloading packages:
dhcp-4.2.5-58.el7.centos.x86_64.rpm | 513 kB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在安装 : 12:dhcp-4.2.5-58.el7.centos.x86_64 1/1
验证中 : 12:dhcp-4.2.5-58.el7.centos.x86_64 1/1
已安装:
dhcp.x86_64 12:4.2.5-58.el7.centos
完毕!
NFS共享
NFS(Network File System 网络文件服务) NFS 是一种基于 TCP/IP 传输的网络文件系统协议,最初由 Sun 公司开发。 通过使用 NFS 协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源 NFS 也是 NAS 存储 设备必然支持的一种协议 NAS存储:
NFS 服务的实现依赖于 RPC(Remote Process Call,远端过程调用)机制, 以完成远 程到本地的映射过程。在 CentOS 7 系统中,需要安装 nfs-utils、rpcbind 软件包来提供 NFS 共享服务, 前者用于 NFS 共享发布和访问,后者用于 RPC 支持。 手动加载 NFS 共享服务时,应该先启动 rpcbind,再启动 nfs。
特点: 采用TCP/IP传输网络文件 安全性低 简单易操作 适合局域网环境
NFS原理
NFS优势:节省本地存储空间,将常用的数据如:/home 目录,存放在NFS服务器上且可以通过网络访问,将减少本地磁盘的使用率。
NFS软件介绍
软件包:nfs-utils(包括服务器端和客户端)
相关软件包:rpcbind(必须),tcp_wappers
nfs端口号2049 RPC端口号111
配置文件: /etc/exports
配置文件格式
/dir 主机1()
搭建过程
在服务器上安装 nfs-utils.x86_64 rpcbind 我已经有了
[root@localhost ~]#rpm -q rpcbind nfs-utils
rpcbind-0.2.0-42.el7.x86_64
nfs-utils-1.3.0-0.48.el7.x86_64
开启两个软件包服务
[root@localhost ~]#systemctl start rpcbind
[root@localhost ~]#systemctl start nfs
新建共享目录 ,给权限
[root@localhost ~]#mkdir /share
[root@localhost ~]#cd /share/
[root@localhost share]#chmod -R 777 /share/
查看详细的nfs信息
[root@localhost share]#exportfs -v
/share 192.168.91.0/24(rw,sync,wdelay,hide,no_subtree_check,sec=sys,secure,no_root_squash,no_all_squash)
/share <world>(ro,sync,wdelay,hide,no_subtree_check,sec=sys,secure,root_squash,no_all_squash)
编辑配置文件/etc/exports
[root@localhost ~]#vim /etc/exports
查看本机发布的 NFS 共享目录
客户机
安装
[root@localhost ~]#rpm -q rpcbind nfs-utils
rpcbind-0.2.0-42.el7.x86_64
nfs-utils-1.3.0-0.48.el7.x86_64
开启服务
[root@localhost ~]#systemctl start nfs
创建可共享的目录
[root@localhost ~]#mkdir /data
挂载,和服务器共享
此时就可以,双方共享文件了
在服务器创建一个文件
客户机上可以看到
在客户机创建文件,服务器也可以看到
exportfs 可用于管理nfs
-v 查看本机所有nfs
-r 重读配置文件
-a 输出本机所有共享
总结
YUM软件仓库主要通过HTTP或FTP方式进行发布,且需要提供repodata数据,其中包含所有rpm包文件的头信息,在使用yum命令,查询、安装、升级或卸载软件包时,都有对应的命令list、info、search,install、update、remove等等
NFS服务在实现依赖于RPC机制,RPC充当NFS客户端和NFS服务器的中介,对NFS共享的访问使用mount命令进行挂载,对应的文件系统类型为nfs,既可以手动挂载,也可以加入fstab配置文件来实现开机自动挂载。