前言:
首先我们有必要为大家区分一下什么是rpm,什么是yum,避免大家产生混淆。RPM全称是Red Hat Package Manager,尽管几乎所有的Linux发行版本都使用这种形式进行软件包的管理安装、更新和卸载软件,但是并不受linux用户喜爱,主要原因就是因为rpm软件包之间的依赖性问题往往会很繁琐,一般用户根本无法解决。而yum仓库的产生,就是为了解决这个问题,它最大的特点就是为了帮助linux用户降低软件安装难度。
yum的宗旨就是自动化地升级,安装/移除rpm包,收集rpm包的相关信息,检查依赖性并自动提示用户解决。yum是软件的仓库,它包含rpm的header, header包括了rpm的各种信息,包括描述,功能,提供的文件,依赖性等,正是因为它收集了这些header并加以分析,yum才可以自动的处理rpm软件包之间的依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
(emm。。。今日前言废话一大堆)
一:yum概述
- YUM(Yellow dog Updater, Modified)
- 基于RPM包构建的软件更新机制
- 可以自动解决依赖关系
- 所有软件包由几种的YUM软件仓库提供
PS:小图画的真好哈哈哈哈哈哈哈嘎
二:准备安装源
2.1:软件仓库的提供方式
- FTP服务:ftp://…
- HTTP服务:http://…
- 本地目录: file://…
2.2 RPM软件包的来源
- Centos 发布的RPM包集合
- 第三方组织发布的RPM集合
- 用户自定义的RPM包集合
2.3 :构建Centos 7 软件仓库
- RPM包来自Centos 7 DVD光盘,或者镜像文件
- 通过FTP、HTTP或本地目录file 提供给客户机
2.4:在软件仓库中加入非官方RPM包组
- 包括存在依赖关系的所有RPM包
- 使用createrepo工具建立仓库数据文件
2.5:配置软件仓库位置(客户机端)
-
为客户机指定YUM仓库位置
-
配置文件:/etc/yum.repo.d/*.repo
-
直接以CentOS 7光盘作软件仓库
-
将CentOS7光盘放入光驱
-
指定仓库位置,URL地址为file:///media/cdrom
三:构建实验
3.1:实验需求
两台主机:系统centos 7
liu01作为服务端提供软件源环境 liu02作为客户端
3.2:将centos 7光盘镜像挂载到服务器(要进行连接)
[root@localhost ~]# hostnamectl set-hostname hero01
[root@localhost ~]# su
[root@hero01 ~]# mount /dev/cdrom /mnt
mount: /dev/sr0 写保护,将以只读方式挂载
[root@hero01 ~]# df -Th ##查看挂载 已经挂载好了
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root xfs 54G 4.1G 50G 8% /
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 13M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 xfs 1014M 179M 836M 18% /boot
/dev/mapper/centos-home xfs 245G 33M 245G 1% /home
tmpfs tmpfs 378M 4.0K 378M 1% /run/user/42
tmpfs tmpfs 378M 64K 378M 1% /run/user/0
/dev/sr0 iso9660 4.3G 4.3G 0 100% /mnt
[root@hero01 ~]# ls /mnt
CentOS_BuildTag images repodata
EFI isolinux RPM-GPG-KEY-CentOS-7
EULA LiveOS RPM-GPG-KEY-CentOS-Testing-7
GPL Packages TRANS.TBL
3.3:创建站点,复制镜像文件
[root@hero01 ~]# cd /var ##切换到var目录
[root@hero01 var]# ls ##查看var目录里面没有ftp站点
account db gopher lock opt target
adm empty kerberos log preserve tmp
cache ftp lib mail run www
crash games local nis spool yp
[root@hero01 var]# yum install vsftpd -y ##安装vsftpd
...省略
[root@hero01 var]# ls ##再次查看已经有ftp站点了
account db gopher lock opt target
adm empty kerberos log preserve tmp
cache ftp lib mail run www
crash games local nis spool yp
[root@hero01 var]# cd ftp/ ##切换到ftp目录
[root@hero01 ftp]# ls
pub ##查看列表 里面只有一个pub
[root@hero01 ftp]# pwd
/var/ftp
[root@hero01 ftp]# mkdir centos7 ##在站点下创建存放镜像文件的目录centos7
[root@hero01 ftp]# ls
centos7 pub
[root@hero01 ftp]# cp -rf /mnt/* centos7/ & ##把mnt里面所有的镜像文件复制到centos7里面,然后后台运行
[1] 89571
[root@hero01 ftp]# jobs ##查看后台运行程序
[1]+ 运行中 cp -i -rf /mnt/* centos7/ &
[root@hero01 ftp]# mkdir other ##创建扩展分区,存放repodate数据文件
[root@hero01 ftp]# ls
centos7 other pub
[root@hero01 ftp]# createrepo -g /mnt/repodata/repomd.xml other/
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
[root@hero01 ftp]# cd centos7/ ##查看cenots 7
[root@hero01 centos7]# ls
CentOS_BuildTag images repodata
EFI isolinux RPM-GPG-KEY-CentOS-7
EULA LiveOS RPM-GPG-KEY-CentOS-Testing-7
GPL Packages TRANS.TBL
[root@hero01 ftp]# ls
centos7 other pub
[root@hero01 ftp]# cd other/
[root@hero01 other]# ls
repodata
[root@hero01 other]# cd repodata/
[root@hero01 repodata]# ls
01a3b489a465bcac22a43492163df43451dc6ce47d27f66de289756b91635523-filelists.sqlite.bz2
12bbefc88e08f473cf860b4c150a9a8627f68eb256c9d54b80940e5dc224e85c-repomd.xml.gz
401dc19bda88c82c403423fb835844d64345f7e95f5b9835888189c03834cc93-filelists.xml.gz
5dc1e6e73c84803f059bb3065e684e56adfc289a7e398946574d79dac6643945-primary.sqlite.bz2
6bf9672d0862e8ef8b8ff05a2fd0208a922b1f5978e6589d87944c88259cb670-other.xml.gz
7c36572015e075add2b38b900837bcdbb8a504130ddff49b2351a7fc0affa3d4-other.sqlite.bz2
cdcb85c0e4daf1675d1ab6c42b0cacc6f9460d938296f7bf52678514a86a0554-repomd.xml
dabe2ce5481d23de1f4f52bdcfee0f9af98316c9e0de2ce8123adeefa0dd08b9-primary.xml.gz
repomd.xml
3.4:开启vsftpd服务
[root@hero01 ~]# systemctl restart vsftpd ##重启vsftpd服务
[root@hero01 ~]# net
netaddr netreport netscsid netstat nettle-hash nettle-lfib-stream
[root@hero01 ~]# netstat -ntap | grep 20 ##筛选TCP连接的20端口
tcp 0 0 0.0.0.0:6000 0.0.0.0:* LISTEN 18020/X
tcp 0 0 20.0.0.41:22 20.0.0.3:50826 ESTABLISHED 87714/sshd: root@pt
tcp6 0 0 :::6000 :::* LISTEN 18020/X
vsftpd中
20端口负责连接服务器 21端口负责上传和下载
[root@hero01 ~]# systemctl stop firewalld.service ##关闭防火墙
[root@hero01 ~]# setenforce 0 ##关闭安全功能
3.5:进入客户端liu02,安装ftp服务,查看是否能到站点
[root@hero02 ~]# rpm -q ftp ##查看是安装ftp
未安装软件包 ftp
[root@hero02 ~]# yum -y install ftp ##安装ftp
[root@hero02 ~]# ftp 20.0.0.41 ##使用ftp远程匿名登录服务器
Connected to 20.0.0.41 (20.0.0.41).
220 (vsFTPd 3.0.2)
Name (20.0.0.41:root): ftp ##使用ftp匿名
331 Please specify the password.
Password: ##匿名登录直接回车就行
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
ftp> ls ##可以查看站点中的文件
227 Entering Passive Mode (20,0,0,41,205,163).
150 Here comes the directory listing.
drwxr-xr-x 8 0 0 220 Jul 12 13:39 centos7
drwxr-xr-x 3 0 0 22 Jul 12 13:47 other
drwxr-xr-x 2 0 0 6 Apr 01 04:55 pub
226 Directory send OK.
ftp> bye ##退出登录
221 Goodbye.
[root@liu02 ~]#
3.6:将所有的repo文件移动到文件夹中
[root@hero02 ~]# cd /etc/yum
yum/ yum.repos.d/
[root@hero02 ~]# cd /etc/yum.repos.d/
[root@hero02 yum.repos.d]# ls
CentOS-Base.repo CentOS-Media.repo
CentOS-CR.repo CentOS-Sources.repo
CentOS-Debuginfo.repo CentOS-Vault.repo
CentOS-fasttrack.repo
[root@hero02 yum.repos.d]# mkdir bak ##创建bak目录
[root@hero02 yum.repos.d]# mv *.repo bak 把文件都移动到bak目录中
[root@hero02 yum.repos.d]# ls bak ##查看bak列表
CentOS-Base.repo CentOS-Media.repo
CentOS-CR.repo CentOS-Sources.repo
CentOS-Debuginfo.repo CentOS-Vault.repo
CentOS-fasttrack.repo
3.7:清除本地缓存缓存
[root@hero02 yum.repos.d]# yum clean all
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
There are no enabled repos.
Run "yum repolist all" to see the repos you have.
To enable Red Hat Subscription Management repositories:
subscription-manager repos --enable <repo>
To enable custom repositories:
yum-config-manager --enable <repo>
yum list 查看
你会发现本地都变成红色的下载不了软件 原本依赖官方的源的配置文件给转移到另一个地方放了
3.8:编写repo文件,并将密钥复制其中
[root@hero02 yum.repos.d]# vim centos7.repo
[base] ##仓库类型
name=centos7.Packages ##名称
baseurl=ftp://20.0.0.41/centos7 ##这边是访问路径
enabled=1 ##启动yum仓库
gpgcheck=1 ##验证软件包签名
gpgkey=ftp://20.0.0.41/centos7/RPM-GPG-KEY-CentOS-7 ##将服务端的密钥复制
[other]
name=other.Packages
baseurl=ftp://20.0.0.41/other
enabled=1
gpgcheck=0
~
:wq ##保存退出就行
[root@liu02 yum.repos.d]# yum list ##从新加载yum 现在已经有了
3.9:现在yum list已经生效可以安装软件包以及更新相关操作了
yum update 更新软件包,连内核一起更新
yum upgrade 只更新软件包,但不更新内核
四:yum工具概述
4.1:关于yum命令
由软件包yum-…提供
用来访问yum仓库,查询,下载及安装,卸载软件包
4.11:yum的配置文件
基本设置:/etc/yum.conf
仓库设置:/etc/yum.repos.d/*.repo
日志文件:/var/log/yum.log
4.12:yum缓存目录
存放下载的软件包,仓库信息等数据
位于/var/cache/yum/basearch(硬件架构,如x8664)/releasever(OS版本)
4.13:清理缓存数据
yum clean all
4.2:软件包查询
4.21:查询软件包
yum list [软件名]…
yum info [软件名]…
yum search <关键词>…
4.22:查询软件包组
yum grouplist [包组名]…
yum groupinfo <包组名>…
4.3:软件安装升级与卸载
4.31:安装软件
yum install [软件名]
yum groupinstall <包组名>
4.32:升级软件
yum update
yum groupdate
yum update 更新软件包,连内核一起更新
yum upgrade 只更新软件包,但不更新内核
4.33:卸载软件
yum remove <软件名>…
yum groupremove <包组名>…
yum grouplist [包组名]…
yum groupinfo <包组名>…
4.3:软件安装升级与卸载
4.31:安装软件
yum install [软件名]
yum groupinstall <包组名>
4.32:升级软件
yum update
yum groupdate
yum update 更新软件包,连内核一起更新
yum upgrade 只更新软件包,但不更新内核
4.33:卸载软件
yum remove <软件名>…
yum groupremove <包组名>…
ok 完活 提包跑路