How to install a package in offline scenario in Ubuntu 24.04
概述
做过信创项目的兄弟们在工作上每天可能面对很多需要解决的问题,不过,有一类问题可能是大家经常遇的,比方说,有时候我们不得不硬着头皮在离线生产环境中安装某些软件包,相信很多兄弟被这种细碎的小事搞得焦头烂额。关于如何在离线生产环境中安装某些软件包,不同的操作系统、不同的应用场景,解决办法可能不尽相同。
今天,我们来给大家介绍一下如何在Ubuntu离线场景中基于apt-offline安装特定的软件包。这里,我们以如何安装openjdk-17
为例予以说明。
实践
准备
在开始工作之前,我们准备了两个Ubuntu 24.04操作系统环境,具体如下面的表格所示:
host name | alias | os | offline status | ip |
---|---|---|---|---|
shaolin | 少林 | ubuntu server 22.04 | offline | 192.168.43.226 |
wudang | 武当 | ubuntu server 22.04 | online | 192.168.43.226 |
今天的实践是我们将借助主机少林
来完成在主机武当
上安装openjdk-17
。
安装apt-offline
在完成下面的实验之前,我们需要在主机少林
与武当
上分别安装上apt-offline
软件包,这里为了模拟真实场景,我们需要在主机少林
上从以下地址下载包含了依赖的apt-offline
软件包。
- https://pkgs.org/download/apt-offline
我这边的主机是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
- How to Use Apt-Offline to Install Debian or Ubuntu Packages