在离线环境安装Linux软件,遇到依赖特别多的软件的时候,几乎没法安装,一直寻找一个方便、有效的方式解决这个问题,不要局限,不要繁琐(文件式的本地源就比较局限,其实此文和文件式原理一样),这篇文章所写的方式,暂时是我发现最简便有效的方式,此方式同样适用于zypper、apt源。如果你在安装软件的时候和我有同样的苦恼,希望此方法能够帮到你。
首先,我们需要了解以下yum源的原理。在CentOS7下,yum源的文件全部保存在以下目录:
/etc/yum.repos.d
随便找一个文件,发现里面的内容类似:
[cloudera-cdh5]
# Packages for Cloudera's Distribution for Hadoop, Version 5, on RedHat or CentOS 7 x86_64
name=Cloudera's Distribution for Hadoop, Version 5
baseurl=https://archive.cloudera.com/cdh5/redhat/7/x86_64/cdh/5/
gpgkey =https://archive.cloudera.com/cdh5/redhat/7/x86_64/cdh/RPM-GPG-KEY-cloudera
gpgcheck = 1
有效的内容其实就key-value键值对内容。
name=名称,可以随意填写
baseurl=一个url路径
gpgkey = gpg密钥的地址
gpgcheck = 是否检查,如果0表示不检查,1表示检查
说白了,我们需要搭建一个http服务。考虑到我的网络环境,我将服务搭建在我Win10母机上面,这样我所有虚拟机就都能访问了。局域网其他电脑同样能够访问。
第一步:下载CentOS的Everything镜像(很大,10GB左右,毕竟包含了太多rpm包,但当你使用后,你会发现一切都是值得的)。
http://isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_64-Everything-1804.iso
第二步:加载文件
如果你硬盘足够多,将iso文件解压到特定目录,如果你剩余硬盘空间并不多,那么推荐你直接右键->装载(Win10系统特有),如下:
第三步:安装nginx(Windows下)
http://nginx.org/en/download.html
第四步:编辑nginx配置文件(本人用的是1.13.6版)
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
autoindex on;
root J:/;(这里请换成你的实际目录路径)
index index.html index.htm;
}
}
}
第五步:启动nginx
一切搞定后,双击nginx启动服务,然后访问:http://127.0.0.1
第六步:创建yum repo文件
[root@node1 ~]# vim /etc/yum.repos.d/local.repo
[local]
name=local
#在虚拟机网络环境中,母机地址是这个
baseurl=http://192.168.100.1
#是否可用,1表示可用,0表示不可用
enabled=1
gpgcheck=1
gpgkey=http://192.168.100.1/RPM-GPG-KEY-CentOS-7
第七步:禁用其他repo文件
编辑其他repo文件,将enabled设置为0
……
enabled=0
……
第七步:yum相关
#清理无用源
yum clean all
#查看列表中是否存在
yum repolist
#实际安装一个软件试试看,比如httpd
yum install httpd
总结:因为本地源(严格说应该是本地http源),所以速度非常快,体验还是很不错的。同样既然nginx可以,那么httpd自然也可以。既然Windows可以搭建,那么Linux自然也可以搭建。其实原理很简单,理解其中的原理后,自由变通即可。