我们的业务服务器,位于电网内网,无法访问互联网。系统是Ubuntu 22.04。 如何在离线的情况下,安装软件包呢?比如如下包:
sudo apt-get install libxml-libxml-perl
首先,找一个同样版本的外网服务器,也是Ubuntu 22.04,并且该服务器之前没有安装过
libxml-libxml-perl。确保这台服务器可以访问互联网。
在该外网服务器上,运行如下命令:
# 清理APT缓存中已有的deb包,避免混淆
rm -f /var/cache/apt/archives/*.deb
# 创建一个新目录用于存放离线包
mkdir offline_packages
cd offline_packages
# 使用 --download-only 选项下载所需的软件包及其所有依赖项
# 这些包会被下载到 /var/cache/apt/archives/ 目录
sudo apt-get install --download-only libxml-libxml-perl
# 将下载的deb包拷贝到我们创建的 offline_packages 目录中
cp /var/cache/apt/archives/*.deb .
这些命令会确保我们下载到的是最新且完整的软件包集合,包括所有依赖项。
将 offline_packages 文件夹打包(例如,使用 tar -czvf offline_packages.tar.gz offline_packages),
通过经过安检的 U 盘或其他安全传输方式拷贝到内网服务器。
在内网服务器上,将打包的文件解压(例如,tar -xzvf offline_packages.tar.gz),
然后进入解压后的 offline_packages 目录,执行如下命令:
# 进入存放deb包的目录
cd offline_packages
# 安装当前目录下所有 .deb 软件包
sudo dpkg -i *.deb
这条命令会安装当前目录下所有 .deb 软件包。
dpkg 会处理这些包的安装,如果存在依赖关系,它会尝试按照正确的顺序安装。
如果出现依赖错误,可能需要重复步骤2,确保下载了所有必要的依赖包。
这样就完成了在离线服务器安装deb包的过程。