目录

How-to-install-a-package-in-offline-scenario-in-Ubuntu-24.04

How to install a package in offline scenario in Ubuntu 24.04

概述

做过信创项目的兄弟们在工作上每天可能面对很多需要解决的问题,不过,有一类问题可能是大家经常遇的,比方说,有时候我们不得不硬着头皮在离线生产环境中安装某些软件包,相信很多兄弟被这种细碎的小事搞得焦头烂额。关于如何在离线生产环境中安装某些软件包,不同的操作系统、不同的应用场景,解决办法可能不尽相同。

今天,我们来给大家介绍一下如何在Ubuntu离线场景中基于apt-offline安装特定的软件包。这里,我们以如何安装 openjdk-17 为例予以说明。

实践

准备

在开始工作之前,我们准备了两个Ubuntu 24.04操作系统环境,具体如下面的表格所示:

host namealiasosoffline statusip
shaolin少林ubuntu server 22.04offline192.168.43.226
wudang武当ubuntu server 22.04online192.168.43.226

今天的实践是我们将借助主机 少林 来完成在主机 武当 上安装 openjdk-17

安装apt-offline

在完成下面的实验之前,我们需要在主机 少林武当 上分别安装上 apt-offline 软件包,这里为了模拟真实场景,我们需要在主机 少林 上从以下地址下载包含了依赖的 apt-offline 软件包。

https://i-blog.csdnimg.cn/direct/084d1665da9a46ed92498634958755ff.png

我这边的主机是x64架构,所以这里选择下载amd64对应的软件包 apt-offline_1.8.5-1_all.deb 。下载完成以后,可以使用U盘复制一份到主机 武当 上,然后在主机 少林武当 上分别使用以下命令安装 apt-offline

sudo dpkg -i apt-offline_*_all.deb

开始

创建临时目录

首先,我们需要在主机 少林武当 上的用户目录下面分别创建一个名称为 local 的目录,命令如下:

sudo mkdir -p ~/local

生成离线签名文件

接着,我们需要在目录local中生成 openjdk-17 对应的离线签名文件,命令如下:

sudo apt-offline set openjdk-17.sig --install-packages openjdk-17*

基于离线签名下载依赖包

上面,我们已经在主机 武当 用户当前目录下的local中生成了 openjdk-17 对应的离线签名文件 openjdk-17.sig 。这个时候,我们需要借助U盘复制文件 openjdk-17.sig 到主机 少林 的用户目录下的目录 local 中。接下来,我们依据签名文件在主机 少林 的用户目录下的目录 local 中下载并生成依赖软件包。

cd ~/local
sudo apt-offline get openjdk-17.sig --thread 2 --bundle openjdk-17.zip

离线安装

上面,我们已经成功的在主机 少林 的用户目录下的目录 local 中生成了 openjdk-17.sig 的依赖包 openjdk-17.zip ,这个时候,我们借助U盘将文件 openjdk-17.zip 复制到主机 武当 用户当前目录下的local中。

接下来,我们借助以下命令,将 openjdk-17.sig 的依赖包 openjdk-17.zip 导入本地apt数据库。

sudo apt-offline install openjdk-17.zip

接着使用如下命令完成 openjdk-17 的安装,。

sudo apt install openjdk-17*

安装完成以后,我们可以在命令行,借助如下命令查看openjdk-17是否生效。

java -version

如果能正常输出java版本,则说明安装成功。

小结

我们在上面的实践中,以借助在线主机 少林 在离线主机 武当 上安装 openjdk-17 为例,向大家介绍了如果基于 apt-offline 命令完成离线软件包的安装。这里需要注意以下几点事项:

  • 两台主机需要是相同的操作系统版本。
  • 需要能从主机 武当 上得到待安装软件的签名文件。
  • 需要在主机 武当 上事先安装好 apt-offline

如果我们不能主机 武当 上事先安装好 apt-offline ,或者如果我们不能从主机 武当 上得到待安装软件的签名文件,在主机 少林 依然可以借助 apt-offline 完成软件包 openjdk-17 的下载。在人为可以保障主机 少林武当 操作系统版本一致,软件环境也一致的情况下,我们可以借助如下命令多次试探着完成软件包的安装。

sudo mkdir -p openjdk-17
sudo unzip -d openjdk-17/ openjdk-17.zip
cd openjdk-17/
sudo dpkg -i *.deb

正所谓条条大路通罗马,除了基于apt-offline来完成Ubuntu离线环境下的软件包的安装外,我们还可以采用如下方案完成相关尝试。

  • ISO文件本地镜像法

这种方案就是将Ubuntu安装包ISO文件挂载到本地环境,然后将本地软件镜像源切换为本地来完成相关软件包的安装。

  • 源码编译法

这种方案获取软件包的源码文件,在本地环境编译,生成相关的目标二进制可执行文件。

  • 二进制软件包法

有的软件包官网会提供已经编译好的二进制可执行文件包,通常以.gz.biz或者zip为后续,下载以后,将二进制可执行文件添加到环境变更path中,再依据官方操作手册对相关配置文件调整以后就完成了安装。

Reference