无法在 Perl 5.32.0 MacOS Sierra 上安装 Test::File

Posted

技术标签:

【中文标题】无法在 Perl 5.32.0 MacOS Sierra 上安装 Test::File【英文标题】:Cannot install Test::File on Perl 5.32.0 MacOS Sierra 【发布时间】:2021-05-31 05:36:55 【问题描述】:

我正在尝试在我的 perlbrew 5.32.0 上安装 DateTime,但对其依赖项 Test::File 的测试失败。重要的部分如下:

t/owner.t ..................... # File [blib] belongs to 703404669 (729761796), not 703404669 (703404669)!
t/owner.t ..................... 1/? 
#   Failed test 'owner_is with text username'
#   at t/owner.t line 99.

#   Failed test 'Intentional owner_isnt failure'
#   at t/owner.t line 146.
# STDOUT is:
# > ok 1 - blib doesn't belong to 703404669
# not:
# > not ok 1 - blib doesn't belong to 703404669
# as expected
# STDERR is:
# > 
# > 
# > 
# not:
# > # File [blib] belongs to 703404669 (729761796)!
# > #   Failed test 'blib doesn't belong to 703404669'
# > #   at t/owner.t line 145.

我之前遇到过类似的错误,但我的~/.cpan 目录中的几乎每个包都有一个blib,所以我不确定 cpan 指的是哪个目录。

我的操作系统是 MacOS Sierra 10.12.6 (16G2136)

如何解决这些错误以安装DateTime

【问题讨论】:

所有blib目录都属于同一个用户吗? @choroba 是的,之前的错误消息暗示所有目录都应该属于同一个用户 blib 是由make 创建的暂存目录。它包含要安装的所有文件。 make test 针对它运行测试。 make install 将文件从 blib 复制到它们的最终位置。 File::Copy::Recursive does not have a t/owner.t。这似乎是from Test::File。 @Schwern 这是我的用户名 【参考方案1】:

tl;dr:您在依赖项中发现了一个错误。它仅用于测试。您可以忽略失败的测试,强制安装 Test::File,然后继续安装 DateTime。

cpan -f -i Test::File
cpan DateTime
# File [blib] belongs to 703404669 (729761796), not 703404669 (703404669)!

问题是您的用户名是一个数字,而 Test::File 似乎没有说明这一点。

owner_is 检查文件是否归给定用户所有。它接受用户名或数字用户 ID。如果它给了一个数字它assumes it's a numeric ID。如果 703404669 是您的用户名,它会感到困惑并将其用作用户 ID。您的用户 ID 确实是 729761796。703404669 != 729761796。

Test::File 可以通过验证getpwuid 和/或首先检查getpwnam 来防止这种歧义。

恭喜,您在 Test::File 中发现了一个错误。 Please report it.

【讨论】:

以上是关于无法在 Perl 5.32.0 MacOS Sierra 上安装 Test::File的主要内容,如果未能解决你的问题,请参考以下文章

在 MacOS Big Sur 上使用 perl WWW:Mechanize

Macports 警告:无法重建 Perl 扩展 p5.26-net-ssleay

在 Perl 中使用 DBI 连接到 Oracle 数据库,在 Windows 中出现 ERROR OCIEnvNlsCreate

2019 SIE Spring Enrollment Starts

macos shell脚本不返回控制

Perl 脚本如何知道它自己的内存占用?