软件仓库的提供方式

  • FTP服务:ftp://...
  • HTTP服务:http://...
  • 本地目录:file://...

一,构建本地 Yum 仓库

1,Vmware为例,构建环境

linux自定义本地仓库 linux搭建本地yum仓库_centos

linux自定义本地仓库 linux搭建本地yum仓库_linux_02

 2,挂载光驱设备

[root@localhost ~]# mkdir   /mydvd  #创建仓库目录
[root@localhost ~]# mount  /dev/cdrom   /mydvd  # 挂载
[root@localhost ~]# ls  /mydvd   # 查看仓库目录

   3,书写客户端配置文件

[root@localhost ~]# rm  -rf   /etc/yum.repos.d/*  #删除多余的配置文件,以免影响自己配置的文件
[root@localhost ~]# vim   /etc/yum.repos.d/mydvd.repo  #创建 yum 配置文件 mydvd.repo

[centos]        # 名称
name=myrpm       # 对仓库的信息描述
baseurl=file:///mydvd    # 指定本地仓库的地址,挂载在/mydvd 目录中
gpgcheck=0      # 是否进行 gpg 签名验证,1 验证  0 不验证,基本都为0不验证
enabled=1       # 是否使用这个源,1 表示使用,这个配置可以省略不写,默认是等于 1 的

4,修改配置文件,完成开机自动挂载

[root@localhost ~]# vim   /etc/fstab  # 打开配置文件,添加以下一行

/dev/cdrom   /mydvd    iso9660    defaults   0  0

5,执行命令,检测挂载是否成功

# 检测挂载是否成功
[root@localhost ~]#  mount  -a  #如果已经挂载,可以先卸载,在执行命令,会重新挂载


# 执行卸载命令
[root@localhost ~]# umount   /mydvd   # 卸载


# 测试 yum 是否成功
[root@localhost ~]# yum -y install bind  # 软件包能正常下载

用 yum 命令下载一个软件包,能正常下载,则本地 yum 配置成功

二,构建网络Yum(ftp访问)

虚拟机A:提供仓库内容(构建网络服务,提供仓库内容)

虚拟机B:进行访问仓库内容,可以直接得到需要的软件包

虚拟机A(192.168.88.240:提供仓库内容(FTP服务)

关闭防火墙和selinux

1.构建FTP服务
[root@server ~]# yum  -y   install   vsftpd  # 下载支持FTP服务的软件包
[root@server ~]# systemctl  restart  vsftpd  # 启服务
[root@server ~]# systemctl  enable   vsftpd  # 设置开机自启动


2.通过FTP提供仓库内容
 # 在 /var/ftp/ 创建一个目录,用于挂载yum仓库,和本地yum仓库一样
 # 这个目录必须在 /var/ftp/ 下面,ftp 服务才能访问到
 # 后面设置开机自动挂载,和本地yum仓库配置一样,在/etc/fstab配置文件中修改挂载点为当前目录路径即可

[root@server ~]# mkdir  /var/ftp/mydvd



3.创建 yum 配置文件,名字随便起,必须以.repo结尾
[root@server ~]# vim /etc/yum.repos.d/nsd.repo
[centos]        # 名称
name=myrpm       # 对仓库的信息描述
baseurl=ftp://192.168.88.240/mydvd    # 指定本地仓库的地址,以ftp服务访问仓库
gpgcheck=0      # 是否进行 gpg 签名验证,1 验证  0 不验证,基本都为0不验证
enabled=1       # 是否使用这个源,1 表示使用,这个配置可以省略不写,默认是等于 1 的

虚拟机B(192.168.88.5:进行访问仓库内容 

关闭防火墙和selinux

# 在虚拟机B上只需要配置yum配置文件即可,指定yum仓库的地址是A下的/var/ftp/mydvd
[root@pc2 ~]# vim   /etc/yum.repos.d/mydvd.repo
[centos]         # 名称
name=myrpm       # 对仓库的信息描述
baseurl=ftp://192.168.88.240/mydvd     # 指定仓库的地址,以ftp服务访问仓库
gpgcheck=0       # 是否进行 gpg 签名验证,1 验证  0 不验证,基本都为0不验证
enabled=1        # 是否使用这个源,1 表示使用,这个配置可以省略不写,默认是等于 1 的


[root@pc2 ~]# yum  clean  all         #清空Yum的缓存
[root@pc2 ~]# yum  repolist           # 能看到仓库信息,以及rpm包数量
[root@pc2 ~]# yum -y install httpd    # 能正常下载软件包

软件包能正常下载,网络Yum配置成功

三,构建 自定义仓库

1,将自己下载的软件包,构建为Yum仓库。

2,完整的Yum仓库需要有:

                    1,众多的软件包

                    2,仓库数据文件(仓库清单)

# 创建目录,将自己下载的软件包放在目录中
[root@server ~]# mkdir /other     # 创建目录,存放rpm软件包
[root@server ~]# ls  /other       # 能看到很多 rpm 软件包


# 仓库数据文件,构成软件包的必要条件
[root@server ~]# createrepo /other   # 生成仓库数据文件

创建yum仓库配置文件,(/etc/yum.repos.d/other.repo),可以是ftp服务,也可以搭建本地仓库,然后设置开机自动挂载,参考上面本地和网络仓库的搭建方法

,3,自定义Yum仓库的更新:(重点知识)

  1. 仓库数据文件的更新     

     2. Yum仓库缓存的更新

# 当自定义软件仓库的rpm包有变动时(增加或减少),要对 yum 仓库的数据文件做更新,才能重新识别变动后的 yum 仓库中的软件包

[root@server ~]# mv  /other/sl-5.02-1.el7.x86_64.rpm   /root  #在仓库中移走一个rpm包到root下
[root@server ~]# createrepo  --update  /tools/other/  # 更新仓库数据文件
[root@server ~]# yum  makecache   # 更新缓存数据
[root@server ~]# yum   repolist   # 查询发现仓库中rpm包数量比之前少一个

四  构建http服务访问仓库

虚拟机A(192.168.88.240):提供仓库内容(Web服务)

1.构建Web服务
[root@server ~]# yum  -y   install   httpd

[root@server ~]# systemctl  restart  httpd

[root@server ~]# systemctl  enable   httpd



2.通过Web提供仓库内容
[root@server ~]# mkdir    /var/www/html/dvd  # 创建仓库目录
[root@server ~]# mount  /dev/cdrom   /var/www/html/dvd  # 挂载


3.设置开机自动挂载
[root@server ~]# vim  /etc/fstab    # 打开配置文件

/dev/cdrom    /var/www/html/dvd    iso9660    defaults   0  0


4.设置yum仓库配置文件
[root@server ~]# vim   /etc/yum.repos.d/dvd.repo

[centos]

name=linux

baseurl=http://192.168.88.240/dvd

enabled=1

gpgcheck=0

虚拟机B(192.168.88.5):进行访问仓库内容 (web服务) 

1.构建Web服务
[root@pc2 ~]#  yum  -y   install   httpd

[root@pc2 ~]#  systemctl  restart  httpd

[root@pc2 ~]#  systemctl  enable   httpd


2.设置yum配置文件,以http访问虚拟机A上的Yum仓库
[root@pc2 ~]# vim   /etc/yum.repos.d/mydvd.repo

[centos]

name=linux

baseurl=http://192.168.88.240/dvd

enabled=1

gpgcheck=0


3.查看仓库数据
 [root@pc2 ~]# yum   repolist

总结:Yum仓库有变动时,都可以用到的命令

[root@server ~]# createrepo  --update  /tools/other/  # 更新仓库数据文件
[root@server ~]# yum  makecache   # 更新缓存数据
[root@server ~]# yum  clean  all    # 清空Yum的缓存
[root@server ~]# yum   repolist   # 查询仓库数据