一、前置说明

通常生产环境由于安全原因都无法访问互联网。此时就需要进行离线安装,主要有两种方式:源码编译、rpm包安装。我们想到达yum install 的效果就必须提供给机器相应的本地仓库,制作仓库的方法是使用yumdownloader或repotrack命令,依赖于yum-utils软件包

区别:Yumdownloader 下载某个软件的时候会基于当前系统自动解决缺少的依赖问题。而repotrack只关心和这个软件相关的所有库,都会下载下来。

二、操作方法

1、操作

目标:下载一个名为ansible的软件

我们可以在有网络的服务器上,创建目录/opt/ansibleRpms用于存放rpm包,然后执行

(如果您的机器没有这两个命令需要先yum install -y yum-utils)

yumdownloader --resolve --destdir=/opt/ansibleRpms ansible

效果如下

1 正在下载ansible的二进制包以及基于当前环境所需的依赖包

2 安装完成

如果使用repotrack会发生什么?

新建一个目录叫做ansible_rpms,进入该目录cd /opt/ansible_rpms,执行

repotrack ansible

3 repotrack下载图

4 对比图

从这里可以看出,repotrackyumdownloader多下载了67个包,这是ansible软件的包以及其依赖的包了,亲测gcc下载的时候,yumdownloader只有一个,而repotrack竟然多达279个,整整多出了278个。因此根据需求去选择使用。

创建本地yum仓库

createrepo ./

5 创建本地仓库

看到repodata 就成功了,准备工作做好了,我们拥有了ansible的离线仓库,收藏好方便以后快速部署。现在可以将这整个仓库移植到别的机器去安装了。

移植中……

现在以192.168.1.132的断网机器为例,安装ansible并进行测试

先把刚才做好的离线仓库传到这个断网机上并在/etc/yum.repos.d/下手写一个yum源ansbile.repo

里面的内容如下

[ansible]

name=ansible

baseurl=file:///opt/ansibleRpms

enabled=1

gpgcheck=0

图6 创建yum源文件

yum clean all              
yum repolist ansible   

图7 检测仓库

现在开始安装吧

yum install -y ansible

图8 开始安装

只要保证仓库和源路径匹配,就可以轻松的进行installremoveupdate等如果你要卸载,就可以执行yum remove ansible

测试:

查看版本:

ansible –version

/etc/ansible/hosts 文件为添加

[web]

192.168.1.132

保存退出,在命令行使用ansible web -m ping进行测试

图9 简单的ansible测试

Ansible是一个基于ssh协议的自动化软件,示例中的[web]下写着192.168.1.132,可以写多个ip,同时对多台机器执行批量操作,或者通过if for进行分工批量操作,如批量执行脚本,批量运行shell指令,批量创建用户、追加文件信息、总而言之,是一款非常不错的工具。

2、说点别的

系统本身的镜像中就包含了大量的软件包,如果只是下载很常规的软件如vsftpd 或者 samba或者telnet等可以直接把iso镜像传到断网机上,假如我将在centos7的离线机上将centos7.iso 传到了/opt下,那么我就可以使用

mount -o loop /opt/centos7.iso  /mnt

将镜像挂载到/mnt下,然后写一个yum源,可以使用下面这个命令直接写一个文件出来

echo "[centos]

name=centos

baseurl=file:///mnt

enabled=1

gpgcheck=0" > /etc/yum.repos.d/centos.repo

然后进行yum repolist all 检查包数量,如果发现包数量很多就对了,此时也可以直接yum install了,很顺畅

三、使用过程中可能出现的问题

1、yum操作直接报错找不到源

如果/etc/yum.repos.d目录下存在不可用的源时使用yum命令会报错找不到源,将用不了的源文件备份然后移走就行了。

2、yum 进程被锁

如果yum 使用的过程中出现锁定进程,只需要删除/var/run/yum.pid 下即可。这通常是因为已经有一个rpm 再执行安装操作了,后面的包得等着一个一个来

3、rpm数据库损坏

如果忍不了强制把yum 数据库给干坏了,使用rpm --rebuilddb 重建数据库就行

四、总结

灵活使用这些工具能便于我们在离线工作中更好的提高工作效率,每次做好的仓库要存起来建议再补充一份shell脚本用于一键完成安装

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐