Jenkins - apt 安装软件包 404 Not Found

news2024/9/21 20:45:28

Jenkins - apt 安装软件包 404 Not Found

  • 引言
  • 关于 apt
  • 解决 apt 安装软件包 404 问题
    • 问题
    • 分析
    • 解决方案

引言

日常 Jenkins job 运行,有段时间会遇到 apt 安装软件包 404 的情况,这种情况不是每次都发生的,但是会导致 Jenkins 失败,所以需要排查一下问题根源并解决。

关于 apt

apt(Advanced Package Tool)是 Linux 系统中用于管理软件包的一套工具。它允许用户安装、更新、升级和删除软件包。apt 是基于Debian 系统及其衍生系统(如 Ubuntu)中最常用的包管理工具。它简化了软件管理过程,通过自动处理依赖关系和软件包的安装,使得用户不必手动下载和安装每个软件包及其依赖。

apt 的主要功能包括:

  • 安装新软件包:通过从软件仓库中下载和安装软件包,自动解决所需的依赖。
  • 更新软件包列表:从设置的源(repositories)中更新可用软件包和它们版本的列表。
  • 升级软件包:将系统上的软件包更新到最新版本,同时确保依赖关系得到满足。
  • 删除软件包:从系统中删除不再需要的软件包,并清理它们的依赖。
  • 清理未使用的软件包:删除那些已经不再被任何已安装软件包依赖的软件包。

apt 通过简单的命令行界面提供这些功能

  • sudo apt update:更新软件包列表。
  • sudo apt upgrade:升级所有可升级的软件包。
  • sudo apt install package_name:安装名为 package_name 的软件包。
  • sudo apt remove package_name:删除名为 package_name 的软件包。
  • sudo apt autoremove:自动删除不再需要的软件包。

apt 背后有一个庞大的软件仓库网络,为用户提供了广泛的软件选择和更新。

解决 apt 安装软件包 404 问题

问题

apt 安装 python3.8-venv 失败,404 Not Found,但是不是每次都失败的。

07:47:04 + sudo apt -y install python3.8-venv
07:47:04 
07:47:04 WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
07:47:04 
07:47:04 Reading package lists...
07:47:07 Building dependency tree...
07:47:07 Reading state information...
07:47:07 The following NEW packages will be installed:
07:47:07   python3.8-venv
07:47:07 0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
07:47:07 Need to get 5452 B of archives.
07:47:07 After this operation, 27.6 kB of additional disk space will be used.
07:47:07 Ign:1 http://us-east-1.ec2.archive.ubuntu.com/ubuntu focal-updates/universe amd64 python3.8-venv amd64 3.8.10-0ubuntu1~20.04.9
07:47:08 Err:1 http://security.ubuntu.com/ubuntu focal-updates/universe amd64 python3.8-venv amd64 3.8.10-0ubuntu1~20.04.9
07:47:08   404  Not Found [IP: 54.87.19.168 80]
07:47:08 E: Failed to fetch http://security.ubuntu.com/ubuntu/pool/universe/p/python3.8/python3.8-venv_3.8.10-0ubuntu1~20.04.9_amd64.deb  404  Not Found [IP: 54.87.19.168 80]
07:47:08 E: Internal Error, ordering was unable to handle the media swap
07:47:08 Build step 'Execute shell' marked build as failure

分析

上面问题根源是 apt 安装 python3.8-venv 的版本是 python3.8-venv_3.8.10-0ubuntu1~20.04.9_amd64.deb 是老版本,而软件资源(repositories)中的是新版本 python3.8-venv_3.8.10-0ubuntu1~20.04.10_amd64.deb,所以找不到老版本,报 404 Not Found

http://security.ubuntu.com/ubuntu/pool/universe/p/python3.8/
在这里插入图片描述

sudo apt install 实际上会根据系统配置文件(通常是 /etc/apt/sources.list 文件及 /etc/apt/sources.list.d/ 目录下的文件)中列出的软件源(repositories)来搜索软件包。这些软件源可以包括多个不同的仓库,它们可能位于不同的服务器上,包括官方的 Ubuntu 仓库、第三方提供的仓库,以及本地的仓库等。
当你执行 sudo apt install package_name 命令时,apt 会:
查看本地的软件包索引列表,这个列表是通过 sudo apt update 命令更新的,它包含了所有配置的软件源中可用软件包的信息。
在这些软件源中搜索指定的软件包 package_name。
如果找到了软件包,它会检查依赖关系,确保所有需要的依赖包也都能被安装。
然后从相应的软件源下载软件包及其依赖,并在本地安装。
因此,sudo apt install 实际上是可以从配置的多个软件源中查找和安装软件包的,这取决于你的 sources.list 文件和 /etc/apt/sources.list.d/ 目录下的其他列表文件中的配置。

所以造成这个原因是,Jenkins 某些虚机本地的软件索引列表中,python3.8-venv 是老版本,所以 apt 会去安装这个老版本,而软件资源(repositories)这个版本已经不存在了,升级成新的版本了,但有些虚机本地的软件所以列表更新过,python3.8-venv 是新版本,所以安装导致有时成功,有时失败。

解决方案

如果本地软件包索引列表中的软件包是老版本的,那么当你使用 sudo apt install package_name 命令安装软件包时,apt 会根据这个本地索引去安装软件包,因此会安装老版本的软件包。

这是因为 apt 系统依赖于本地索引来确定可用软件包的版本。如果这个本地索引没有被定期更新(通过运行 sudo apt update),它可能不会反映软件源中最新的软件包状态。因此,即使软件源中有新版本的软件包,apt 也只能安装索引中列出的版本。

要确保安装最新版本的软件包,你应该定期运行 sudo apt update 来更新本地软件包索引,然后再安装或升级软件包。这样,apt 就能从软件源中获取最新版本的软件包信息,并进行安装。

所以在安装软件包时,先运行 sudo apt update 来更新本地软件包索引

sudo apt update
sudo apt -y install python3.8-venv

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

强化学习术语与超参数整理(PPO)

最近在isaac lab中使用各个强化学习框架做对比训练,算法都是用的PPO,但是每个框架里超参数名字都不太一样,各种叫法弄得都混乱了,而且对齐不好很难对比出结论,在这里系统整理一下。 Isaac Lab支持的强化学习框架介绍-…

UE4-光照重建

当我们拉入新的光源和模型到我们的场景中后,会产生这样的情况: Preview:预览 表示此时由于光照物体所产生的阴影都是预览级别的并不是真正的效果。 方法一: 或者也可以在世界大纲中选中我们的光源,然后将我们的光源改变为可以…

免费【2024】springboot 毕业生就业管理微信小程序

博主介绍:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围:SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化…

MPI框架以及PIPE数据流向细节

一、海思MPP内部处理流程图 各模块功能介绍: (1)VI:捕获视频图像,可对其做剪切、缩放、镜像等处理,并输出多路不同分辨率的图像数据. (2)AI:捕获⾳频数据,然后AENC 模块⽀持按多种⾳…

2024:Qt--编译配置Protobuf(windows10) 配图详解

这里写自定义目录标题 一、准备1、Window10系统2、Qt Creator 5.0.2 Based on Qt 5.15.2 (MSVC 2019, 64 bit)3、protobuf-3.15.0(本示例使用版本)4、cmake-3.21.3-windows-x86_64(本示例使用,下载的zip直接解压使用) …

代码随想录——零钱兑换Ⅱ(Leetcode518)

题目链接 完全背包 class Solution {public int change(int amount, int[] coins) {int[] dp new int[amount 1];dp[0] 1;for(int i 0; i < coins.length; i){for(int j coins[i]; j < amount; j){dp[j] dp[j - coins[i]];}}return dp[amount];} }本题为组合问题…

MySQL 约束 (constraint)

文章目录 约束&#xff08;constraint)列级约束和表级约束给约束起名字&#xff08;constraint)非空约束&#xff08;no null)检查约束&#xff08;check)唯一性约束 (unique)主键约束 (primary key)主键分类单一主键复合主键主键自增 &#xff08;auto_increment) 外键约束外什…

【IEEE出版 | 广东省高校联合主办】第六届物联网、自动化和人工智能国际学术会议(IoTAAI 2024,7月26-28)

第六届物联网、自动化和人工智能国际会议&#xff08;IoTAAI 2024&#xff09;将于2024年07月26-28日在中国广州召开。 会议旨在拓展国际科技学术交流渠道&#xff0c;搭建学术资源共享平台&#xff0c;促进全球范围内的科技创新&#xff0c;提升中外学术合作。会议还鼓励不同领…

BGP选路之Preferred value

原理概述 当一台BGP路由器中存在多条去往同一目标网络的BGP路由时&#xff0c;BGP协议会对这些BGP路由的属性进行比较&#xff0c;以确定去往该目标网络的最优BGP路由&#xff0c;然后将该最优BGP路由与去往同一目标网络的其他协议路由进行比较&#xff0c;从而决定是否将该最优…

FliFlik KleanOut for Photo 的妙用

FliFlik KleanOut for Photo 是一款专业的图像水印去除软件&#xff0c;旨在帮助用户快速高效地去除照片中的水印标识。无论是文本水印还是图像水印&#xff0c;该软件都能有效识别并删除&#xff0c;保持图像原始清晰度和质量。它采用 AI 算法引擎&#xff0c;可以精准识别和删…

MongoDB教程(十六):MongoDB高级索引

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; 文章目录 引言一、全文索…

最简单的typora+gitee+picgo配置图床

typoragiteepicgo图床 你是否因为管理图片而感到头大&#xff1f;是时候了解一下 Typora、Gitee 和 PicGo 这个超级三剑客了&#xff0c;它们可以帮你轻松打造自己的图床&#xff0c;让你的博客图片管理变得简单又有趣。让我们开始这场神奇的图床之旅吧&#xff01; Typora …

大型语言模型的生物医学知识图优化提示生成

大型语言模型的生物医学知识图优化提示生成 https://arxiv.org/abs/2311.17330 https://github.com/BaranziniLab/KG_RAG 大型语言模型的生物医学知识图优化提示生成 摘要 KG-RAG框架&#xff0c;较好的结合了生物医学知识图谱SPOKE和LLM的优势。SPOKE是一个开放知识图谱&…

聚焦保险行业客户经营现状,概述神策数据 CJO 解决方案

触点红利时代&#xff0c;企业的经营需求从「深度的用户行为分析」转变为「个性化、全渠道一致的客户体验」。客户旅程编排&#xff08;Customer Journey Orchestration&#xff0c;简称 CJO&#xff09;从体验出发&#xff0c;关注客户需求、感受和满意度&#xff0c;能够帮助…

04 HTML CSS JavaScript

文章目录 HTML1、HTML介绍2、快速入门3、基础标签4、图片、音频、视频标签5、超链接标签6、列表标签7、表格标签8、布局标签9、 表单标签 CSS1、 概述2、 css 导入方式3、 css 选择器4、 css 属性 JavaScript1、JavaScript简介2、JavaScript引入方式3、JavaScript基础语法4、Ja…

Adobe Audition(AU)安装包软件下载

目录 一、下载 二、AU软件介绍 三、使用技巧 四、快捷键操作 常用快捷键&#xff1a; 一、下载 链接https://pan.baidu.com/s/1Ax9pro_Q75YgLYaKDzZg8w?pwd3mi1 二、AU软件介绍 Adobe Audition是一个专业级的音频工作站&#xff0c;适用于音乐制作、广播、播客、视频后…

C#数组复习

一、一维数组 using System.Collections; using System.Collections.Generic; using UnityEngine;public class ShuZu : MonoBehaviour {#region 知识点一 基本概念//数组是存储一组相同类型数据的集合//数组分为 一维、二维、交错数组//一般情况 一维数组 就简称为数组#en…

Onenet模拟Mqtt调试物联网设备

本章节目录 一.调试器模拟设备登录 二.调试器模拟上传数据 三.调试器接受下发控制消息 一.调试器模拟设备登录(让设备处于在线状态) 1.打开文档中心(open.iot.10086.cn) 2,Onenet物联网开放平台 3.产品开发,设备接入->设备开发 4.mqtt协议接入->最佳实践 5.物模型数据交…

样式迁移及代码

一、定义 1、使用卷积神经网络&#xff0c;自动将一个图像中的风格应用在另一图像之上&#xff0c;即风格迁移&#xff1b;两张输入图像&#xff1a;一张是内容图像&#xff0c;另一张是风格图像。 2、训练一些样本使得样本在一些cnn的特征上跟样式图片很相近&#xff0c;在一…

PHP教程002:PHP变量介绍

文章目录 一、PHP程序1、PHP标记2、PHP代码3、语句结束符;4、注释 二、PHP变量2.1 声明变量2.2 赋值运算符3、变量命名规则 一、PHP程序 PHP文件的默认扩展名是".php"PHP文件可以包含html、css、js 序号组成描述1<?php ... ?>PHP标记2PHP代码函数、数组、流…