gpt4 book ai didi

linux - Perl:libapt-pkg-perl AptPkg::Cache->精确下的新奇怪行为

转载 作者:IT王子 更新时间:2023-10-29 00:43:51 24 4
gpt4 key购买 nike

libapt-pkg-perl (v. 0.1.25) 精确包中的AptPkg::Cache 对象的构造函数有一个非常奇怪的问题。

perl 脚本旨在为三种不同的体系结构(i386、armel、armhf)下载 debian 软件包。对于每个架构,我执行以下操作:

  1. 使用所需架构的正确参数和包列表配置 AptPkg::Config '$_config'

  2. 使用 AptPkg::Cache->new 创建缓存对象。

  3. 调用AptPkg::Cache->policy方法创建AptPkg::Policy对象。

  4. 调用方法AptPkg::Policy->candidate("program-name")

  5. 下载所选架构的包。

这在 Ubuntu Lucid 上工作得很好,但在 Ubuntu Precise 上我只能下载定义的第一个架构的包。对于其他两种架构,将没有安装候选者(方法 AptPkg::Policy->candidate("Package-Name") 不返回对象)。

我试图构建一个解决方法,我找到了一个解决方案,该脚本如何适用于所有三种架构,没有问题,准确地说:

如果我连续两次创建缓存对象(使用 AptPkg::Cache->new)它会工作并且脚本会为所有三种架构下载 debian 包:

my $cache = AptPkg::Cache->new;
$cache = AptPkg::Cache->new;

我确定问题与 AptPkg::Cache->new 方法有关,因为我检查了其他所有内容,检查了可能导致问题的原因,检查了两次。所有配置变量都设置正确,我什至为每个架构的 AptPkg::Cache->new 获得了不同的哈希值,但似乎我忽略了一些重要的事情。

我对 perl 不是很熟悉,所以我想问问你们是否有人可以解释为什么脚本可以使用变通方法而不是没有它。此外,如果您的脚本中有两次相同的代码行,那看起来会很奇怪。

最佳答案

也许你遇到了这个错误 - https://bugs.launchpad.net/ubuntu/+source/libapt-pkg-perl/+bug/994509

那里有一个脚本可以测试您是否受到影响。如果是其他问题,请考虑提交错误报告。

编辑:刚看到这是 11 个月大的:/

关于linux - Perl:libapt-pkg-perl AptPkg::Cache->精确下的新奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20491376/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com