用来进行包管理,类似maven,可以自定义yum源
在Fedora、RedHat、CentOS中使用,别的发行版不用这个工具
基于rpm
在server设置本机的yum源并通过httpd发布到网络,然后client将yum源配置为server节点即可。
yum中有repo的概念,1个client的repo可以跟1个server的repo对应
==》步骤
将iso挂载到server的目录下,把这个目录配置为server的本地yum源。
配置项中有个baseUrl,值是个url,可以是http开头,也可以以file://开头
server安装httpd,将之前配置的yum源目录复制到httpd指定的目录下。此时可以直接通过http访问server上的资源。发布的过程其实就是把资源放到指定目录。
因为yum源默认就是以一个官方的http地址作为源的,只不过替换了一个源而已
在client中将repo配文和server的配置对应起来。然后清除缓存就配好了。
==》
server中iso文件挂载httpd的指定目录,或者直接把相关的rpm放在指定目录。可以有多个目录,最后一级目录明就是repo名。
client中在/etc/yum.repo.d中设置对应各个repo的配文,把baseUrl配好。然后清理缓存即可。
/etc/yum.repos.d/ 存放yum的配文
/etc/fstab 存放挂载信息,开机会自动执行,一般执行mount命令后会把信息放到这个文件中
YUM源其实就是一个保存了多个RPM包的服务器,可以通过http的方式来检索、下载并安装相关的RPM包。
生产环境通常无法上网,不能连接外网的YUM源,所以就无法使用yum命令安装软件了。为了在内网中也可以使用yum安装相关的软件,就要配置自定义yum源。
[root@hadoop101 /]# mkdir /mnt/cdrom
[root@hadoop101 /]# mount -t iso9660 -o rw /dev/cdrom /mnt/cdrom
[root@hadoop101 /]# cd /etc/yum.repos.d/
[root@hadoop101 yum.repos.d]# cp CentOS-Base.repo CentOS-Base.repo.bak (是系统原来的,不是前面操作的163)
[root@hadoop101 yum.repos.d]# vi CentOS-Base.repo //CentOS-Base.repo是个配置文件
[base]
name=CentOS-Local
baseurl=file:///mnt/cdrom
gpgcheck=1
enabled=1 #增加改行,使能
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
yum clean all
yum makecache //建立新缓存
[root@hadoop101 yum.repos.d]# yum repolist
[root@hadoop101 yum.repos.d]#yum install -y httpd
[root@hadoop101 yum.repos.d]#systemctl start httpd
使用浏览器访问http://192.168.1.100:80(如果访问不通,检查防火墙是否开启了80端口或关闭防火墙)
vi /etc/httpd/conf/httpd.conf
AddType application/x-gzip .gz .tgz 添加.parcel,修改为
AddType application/x-gzip .gz .tgz .parcel
[root@hadoop101 yum.repos.d]#cp -r /mnt/cdrom/ /var/www/html/CentOS
然后在这个目录下执行createrepo
[root@hadoop101 yum.repos.d]#umount /mnt/cdrom
[root@hadoop102 /]#cd /etc/yum.repos.d/
[root@hadoop102 yum.repos.d]# cp CentOS-Base.repo CentOS-Base.repo.bak
[root@hadoop102 yum.repos.d]# vi CentOS-Base.repo
[base]
name=CentOS-hadoop101
baseurl=http://192.168.11.101/CentOS # 这里是server的仓库的地址
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 #???
[root@hadoop102 yum.repos.d]# yum clean all
[root@hadoop102 yum.repos.d]# yum repolist #查看当前的仓库列表
此时yum源就配好了
cd /mnt;mkdir cdrom
这里目录名可以随意
mount /dev/cdrom /mnt/iso-all-newversion
此时进入/mnt/iso-all-newversion,访问的就是挂载的iso光盘
安装包都在Packages下
有3种安装方式,yum会自动把相关依赖下好安好,rpm需要自己安依赖,所以yum相当于rpm的封装。编译安装就是自定义。
所谓的配置yum源,就是配置yum包的来源,可以是网上资源、本地资源。
cd /etc/yum.repos.d
将CentOS-Base.repo和CentOS-Debuginfo.repo改名备份
[root@node105 yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak
[root@node105 yum.repos.d]# mv CentOS-Debuginfo.repo CentOS-Debuginfo.repo.bak
指定iso光盘位置,并设置为开启模式。默认在/etc/yum.repos.d下有很多repo文件,但yum repolist只会显示其中几个,就是因为别的都没有开启,开启要把enabled设为1。
在baseurl中指定,默认的都是错的,需要修改
折腾了好几次,到最后也不知道是怎么解决的。应该是因为下面2步:
镜像连接错误
使用yum搜索某些rpm包,找不到包是因为CentOS是RedHat企业版编译过来的,去掉了所有关于版权问题的东西。安装EPEL后可以很好的解决这个问题。EPEL(Extra Packages for Enterprise Linux )即企业版Linux的扩展包,提供了很多可共Centos使用的组件,安装完这个以后基本常用的rpm都可以找到。
解决方法
如果是第一种情况,请设置你的网络连接。
针对第二种情况,我们只需要 从企业版Linux库配置包中安装扩展包。具体方法如下
注意wget 阿里云的源时要根据centos的版本下载
Installed:
kernel.x86_64 0:3.10.0-1062.9.1.el7
Updated:
NetworkManager.x86_64 1:1.18.0-5.el7_7.1 NetworkManager-libnm.x86_64 1:1.18.0-5.el7_7.1 NetworkManager-team.x86_64 1:1.18.0-5.el7_7.1
NetworkManager-tui.x86_64 1:1.18.0-5.el7_7.1 NetworkManager-wifi.x86_64 1:1.18.0-5.el7_7.1 binutils.x86_64 0:2.27-41.base.el7_7.1
ca-certificates.noarch 0:2019.2.32-76.el7_7 curl.x86_64 0:7.29.0-54.el7_7.1 device-mapper.x86_64 7:1.02.158-2.el7_7.2
device-mapper-libs.x86_64 7:1.02.158-2.el7_7.2 firewalld.noarch 0:0.6.3-2.el7_7.2 firewalld-filesystem.noarch 0:0.6.3-2.el7_7.2
hostname.x86_64 0:3.13-3.el7_7.1 iproute.x86_64 0:4.11.0-25.el7_7.2 kernel-tools.x86_64 0:3.10.0-1062.9.1.el7
kernel-tools-libs.x86_64 0:3.10.0-1062.9.1.el7 krb5-libs.x86_64 0:1.15.1-37.el7_7.2 libblkid.x86_64 0:2.23.2-61.el7_7.1
libcurl.x86_64 0:7.29.0-54.el7_7.1 libmount.x86_64 0:2.23.2-61.el7_7.1 libsmartcols.x86_64 0:2.23.2-61.el7_7.1
libuuid.x86_64 0:2.23.2-61.el7_7.1 microcode_ctl.x86_64 2:2.1-53.7.el7_7 nss.x86_64 0:3.44.0-7.el7_7
nss-softokn.x86_64 0:3.44.0-8.el7_7 nss-softokn-freebl.x86_64 0:3.44.0-8.el7_7 nss-sysinit.x86_64 0:3.44.0-7.el7_7
nss-tools.x86_64 0:3.44.0-7.el7_7 nss-util.x86_64 0:3.44.0-4.el7_7 numactl-libs.x86_64 0:2.0.12-3.el7_7.1
polkit.x86_64 0:0.112-22.el7_7.1 procps-ng.x86_64 0:3.3.10-26.el7_7.1 python-firewall.noarch 0:0.6.3-2.el7_7.2
python-perf.x86_64 0:3.10.0-1062.9.1.el7 rsyslog.x86_64 0:8.24.0-41.el7_7.2 selinux-policy.noarch 0:3.13.1-252.el7_7.6
selinux-policy-targeted.noarch 0:3.13.1-252.el7_7.6 sqlite.x86_64 0:3.7.17-8.el7_7.1 sudo.x86_64 0:1.8.23-4.el7_7.1
systemd.x86_64 0:219-67.el7_7.2 systemd-libs.x86_64 0:219-67.el7_7.2 systemd-sysv.x86_64 0:219-67.el7_7.2
tuned.noarch 0:2.11.0-5.el7_7.1 tzdata.noarch 0:2019c-1.el7 util-linux.x86_64 0:2.23.2-61.el7_7.1
Complete!
yum grouplist
yum remove vsftpd
验证是否删除成功
rpm -qa vdftpd