目录
yum是一个基于RPM包(是Red-Hat Package Manager红帽软件包管理器的缩写)构建的软件更新机制,能够自动解决软件包之间的依赖关系。解决了日常工作中的大量查找安装依赖包的时间 为什么会有依赖关系的发生 因为linux本身就是以系统简洁为自身优势,所以在安装操作系统的时候并没有将所有的库文件以及编译软件包进行安装,所以在linux操作系统上进行软件安装的时候会出现软件包依赖的情况。yum由仓库和客户端组成,也就是整个yum由两部分组成,所以yum可以存放在两台服务器上。也可以存放在一台服务器上。可以有官方来提供服务,也可以由第三方来提供,比如国内的阿里云,搜狐云,还有一些非盈利组织比如学校等。官方的源一般在国外,下载速度肯定有限,手动更改成国内的云可以大幅提升下载速度。
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服务器上创建 yum repository(仓库),在仓库中事先存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录repodata下),当yum客户端利用yum/dnf工具进行安装时包时,会自动下载repodata中的元数据,查询远数据是否存在相关的包及依赖关系,自动从仓库中找到相关包下载并安装。
服务器:
RPM包 (Packages文件夹中)
元数据(repodata文件夹:目录(软件的目录),软件的依赖关系,软件的位置)
客户端的配置文件中
- baseurl=地址 一定要写到到 这两个文件夹 repodata packages 的上级目录
最终形成两个文件夹Packages (包文件夹一般取名packages)和 repodata(元数据文件夹)
仓库类型:
光盘的仓库基本仓库 比较常用的
epel扩展仓库 比较新
位置:/etc/yum.conf //主配置文件
[root@localhost]# /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: 自定义变量
位置:/etc/yum.repos.d/*.repo //yum仓库文件位置
例子里是默认的yum仓库 是centos官方的yum源,需要联网才可以使用
[root@localhost yum.repos.d]# ls /etc/yum.repos.d/
bak CentOS-Debuginfo.repo CentOS-Sources.repo
CentOS-Base.repo CentOS-fasttrack.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-Media.repo
位置:/var/log/yum.log ? ? ? ? ? ? ? ? ?//日志文件
[root@localhost yum.repos.d]# cat /var/log/yum.log //查看日志文件
Jun 23 11:03:16 Installed: apr-1.4.8-3.el7.x86_64
Jun 23 11:03:16 Installed: apr-util-1.5.2-6.el7.x86_64
Jun 23 11:03:16 Installed: httpd-tools-2.4.6-67.el7.centos.x86_64
Jun 23 11:03:16 Installed: mailcap-2.1.41-2.el7.noarch
命令 | 不加关键字 | 加入关键词、软件包、软件包组 |
---|---|---|
yum list | 显示所有可用包 | 单个的可安装包 |
yum info | 显示所有可用包的信息 | 单个具体的信息 |
yum search | \ | 模糊查找所有的相关信息 |
yum provides | \ | 精确查找 |
yum grouplist | 显示所有可用包组 | 显示具体的包组 |
yum groupinfo | 显示所有的包组具体信息 | 显示具体的包组的具体信息 |
yum install | \ | 安装具体软件包 |
yum groupinstall | \ | 安装具体软件包组 |
yum update | 所有软件升级 | 具体软件升级 |
命令 | 不加关键字 | 加入关键词、软件包、软件包组 |
yum remove | \ | 卸载具体软件 |
yum groupremove | \ | 卸载具体包组软件 |
yum history | 查看当前yum操作历史 | \ |
yum history undo | 加入序号卸载序号里安装的软件 | \ |
yum history redo | 加入序号重新执行序号里的操作 | \ |
本地yum仓库 没有网络的情况下, 光盘
软件仓库的提供方式
- FTP服务:ftp://ip地址/站点里路径
- HTTP服务:http://域名或者ip地址/站点里的路径
- 本地目录:file://绝对路径 (file:///mnt 此处第三个/为根目录)
①首先将光驱中的镜像文件进行挂载(先将虚拟机的光盘载入)
[root@localhost/]# mount /dev/sr0 /mnt
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost /]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root xfs 96G 5.2G 91G 6% /
devtmpfs devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs tmpfs 2.0G 13M 2.0G 1% /run
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sda1 xfs 497M 172M 326M 35% /boot
tmpfs tmpfs 407M 12K 407M 1% /run/user/42
tmpfs tmpfs 407M 0 407M 0% /run/user/0
/dev/sr0 iso9660 4.3G 4.3G 0 100% /mnt
②切换到 yum.repo.d 目录 将自带的仓库移走,多个开启仓库文件可能会造成冲突无法使用
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# mkdir repo.bak
[root@localhost yum.repos.d]# mv *.repo repo.bak/
[root@localhost yum.repos.d]# ls
repo.bak
③新建yum仓库文件
[root@localhost yum.repos.d]# vim local.repo
[local]
name=local
baseurl=file:///mnt
enable=1
gpgcheck=0
④yum list 检查仓库 无报错信息即可正常使用。
[root@localhost yum.repos.d]# yum clean all && yum makecache
国外云仓库比较慢,可以使用阿里云仓库代替
①切换到 yum.repo.d 目录 将自带的仓库移走
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# mkdir bak
[root@localhost yum.repos.d]# mv *.repo bak/
[root@localhost yum.repos.d]# ls
bak
②新建aliyun仓库
[ali]
name=aliyun
#baseurl=https://mirrors.aliyun.com/centos/7/os/x86_64/
//开启哪个都可以正常使用,这边主要解释变量的作用
baseurl=https://mirrors.aliyun.com/centos/$releasever/os/$basearch/
gpgcheck=0
//epel源仓库
[epel]
name=epel
baseurl=https://mirrors.aliyun.com/centos/7/extras/x86_64/
gpgcheck=0
//更新包仓库
[update]
name=update
baseurl=https://mirrors.aliyun.com/centos/7/updates/x86_64/
gpgcheck=0
#小火车
[root@centos7 ~]#yum -y install epel-release
[root@centos7 ~]#yum -y install sl
[root@centos7 ~]#sl -a
#牛
[root@localhost ~]#yum install -y install cowsay
[root@localhost ~]#cowsay hello
?ftp可以使用内网也可以使用外网,此处演示内网环境, 由于是内网环境,虚拟机全部设为仅主机模式,无法连接外部网络如果想要下载ftp服务则需要搭建一个本地yum仓库
服务端IP地址:192.168.80.111
客户端IP地址:192.168.80.112
①服务器搭建本地yum仓库并下载vsftpd服务
②服务端进入 /var/ftp/目录下添加一个挂载点centos7,将光驱挂载在centos7目录
③服务端关闭防火墙和selinux,开启vsftpd服务
④客户端搭建本地yum仓库并下载vsftpd和ftp服务
⑤客户端检测ftp服务是否正常
⑥客户端搭建yum仓库
⑦客户端测试:安装一个服务
?由于是内网环境,虚拟机全部设为仅主机模式,无法连接外部网络如果想要下载httpd服务则需要搭建一个本地yum仓库
服务端IP地址为192.168.132.111
客户端IP地址为192.168.132.112
①服务端搭建本地yum仓库下载httpd服务
②服务端进入/var/www/html/添加挂载目录centos7,将光驱挂载到centos7目录下(也可以将光驱内的所有文件包复制到centos目录下)
③服务端关闭防火墙,开启http服务
④客户端搭建yum仓库
存储类型
存储类型分为三种
直连式存储:Direct-Attached Storage,简称DAS
网络附加存储:Network-Attached Storage,简称NAS
存储区域网络:Storage Area Network,简称SAN
DAS:存储和主机是直连的,家用电脑,服务和硬盘直连,存储和主机在一台机器上
SAN:有一定距离,主机核存储设备距离先对较远 ,只提供空间不提供文件系统,管理等其他软件服务,只相当于多了一块硬盘
NAS:存储在远程,文件系统也在远程,这块空间,你可以直接访问上面的文件,你只能看到文件,文件共享NFS FTP 等都是NAS
进入进入解决模式
选择1 ,继续
输入
rpm -ivh? /run/install/repo/Packages/rpm-4.11.3-25.e17.x86_64.rpm? --root=/mnt/sysimage/
mount /dev/sr0 /mnt/
cp /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm
mkdir test
mv tree-1.6.0-10.el7.x86_64.rpm test/
cd test
mkdir packages
mv tree-1.6.0-10.el7.x86_64.rpm packages/
createrepo -v test
cd /etc/yum.repos.d/
mkdir bak
mv *.repo bak/
vim tree.repo
[tree]
name=tree
baseurl=file:///data/test
gpgcheck=0
yum clean all
yum makecache
yum install tree -y
没有外网 又想使用这个epel源
[root@localhost ~]#yum install epel-release
#安装epel源 生成epel仓库文件
[root@localhost ~]# reposync -r epel -p /root/
#下载同步epel源 根据epel仓库文件去找目录
[root@localhost ~]# yum -y install createrepo
#安装建立元数据命令
[root@localhost ~]# createrepo -v /root/epel
#建立元数据 软件目录 依赖关系
[root@localhost ~]# ls
anaconda-ks.cfg epel
[root@localhost ~]# cd epel/
[root@localhost epel]# ls
#查看元数据
mkisofs -r -o /root/xxx.iso /data/centos7/epel
制作成镜像
[root@localhost yum.repos.d]# yum install nginx --downloadonly --downloaddir=/data/
[root@localhost http]#yum install nginx --downloadonly --downloaddir=/nginx/
--downloadonly ?#只下载相关包默认至某一目录
--downloaddir=绝对目录路径 #下载到某一目录