在某系特殊情况下,我们没有安装center os后,没有办法使用网络,这个时候我们如何像有网络那样使用yum install安装应用程序呢?
思路提出
一般情况下,如果是没有网络环境下,最笨的方式就是我们以源码的形式去安装,但是这种方式耗时耗力!
比如:安装gcc-c++,如果我们以源码的形式安装面临的最大问题就是:
gcc-c++本身会依赖很多其它的项,以源码形式安装我gcc-c++的话,除了安装gcc-c++本身外,它所依赖的所有依赖项我们也必须安装,而依赖项也许又会有依赖项,完全安装成功也许需要一整天的时间,但是在网络环境下,依赖项是自动帮我们安装的,大概1-2分钟就可以安装完毕!
思路提出 :
这个时候我们就可以搭建本地源,思路就是 :
准备一台有网的设备(确保和离线系统是一样的环境,包括系统和版本等),先通过网络把center os的默认的yum源,全部下载下来,然后把这些源制作成没有网络的离线yum.
这里是我下载下来的,整个文件大概有8.7G。
步骤
通过网络下载所有的rpm源到指定的目录
- 依赖工具:reposync
- 安装:yum install -y yum-utils
- 查看当前的所有源:yum repolist
- 将这三个源对应的rmp文件全部下载到指定的目录下:
reposync -n --repoid=BaseOS --repoid=extras --repoid=AppStream -p /mnt/hgfs/work/rpm
下载中:
下载成功后,就会得到yum install的所有在线rpm安装包,将这些包全部放到一个目录rpm下.
制作索引文件 repodata.
现在我们得到了rpm目录,里面有所有在线的yum安装包,接下来我们需要制作repodata,目的就是告诉yum install,当前支持哪些安装包,以及大小等.
- 依赖工具 : createrepo
- 安装:yum install createrepo -y
- 生成索引: createrepo /mnt/hgfs/work/rpm
可以看到,这个时候多了一个目录 : repodata.
在没有网络的系统中制作离线yum源.
经过前面的两步,我们得到了在线状态下的安装yum源,现在我们要把这些源提供给离线的center os系统,直接制成离线源:
首先我们把 rpm目录拷贝到离线系统的 /mnt/hgfs/work/rpm目录下.
下一步:
-
rm /etc/yum.repos.d/*清空原有的源
- 配置本地源码
vim /etc/yum.repos.d/local.repo
local.repo对应的内容如下:
[local]
name=local local repository
baseurl=file:/mnt/hgfs/work/rpm
gpgcheck=0
enabled=1
[local]是我们本地层库的名字,可以任意起名,但是注意不能与已有的仓库名重复.
[name] 补充说明信息,随意书写.
[baseurl]: file:// 表示使用本地协议 /mnt/work 表示本地rpm包存放的路径.
gpcheck=0 设置0,表示关闭安全验证.(直接使用0,避免后续的安全验证.)
enabled=0,表示启动本地仓库,0:启用,1:关闭.
- 测试我们的连源是否配置好.: yum repoinfo local.
- 离线源好后,这个时候我们直接来安装gcc-c++.
使用yum install gcc-c++就可以安装了.
所有源rmp太大,只把需要的rmp制作源.
我们上面是直接把所有的源都下载下来然后制成离线源,如果我们值需要固定的几个工具制作成离线源应该怎么搞!
同样的,我们可以把这些工具,下载到固定的目录,然后再采样同样的制作源的方式制作离线源就可以了!
-
把指定下载到指定的目录:
命令如下:
yum install --downloadonly --downloaddir=/mnt/work/ gcc gcc-c++ make cmake python3 zlib zlib-devel bzip2 man-pages
上述命令的意思就是: 把gcc,g++ make cmake这几个工具所有的依赖都以rmp的形式,全部保存到 /mnt/work目录下.
下载后,显示如下:
然后再通过createrepo 生成repo 索引,重复上述步骤即可!