Linux网络---部署YUM仓库理论+实操

前言

首先我们有必要为大家区分一下什么是rpm,什么是yum,避免大家产生混淆。RPM全称是Red Hat Package Manager,尽管几乎所有的Linux发行版本都使用这种形式进行软件包的管理安装、更新和卸载软件,但是并不受linux用户喜爱,主要原因就是因为rpm软件包之间的依赖性问题往往会很繁琐,一般用户根本无法解决。而yum仓库的产生,就是为了解决这个问题,它最大的特点就是为了帮助linux用户降低软件安装难度。

yum的宗旨就是自动化地升级,安装/移除rpm包,收集rpm包的相关信息,检查依赖性并自动提示用户解决。yum是软件的仓库,它包含rpm的header, header包括了rpm的各种信息,包括描述,功能,提供的文件,依赖性等,正是因为它收集了这些header并加以分析,yum才可以自动的处理rpm软件包之间的依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

一:yum概述

  • YUM(Yellow dog Updater, Modified)
  • 基于RPM包构建的软件更新机制
  • 可以自动解决依赖关系
  • 所有软件包由几种的YUM软件仓库提供

mark

二:准备安装源

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 liu01
[root@localhost ~]# su
[root@liu01 ~]# mount /dev/cdrom /mnt
mount: /dev/sr0 写保护,将以只读方式挂载
[root@liu01 ~]# 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@liu01 ~]# 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@liu01 ~]# cd /var                           ##切换到var目录
[root@liu01 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@liu01 var]# yum install vsftpd -y           ##安装vsftpd
...省略
[root@liu01 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@liu01 var]# cd ftp/                         ##切换到ftp目录
[root@liu01 ftp]# ls
pub                                               ##查看列表  里面只有一个pub
[root@liu01 ftp]# pwd
/var/ftp
[root@liu01 ftp]# mkdir centos7                    ##在站点下创建存放镜像文件的目录centos7
[root@liu01 ftp]# ls
centos7  pub
[root@liu01 ftp]# cp -rf /mnt/* centos7/ &         ##把mnt里面所有的镜像文件复制到centos7里面,然后后台运行
[1] 89571
[root@liu01 ftp]# jobs                             ##查看后台运行程序
[1]+  运行中               cp -i -rf /mnt/* centos7/ &

[root@liu01 ftp]# mkdir other                      ##创建扩展分区,存放repodate数据文件
[root@liu01 ftp]# ls
centos7  other  pub
[root@liu01 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@liu01 ftp]# cd centos7/                    ##查看cenots 7
[root@liu01 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@liu01 ftp]# ls
centos7  other  pub
[root@liu01 ftp]# cd other/
[root@liu01 other]# ls
repodata
[root@liu01 other]# cd repodata/
[root@liu01 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@liu01 ~]# systemctl restart vsftpd                      ##重启vsftpd服务
[root@liu01 ~]# net
netaddr             netreport           netscsid            netstat             nettle-hash         nettle-lfib-stream  
[root@liu01 ~]# 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@liu01 ~]# systemctl stop firewalld.service            ##关闭防火墙
[root@liu01 ~]# setenforce 0                                ##关闭安全功能

3.5:进入客户端liu02,安装ftp服务,查看是否能到站点

[root@liu02 ~]# rpm -q ftp                                ##查看是安装ftp
未安装软件包 ftp 
[root@liu02 ~]# yum -y install ftp                        ##安装ftp
[root@liu02 ~]# 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@liu02 ~]# cd /etc/yum
yum/         yum.repos.d/ 
[root@liu02 ~]# cd /etc/yum.repos.d/
[root@liu02 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@liu02 yum.repos.d]# mkdir bak               ##创建bak目录
[root@liu02 yum.repos.d]# mv *.repo bak           把文件都移动到bak目录中
[root@liu02 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@liu02 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 查看 你会发现本地都变成红色的下载不了软件 原本依赖官方的源的配置文件给转移到另一个地方放了

mark

3.8:编写repo文件,并将密钥复制其中

[root@liu02 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 <包组名>…

感谢观看

猜你喜欢

转载自blog.csdn.net/weixin_47151643/article/details/107313127
今日推荐