目的:给一台无法连接网络的服务器(机器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下载自己需要的服务