rpm依赖自动解决,yum批量安装,本地源
场景:
rpm包安装时都是有依赖的,手动一个个都安装,费时费力。
思路:将一堆docker的rpm包放到一个目录下,做成本地yum源,让yum自动检测安装。
一、开启本地源
CentOS7 开启本地源CentOS-Media.repo文件。将文件中enabled=0改成enabled=1
/media/cdrom/ 路径下是ISO的系统镜像文件。
/media/CentOS/ 下放我们自定义docker的rpm包和相关依赖包。
vi /etc/yum.repos.d/CentOS-Media.repo
[c7-media] name=CentOS-$releasever - Media baseurl= file:///media/CentOS/ file:///media/cdrom/ file:///media/cdrecorder/ gpgcheck=1 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 priority=1 [c7-media-CentOS] name=CentOS-$releasever - Media baseurl= file:///media/CentOS/ gpgcheck=1 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 priority=1
注意:在新的[c7-media-CentOS]项的baseurl路径下不要添加其他项有的重复路径,尤其是挂载centos系统镜像的ISO路径,否则有包都会提示“ 没有可用软件包 docker。错误:无须任何处理 ”。
二、创建存放rpm包的目录,这个里放到 /media/CentOS/,因为CentOS-Media.repo配置文件中baseurl就自带这个目录.
[root@CentOs7 ~]# mkdir -p /media/CentOS/ [root@CentOs7 ~]# mv *.rpm /media/CentOS/
三、创建repodata文件夹,将/media/CentOS/目录制作成软件仓库
[root@CentOs7 ~]# yum install -y createrepo [root@CentOs7 ~]# createrepo /media/CentOS/
在/media/CentOS/就可以看到有个repodata文件夹,里面是相关配置文件,不要去改动。
如果要增加或删除了rpm包,重新执行createrepo --update命令来更新。
[root@CentOs7 ~]# createrepo --update /media/CentOS/
四、查看仓库列表
[root@CentOs7 ~]# yum repolist
五、网络访问仓库
上面操作中只是在本地建立了一个YUM仓库,这样别人是无法使用的。所以通常会在计划任务中把公网YUM源同步到本地(推荐使用reposync),同步后再执行一次createrepo更新元数据,最后把仓库目录通过FTP或者Nginx、Apache、NFS服务等共享出来,然后客户端的配置文件中修改如下:
[test] name=test enable=1 gpgcheck=0 baseurl=http://10.211.10.12
六、清除缓存
[root@CentOs7 ~]# yum clean all
注意:如果自建的repo仓库增加或删除了文件,执行过createrepo后,就要执行 yum clean all 来清除之前的记录。
如果是enabled=1开启了一个仓库,不需要执行yum makecache。执行yum install 时会自动执行yum makecache
七、跳过不想安装的源,比如安装docker,先找到的是本地的docker,但是不想装本地的,想装网络的。
方法一:enabled=0来关闭此项的仓库路径。
enabled=0
方法二:用 --disablerepo=c7-media_CentOS 参数来跳过本地源,搜索其他源。[c7-media_CentOS]是在CentOS-Media.repo文件里的项名称(要改成你的项名称)
yum --disablerepo=c7-media_CentOS install docker
--disablerepo=[repo] 禁用一个或多个软件源(支持通配符)用,(逗号)分割多个参数。
yum --disablerepo=c7-media_CentOS,extras_163 install docker
yum常用命令
yum repolist {all|enabled|disabled} 列出所有/已启用/已禁用的yum源 yum list {all|installed|avaliable} 列出所有/已安装/可安装的软件包 yum info package 显示某一个软件包的信息 --建议使用rpm -qi package_name,yum显示的比较慢,需要加载缓存 yum install package -y安装软件包 yum reinstall package 重新安装软件包 yum remove|earse package 卸载软件包 yum whatprovides|provides files 查询某个文件是哪个软件包生成的,files通常指命令,比如可以写nginx--这个命令比较实用 yum grouplist {all|installed|avaliable} 列出所有/已安装/可安装的软件包组 --用的不多,了解一下即可 yum groupinfo 显示某个软件包组的信息 yum groupinstall 安装某个软件包组 yum groupremove 删除某个软件包组 yum history 查看yum使用的历史 yum clean {all|packages|metadata} 清除所有/软件包/元数据 yum makecache 生成yum元数据 yum --nogpgcheck 不校验公钥文件 yum -y 自动进行操作 yum update 升级所有包,以及升级软件和系统内核,这就是一键升级 -- yum update package 更新指定程序包package --一般不要使用这条命令 yum --disablerepo=repo --临时禁用某个repo源 yum install nginx --disablerepo=nginx-stable --临时禁用指定的repo,在其他的repo安装nginx包,这条命令比较实用 yum --enablerepo= yum -C list nginx --在缓存中查找包,速度更快
yum-fastestmirror
[root@node-2 ~]# yum install yum-fastestmirror -y
#自动搜索最快镜像插件并安装(yum多个mirror自动选择速度最快的mirror,yum-fastestmirror插件,它会自动选择最快的mirror) #我们都知道,使用yum可以简化系统软件更新的工作。为了保证更新的持续进行,通常都会提供多个mirror(镜像)地址供下载使用,但由于存在地域问题,
# 从不同的镜像下载速度差异很大。选择从适合的镜像下载软件包,会极大的影响更新速度。以CentOS为例,可使用一个叫fastestmirror的插件,
# 让yum在更新时先根据ping值进行判断,然后从最快响应的地址下载。 #首先,请配置好yum环境,然后,确认配置文件中,以及允许使用插件: cat /etc/yum.conf |grep plugins plugins=1 没有的该参数的,请加入该设定。此外,要使用fastestmirror插件,在.repo配置文件中必须使用镜像方式,也就是mirrorlist设定,而不是baseurl方式,例如: # cat CentOS-Base.repo |grep -A3 addons [addons] name=CentOS-4 - Addons mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=addons #baseurl=http://mirror.centos.org/centos/$releasever/addons/$basearch/ gpgcheck=1 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4 enabled=1
参照:
学神MK 第一章 4-8-2-部署docker容器虚拟化平台.mp4
http://blog.csdn.net/qq_34556414/article/details/105425688
http://wiki.centos.org/PackageManagement/Yum/Priorities
http://cnblogs.com/earendil/p/7244091.html
createrepo --update