加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – Perl:libapt-pkg-perl AptPkg :: Cache->精确的新

发布时间:2020-12-14 01:39:59 所属栏目:Linux 来源:网络整理
导读:在libapt-pkg-perl(v.0.1.25)的精确包中,我对AptPkg :: Cache对象的构造函数有一个非常奇怪的问题. perl脚本旨在为三种不同的体系结构(i386,armel,armhf)下载debian软件包.对于每个架构,我执行以下操作: 使用正确的参数和所需体系结构的包列表配置AptPkg ::
在libapt-pkg-perl(v.0.1.25)的精确包中,我对AptPkg :: Cache对象的构造函数有一个非常奇怪的问题.

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

>使用正确的参数和所需体系结构的包列表配置AptPkg :: Config’$_config’.
>使用AptPkg :: Cache-> new创建缓存对象.
>调用方法AptPkg :: Cache->策略以创建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有关,因为我检查了其他所有内容,可能导致问题的原因,两次.所有配置变量都设置正确,我甚至为每个架构获得了一个不同的Hash for AptPkg :: Cache-> new,但似乎我忽略了一些重要的东西.

我对perl不太熟悉,所以我问你们有没有人可以解释为什么脚本与变通方法一起工作但不是没有它.如果在脚本中有两次相同的代码行,那么看起来很奇怪.

解决方法

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读