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://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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/34349.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++类与对象——拷贝构造与运算符重载

拷贝构造函数和赋值运算符重载就是C类默认六个函数之二。 拷贝构造函数: 如果⼀个构造函数的第⼀个参数是自身类类型的引用,且任何额外的参数都有默认值,则此构造函数 也叫做拷贝构造函数,也就是说拷贝构造是⼀个特殊的构造函数…

数学建模 第一节

目录​​​​​​ 前言 一 优化模型的类型 二 线性规划1 线性规划2 三 0-1规划 总结 前言 数学建模主要是将问题转化为模型,然后再以编程的形式输出出来 算法都知道,数学建模也需要用到算法,但是不是主要以编程形式展示,而是…

计算机网络——DNS

一、什么是DNS? DNS(Domain Name System,域名系统) 是互联网的核心服务,负责将人类可读的域名(如 www.baidu.com)转换为机器可识别的 IP地址(如 14.119.104.254)。它像一…

【软考-架构】5.2、传输介质-通信方式-IP地址-子网划分

✨资料&文章更新✨ GitHub地址:https://github.com/tyronczt/system_architect 文章目录 传输介质网线光纤无线信道 通信方式和交换方式会考:交换方式 💯考试真题第一题第二题 IP地址表示子网划分💯考试真题第一题第二题 传输…

基于SpringBoot+Vue的毕业论文管理系统+LW示例参考

1.项目介绍 系统角色:管理员、指导教师、评阅教师、学生功能模块:用户管理、毕业论文管理、课题信息管理、选题申请管理、课题任务管理、基础数据管理、公告信息管理、评阅教师管理、指导教师管理等技术选型:SpringBoot,Vue等测试…

文件系统 linux ─── 第19课

前面博客讲解的是内存级文件管理,接下来介绍磁盘级文件管理 文件系统分为两部分 内存级文件系统 : OS加载进程 ,进程打开文件, OS为文件创建struct file 和文件描述符表 ,将进程与打开的文件相连, struct file 内还函数有指针表, 屏蔽了底层操作的差异,struct file中还有内核级…

第十次CCF-CSP认证(含C++源码)

第十次CCF-CSP认证 分蛋糕满分题解 学生排队满分题解 Markdown语法题目解读满分代码 结语 分蛋糕 题目链接 满分题解 基本思路:我们需要保证除了最后一个小朋友之外的所有人,分得的蛋糕都大于等于给定的K值,为什么是大于等于,是…

MyBatis框架操作数据库一>xml和动态Sql

目录 配置连接字符串和MyBatis:数据库的连接配置:XML的配置: XML编写Sql:model层:mapper层: 动态Sql:if 标签和trim标签:where标签:Set标签:Foreach标签: Mybatis的开发有两种方式:: 注解和XML&…

编写Dockerfile制作tomcat镜像,生成镜像名为tomcat:v1,并推送到私有仓库。

1.具体要求如下: 基于rockylinux:8基础镜像; 指定作者为openlab; 安装tomcat服务,暴露8080端口; 设置服务自启动。 总结步骤:基于rockylinux:8,安装Java环境,安装Tomcat&a…

医院手术麻醉信息系统是如何为医院提质增效的?

近年来,随着HIS系统、LIS系统、PACS系统、EMR系统等信息系统的出现,医疗信息化已成为医疗领域推广的重点,显著提高了医院业务的运营效率。手术麻醉系统作为医院信息系统的一部分,由两个子部分组成:监测设备数据采集系统…

ios打包需要的证书及步骤

官网:https://developer.apple.com/account 避免他人登录apple账号的方法:就是让他们发测试设备的udid,手动注册到账号下,然后再给他们导p12证书和描述文件 iOS App Development iOS 开发版本签名(仅限 iOS App&#x…

C#特性和反射

1。特性概念理解? 特性(Attribute)是用于在【运行时】传递程序中各种元素(比如类、属性、方法、结构、枚举、组件等)行为信息的声明性标签。您可以通过使用特性向程序添加声明性信息。一个声明性标签是通过放置在它所…

【毕业论文格式】word分页符后的标题段前间距消失

文章目录 【问题描述】 分页符之后的段落开头,明明设置了标题有段前段后间距,但是没有显示间距: 【解决办法】 选中标题,选择边框 3. 选择段前间距,1~31磅的一个数 结果

操作系统-八股

进程基础: 进程定义:运行中的程序,有独立的内存空间和地址,是系统进行资源调度和分配的基本单位。 并发,并行 并发就是单核上面轮询,并行就是同时执行(多核); 进程上下…

骑士74CMS_v3.34.0SE版uniapp全开源小程序怎么编译admin和member流程一篇文章说清楚

有粉丝一直问我骑士系统怎么编译后台和小程序目前骑士人才系统74CMS分标准版,创业板,专业版,其除功能不同外其配置方法完全一致有喜欢系统的也可以私信我或者找我获取 一.安装打包环境[Nodejs]这个就不用我说了吧,用不小于V20的版…

c语言zixue

该文主要是记录我学习中遇到的一些重点、易出问题的内容 教材p16.17 先从一个简单的例子开始吧 #include <stdio.h> //编译预处理命令 int main() //程序的主函数 {printf("To C"); //输出语句return 0; //返回语句 } #include <stdio.h>是编译预…

ollama API 本地调用

ollama API 本地调用 前提条件&#xff0c;ollama 已经启动了模型&#xff0c;查看 ollama 中的 model 名称 ollama list使用 openai 调用 from openai import OpenAI import openaiopenai.api_key ollama openai.base_url http://localhost:11434/v1/def get_completion(pro…

es6 尚硅谷 学习

1、let 1.变量不能重复声明 2.块级作用域 &#xff0c;只在块内有效 3.不存在变量提升&#xff0c;变量未声明之前不可使用 4.不影响作用域链 2、const const SCHOOL “温医”&#xff1b; 1.一定要有初始值 2.一般常量使用大写 3.常量不能赋值 4.块级作用域 5.对数组和对象…

在微信小程序或前端开发中,picker 和 select 都是用户交互中用于选择的组件,但它们在功能、设计和使用场景上有一定的区别

在微信小程序或前端开发中&#xff0c;picker 和 select 都是用户交互中用于选择的组件&#xff0c;但它们在功能、设计和使用场景上有一定的区别。 1. picker 的特点 描述&#xff1a; picker 是微信小程序中的原生组件&#xff0c;通常用于选择单项或多项值&#xff0c;如时…

C#通过API接口返回流式响应内容---分块编码方式

1、背景 上一篇文章《C#通过API接口返回流式响应内容—SSE方式》阐述了通过SSE&#xff08;Server Send Event&#xff09;方式&#xff0c;由服务器端推送数据到浏览器。本篇是通过分块编码的方式实现 2、效果 3、具体代码 3.1 API端实现 [HttpGet] public async Task Chu…