我对AptPkg::Cache
的精确包中的libapt-pkg-perl (v. 0.1.25)
对象的构造函数有一个非常奇怪的问题。
perl脚本旨在下载用于三种不同体系结构(i386,armel,armhf)的debian软件包。对于每种体系结构,请执行以下操作:
AptPkg::Config '$_config'
。 AptPkg::Cache->new
创建缓存对象。 AptPkg::Cache->policy
创建AptPkg::Policy
对象。 AptPkg::Policy->candidate("program-name")
。 这在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个月大:/