232. Linux 系统离线安装软件的方法
一、前言
在某些情况下,我们需要在内网(无互联网)的环境下在linux上安装各种中间件、基础软件等,此时不能直接使用yum、apt等命令。我们可以通过很多方式可以实现软件的安装,比如搭建内网私有yum/apt源镜像服务器,或者单独挂载镜像盘,或者下载离线安装包,使用这些方式也是存在一些操作不便的问题:
- 搭建内网私有yum/apt源镜像服务器:大型项目需要安装几十台上百台服务很有必要,但是针对小型项目,就两三台服务器,这么来就复杂了
- 挂载镜像:离线镜像比较大,一般都是好几个G,同时我们也用不上所有的安装包,上传这些比较耗时
- 下载离线安装包:下载离线安装包存在很头疼的问题,软件有哪些依赖包你可能并不完全知道,操作也很麻烦
针对上面的问题,可以使用下面的方式进行简单的操作,简单总结就是通过有网的机器,使用命令把安装包及依赖包下载完成后,拷贝到离线的机器上进行操作。
二、安装准备
安装准备即下载软件安装包,此步骤需要在有互联网的机器上进行操作,需要注意的是,请确保该机器的操作系统版本和目标机器一致,否则可能存在软件版本不兼容的问题。
centos系统
在centos系统上,可以通过repotract工具下载需要的安装包,此工具下载的安装包为rpm格式的安装包,且在下载的同时会连同依赖包一起下载,操作步骤如下:
1 | # 首先确保系统上有repotract,没有的先进行安装 |
ubuntu系统
在ubuntu系统上,可以通过apt命令实现,操作步骤如下:
1 | sudo apt install <target-soft> --no-install-recommends -d -o=dir::cache=<store-path> |
其中:
<target-soft>
为需要安装的软件<store-path>
为存储安装包的路径, 但是不用使用~
来指代 HOME 目录, 建议使用无须展开的绝对路径或相对路径-d
等同--download-only
仅下载
三、安装
centos系统
将上一步下载完成的包上传到目标服务器,并进入到包目录下,通过以下命令进行软件安装。
1 | # 此命令会按照依赖包依赖的顺序把软件安装完成 |
ubuntu系统
ubuntu系统操作会稍微麻烦一点,
建议: 首先将服务器
/var/lib/apt/lists
目录中的文件清空, 并将可连网服务器中的/var/lib/apt/lists
复制到不可联网的服务器/var/lib/apt/lists
目录中- 清空文件夹:
sudo rm -rf /var/lib/apt/lists/*
- 假设 ./lists 目录为联网电脑的 /var/lib/apt/lists/, 将本地 lists 复制到
/var/lib/apt/lists
:sudo cp -r ./lists/* /var/lib/apt/lists/
- 清空文件夹:
然后需要把安装包拷贝到apt包缓存的目录下
/var/cache/apt/archives/
,然后再进行安装1
sudo apt install --reinstall <xxx>