离线环境使用以下apt-get命令安装目标组件
问题场景:
要在离线环境使用以下apt-get命令安装目标组件xxxx
# apt-get install xxxx
问题描述:
没有在线的仓库,无法使用apt-get该如何解决?
解决思路:
下载所有所需的deb包和它的依赖,拷贝到目标安装机器上,然后搭建一个本地apt仓库,安装完成之后删除本地仓库
解决方法:
一、新建一台测试的虚拟机,联网下载所有所需的deb包和其依赖
注意:尽可能保证虚拟机和目标主机操作系统初始安装一致,或者要求测试虚拟机的组件是目标主机的子集,那样测试主机下载的deb包和依赖会更全面,具有包括性。
# cd /var/cache/apt/archives
# rm *.deb
安装dpkg-scanpackage工具
# sudo apt -d install dpkg-dev
注意:-d表示只下载,不安装
# tar zcvf tool.tar.gz ./*.deb
# rm *.deb
# sudo apt -d install xxx
# tar zcvf abc.tar.gz *.deb
二、拷贝下载的deb包到离线目标机器的目录,并搭建本地apt仓库(本案例是/var/debs)
拷贝所有deb文件
# scp /var/cache/apt/archives/*.tar.gz user@目的IP: /home/user
# cd /home/user;
# mkdir tool;tar xvf tool.tar.gz -C tool;dpkg -i tool/*.deb
安装命令dpkg-scanpackage
#whick dpkg-scanpackage
使用dpkg-scanpackage将目的deb包制作成本地源
# mkdir -p /var/debs ;mv abc.tar.gz /var/debs;chmod -R 755 /var/debs
# dpkg-scanpackage /var/debs /dev/null | gzip > Packages.gz
# cp -p /etc/apt/source.list /etc/apt/source.listbak
# echo "deb [trusted=true] file:/var/debs /" > /etc/apt/source.list
# apt update
注意:如果没有 [trusted=true],则执行 apt update会报以下错误
注意:“debs”后面有空格和“/”,否则执行 apt update会报以下错误
安装目标组件
# apt install xxx
四、安装完成后,删除搭建的本地apt仓库,恢复系统apt仓库文件
# mv /etc/apt/source.listbak /etc/apt/source.list
# apt update
# rm -rf /var/debs