centos7如何在没有网络的情况下安装软件
原文地址:https://www.cnblogs.com/shenyuanhaojie/p/14033531.html
1.下载源码,然后上传到服务器上编译安装。编译有问题会报错,一般要么是缺包(比较多),要么是冲突(相对较少)。那就分析日志,缺包就找包,冲突就换包;找到包后再上传到服务器上搞,周而复始,直到完成。
2.
RPM包安装方式。先找到相关的RPM包,然后用rpm -ivh rpm包名
安装。
大部分RPM可在http://rpmfind.net/ 上找到
一般来讲,该方案问可以很好的解决问题,但极端场景下也会缺包
RPM并不一定包含软件所有的依赖,有时候可能一个软件依赖了若干个RPM
3.借助yum-plugin-downloadonly
准备1台和服务器最简安装了同版本Linux的机器,记为机器B,机器B需要能联网
##TIPS:可以是实体机、虚拟机或者Docker容器,看个人的喜好。
##建议用Docker准备,一分钟就可以准备好了。
在机器B上执行如下命令:
# 安装yum-plugin-downloadonly插件
yum install -y yum-plugin-downloadonly
# 把<vsftpd>换成你想要的包名
yum install --downloadonly <vsftpd>
下载的软件在:
/var/cache/yum/x86_64/7/base/packages/
该目录里会存放你想安装的软件所需要的所有RPM包
将所有RPM包拷贝到服务器上安装既可 rpm -ivh *.rpm yum -y install *.rpm
#此方法下载可能会缺少依赖包,例如 yum install --downloadonly python2-pip 会缺少 python2-pip.noarch 0:8.1.2-14.el7 包
4.修改yum源为本地iso镜像源 #因为没有epel-release扩展源,可能有些包没有
找一个依赖比较全的镜像版本,这次使用CentOS-7-x86_64-DVD-1908.iso
#创建目录
mkdir /media/CentOS
然后上传镜像文件CentOS-7-x86_64-DVD-1908.iso到/media
开始挂载镜像
mount -t iso9660 /media/CentOS-7-x86_64-DVD-1908.iso /media/CentOS
# 此时可能会报错,显示信息如下
mount: /dev/loop0 is write-protected, mounting read-only
# 这时候报错是因为我们上传的镜像没有权限,只需要更改一下权限
chmod 777 CentOS-7-x86_64-DVD-1908.iso
# 再次执行就不会报错了
镜像挂载完成后如下操作
#切换目录到 /etc/yum.repos.d/ 下
cd /etc/yum.repos.d/
#将除了 CentOS-Media.repo 之外的文件修改其文件名
mv CentOS-Base.repo CentOS-Base.repo.bak
mv CentOS-CR.repo CentOS-CR.repo.bak
mv CentOS-Debuginfo.repo CentOS-Debuginfo.repo.bak
mv CentOS-fasttrack.repo CentOS-fasttrack.repo.bak
mv CentOS-Sources.repo CentOS-Sources.repo.bak
mv CentOS-Vault.repo CentOS-Vault.repo.bak
#修改 CentOS-Media.repo 文件
vim CentOS-Media.repo
修改文件为如下
#将其中的 baseurl 修改为
baseurl=file:///media/CentOS/
#启用本地仓库
enabled=1
这时候就可以测试了
yum -y install ftp ..........
————————————————————————————————————————————
精华版
mkdir /media/CentOS #创建iso挂载点,并上传镜像文件到/media
mount -t iso9660 /media/CentOS-7-x86_64-DVD-1908.iso /media/CentOS #挂载
cd /etc/yum.repos.d/ && mkdir repos.backup && mv ./*.repo repos.backup #备份
cp -a repos.backup/CentOS-Media.repo ./ && sed -i 's/enabled=0/enabled=1/g' CentOS-Media.repo #启用CentOS-Media
yum clean all #清除缓存
yum info vsftpd #测试是否生效