jail内部ubuntu apt升级失败问题解决

在FreeBSD jail 里安装启动Ubuntu jammy系统,每次装好执行jexec ubjammy sh进入Ubuntu系统后,执行apt update报错。 这个问题困惑了好久,突然有一天仔细去看报错信息,查看了(man 5 apt.conf) ,才搞定问题。简单来说就是把apt的配置里APT::Cache-Start调大就行,但是一开始由于不明白原理,所以走了弯路。

最简单的操作就是这篇文档里的方法:https://blog.csdn.net/skywalk8163/article/details/140383232

这里把处理步骤、弯路,更详细的记录下来:

问题:apt update升级报错

复制代码
 apt full-upgrade
E: Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. Current value: 25165824. (man 5 apt.conf)
Reading package lists... Error!
E: Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. Current value: 25165824. (man 5 apt.conf)
E: Error occurred while processing libsurgescript0.5.4.4 (NewVersion1)
E: Problem with MergeList /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_jammy_universe_binary-amd64_Packages
E: The package lists or status file could not be parsed or opened.

文心一言的回答

错误信息表明你的APT缓存空间不足,并且出现了与libsurgescript0.5.4.4软件包相关的合并列表(MergeList)问题。以下是一些建议的步骤来解决这个问题:

  1. 增加APT缓存大小

    打开你的/etc/apt/apt.conf或/etc/apt/apt.conf.d/50user(或其他以.conf结尾的文件在/etc/apt/apt.conf.d/目录下),然后增加或修改APT::Cache-Limit的值。不过,错误中提到的是APT::Cache-Start,但通常我们修改的是APT::Cache-Limit。以下是一个例子,将缓存大小增加到500MB(512 * 1024 * 1024 字节):

    复制代码
    echo 'APT::Cache-Limit "524288000";' | sudo tee -a /etc/apt/apt.conf.d/99cachelimit

    注意:如果你已经有一个APT::Cache-Limit的设置,请确保新值大于当前值。

  2. 修复损坏的列表

    由于提到了MergeList问题,你可能需要清理并重新生成软件包列表。可以使用以下命令:

    复制代码
    sudo apt clean 
    sudo rm -rf /var/lib/apt/lists/* 
    sudo apt update

    这些命令会清除现有的列表,并重新从软件源下载。

  3. 检查软件源

    错误中还提到了archive.ubuntu.com_ubuntu_dists_jammy_universe_binary-amd64_Packages,这通常是Ubuntu的软件源。确保你的/etc/apt/sources.list和/etc/apt/sources.list.d/*中的软件源是正确的,并且对于Jammy版本是有效的。

  4. 检查第三方软件包
    libsurgescript0.5.4.4可能是一个第三方软件包,不属于Ubuntu的官方仓库。如果你从非官方源安装了它,请确保该源是可靠的,并且该软件包与你的Ubuntu版本兼容。

  5. 手动下载并安装软件包

    如果以上步骤都无法解决问题,并且你确定需要libsurgescript0.5.4.4软件包,你可以尝试从其官方网站或其他可信来源手动下载DEB包,并使用dpkg进行安装。但请注意,这可能会带来依赖问题,所以通常最好使用APT来管理软件包。

  6. 查看系统日志

    使用journalctl或查看/var/log/syslog(或/var/log/apt/history.log)可能会提供更多关于错误的详细信息。

  7. 重启服务或系统

    有时简单的重启APT服务(通常是systemctl restart apt.service,但APT通常没有单独的服务)或整个系统可以解决一些临时问题。但请注意,这通常不是解决根本问题的方法。

希望这些建议能帮助你解决问题!

尝试修复

先执行这个试试

echo 'APT::Cache-Limit "524288000";' | tee -a /etc/apt/apt.conf.d/99cachelimit

不行

APT::Cache-Start

echo 'APT::APT::Cache-Start "524288000";' | tee -a /etc/apt/apt.conf.d/99cachelimit

删除 rm -rf /var/lib/apt/lists

不行

尝试配置Cache-Limit和Cache-Grow

事实证明光修改Cache-Limit和Cache-Grow不行:

复制代码
echo 'APT::Cache-Limit "0";' > /etc/apt/apt.conf.d/99cachelimit

echo 'APT::Cache-Grow "16777216";' >>/etc/apt/apt.conf.d/99cachelimit

最终还是靠修改Cache-Start搞定:

复制代码
echo 'APT::Cache-Start "67108864";' > /etc/apt/apt.conf.d/99cachelimit

注意如果使用重定向符号>> ,如果后面直接跟文件名字的话,空格也会成为名字的一部分。

总结

这个问题很久没有解决,主要是没有仔细看报错信息,没有弄明白报错信息里的 Cache-Start 的设定方法。

因为是jail里的ubuntu,所以没有vi ,文心一言给的命令也需要修改才能执行,导致走了弯路。

其实核心思想,就是在apt配置目录里/etc/apt/apt.conf.d/,随便写一个文件,比如99cachelimit ,文件里加上APT::Cache-Start "67108864";这句话就行了。这样就把Cache-Start值调为64M了。

相关推荐
数字新视界1 小时前
一体化机柜在数据中心运维中的创新应用与优势分析
大数据·服务器·数据库·动环监控系统·动力与环境监控系统
隔窗听雨眠1 小时前
KingbaseES平替全链路实践:从迁移评估到可持续运维
运维
skywalk81631 小时前
登到192.168.1.5那台机器,看看今天白天,大约从早晨到晚上,都卡住了。看看因为什么卡住,为什么卡住而没有杀死那个导致卡死的进程,为什么
运维·系统·freebsd
运维行者_2 小时前
网络监控工具怎么选?从设备监控到智能运维的能力清单
运维·服务器·开发语言·网络·人工智能·支持向量机·php
小小de风呀2 小时前
de风——【从零开始学习Linux】(九):进程基础 —— 从冯诺依曼体系到 fork 创建进程
linux·学习
2401_868534782 小时前
陈冲2026年上海纽约大学全英文毕业演讲
服务器·网络
晚风吹北巷3 小时前
Linux复习篇(自用)
linux·运维·服务器·1024程序员节
风哥2号4 小时前
数据库教程FGMT69:PostgreSQL运维诊断与监控分析
运维·数据库·postgresql
数字新视界4 小时前
信创机房动环监控技术在智能运维中的应用与优势分析
大数据·服务器·数据库·动环监控系统·动力与环境监控系统