目的:给一台无法连接网络的服务器(机器A)部署apt离线源

方案:准备一台和此离线的服务器(机器A)相同系统版本的服务器(机器B)

​ 在 机器B 上下载好需要下载的各种服务并打包,然后上传到 机器A 上进行部署

机器B上的操作

#创建一个目录如下:
mkdir -p /opt/offline-packages/archives
cd /opt/offline-packages/archives


#执行如下命令会将vim的递归依赖都下载到/opt/offline-packages/archives目录内:
sudo apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances vim | grep "^\w" | sort -u)

#注:vim后可跟多个包,同时下载

#建立依赖的命令

cd /opt/offline-packages

sudo dpkg-scanpackages -m . /dev/null | gzip -9c > Packages.gz

cp Packages.gz ./archives
#带上-m,会将所有包全部建立依赖关系到 Packages.gz中,如此会有重复,但无需剔除重复的包


#最后打包供其他服务器使用
tar -zcvf offline-apt-packages.tar.gz offline-packages

机器A上的操作

#离线源应用
#将上边打包的离线包(offline-apt-packages.tar.gz)发送到目标机器上,解压
sudo tar -zxvf offline-apt-packages.tar.gz -C /opt

#写入本地源,如有需要,提取备份原有源,直留下这一条就可以,放在对应的目录下,我是放在 /opt 下
deb [trusted=yes] file:///opt/offline-packages  archives/

#更新源
sudo apt-get update

#之后即可安装软件了
apt-get -y install supervisor build-essential manpages-dev erlang socat erlang-nox rabbitmq server -f --allow-unauthenticated 
#apt-get下载自己需要的服务