/usr/local/lib/perl/5.18.2/Storable.pm 第 278 行、/usr/bin/apt-show-versions 第 271 行的嵌套结构最大递归深度已超出

/usr/local/lib/perl/5.18.2/Storable.pm 第 278 行、/usr/bin/apt-show-versions 第 271 行的嵌套结构最大递归深度已超出

执行时apt-update & apt-upgrade -y出现此错误:

Max. recursion depth with nested structures exceeded at /usr/local/lib/perl/5.18.2/Storable.pm line 278, at /usr/bin/apt-show-versions line 271.
E: Problem executing scripts APT::Update::Post-Invoke-Success 'test -x /usr/bin/apt-show-versions || exit 0 ; apt-show-versions -i'
E: Sub-process returned an error code
  • 我重新安装了 apt-show-versions
  • 我升级了 CPAN 模块

有想法吗?谢谢!

答案1

安装cpanminus

apt-get install cpanminus
cpanm --uninstall Storable

这帮我解决了这个问题。

答案2

我实际上是来回踱步,试图弄清楚为什么同样的问题会突然发生在我身上。

然后我意识到这是在将存储库添加到我的apt 包管理器通过 /etc/apt/sources.list文件并下载发生问题的包。

我运行后得到了这个结果apt-show-versions -i -v从我的终端得到以下结果:

apt-show-versions -i -v

Parsing /var/lib/dpkg/status... completed.
Parsing /var/lib/apt/lists/deb.debian.org_debian_dists_stretch_non-free_binary- i386_Packages... completed.
Parsing /var/lib/apt/lists/download.webmin.com_download_repository_dists_sarge_contrib_binary-i386_Packages... completed.
Parsing /var/lib/apt/lists/deb.debian.org_debian_dists_stretch_contrib_binary-i386_Packages... completed.
Parsing /var/lib/apt/lists/deb.debian.org_debian_dists_stretch_main_binary-i386_Packages... completed.
Max. recursion depth with nested structures exceeded at /usr/lib/i386-linux-gnu/perl/5.28/Storable.pm line 278, at /usr/bin/apt-show-versions line 271.

以上内容表明我的问题实际上是我从许多不同的存储库下载了太多软件包,并且所有存储库的软件包数据中可能都包含了太多软件包,贮存模块来读取和处理。

我的/etc/apt/sources.list文件最初看起来像:

deb http://http.kali.org/kali kali-rolling main contrib non-free
deb https://download.webmin.com/download/repository sarge contrib
deb http://deb.debian.org/debian stretch main contrib non-free

在注释掉其中一个目录之后,问题就解决了:

deb http://http.kali.org/kali kali-rolling main contrib non-free
deb https://download.webmin.com/download/repository sarge contrib
#deb http://deb.debian.org/debian stretch main contrib non-free

然而,这更可能是一种解决方法,因为这可能是perl 存储模块。

答案3

我正在使用 Debian,但遇到了类似的问题(cpanminus 修复对我来说不起作用)。

原始问题已被报告为错误这里

我实施了他们建议的解决方法,暂时解决了这个问题。这涉及使用以下几行修改 apt-show-versions 脚本...

$Storable::recursion_limit=-1;
$Storable::recursion_limit_hash=-1;

答案4

我使用了在原始错误报告线程将 /usr/bin/apt-show-versions 中的第 271 行从:

($< == 0) and (nstore($apackages, $apackagescachefile) or

($< == 131072) and (nstore($apackages, $apackagescachefile) or

经过这一更改后,它对我来说运行得很好。不确定这是否对每个人都有效,但这是一个线索。

相关内容