0

我希望每晚自动更新所有已安装的 CPAN 模块,因此我将以下命令放在了crontab

@daily cpan -i $(cpanp -o | perl -lane 'print $F[3]')

但是,每当运行此程序时,我都会收到以下错误消息:

Unable to get Terminal Size. The TIOCGWINSZ ioctl didn't work. The COLUMNS and
LINES environment variables didn't work. The resize program didn't work. at
/usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/Term/ReadKey.pm
line 362.
Compilation failed in require at /usr/lib/perl5/site_perl/5.8.8/Term/ReadLine
/Perl.pm line 63.

我该怎么做才能让它工作?

4

3 回答 3

3

星期一回来。如果您承诺为我测试它,我将添加一个-u命令来执行此操作。cpan您必须cpanApp::Cpan获取最新信息。

好吧,不要等到星期一。我已将更改推送到cpan-script Github repo,并且App-Cpan 1.56_15 正在前往 CPAN 的路上。

如果您有任何问题或新功能无法满足您的要求,请告诉我。

于 2009-11-12T22:58:45.217 回答
2

请使用brian d foy 的回答,因为他添加了一个 cpan 选项来执行此操作

您是否尝试使用 CPAN 更新模块列表或实际更新任何过时的模块(d/l、编译、安装)?这可能很危险,因为模块可能会更改接口并且现有脚本会失败。这个错误是由于 CPAN 试图使用 Term::ReadLine 和 Term::ReadKey 来询问终端。

如果您真的想升级所有模块,可以使用以下命令:

perl -MCPAN -e 'CPAN::Shell->install(CPAN::Shell->r)'

与文档中给出的用于为所有过时模块询问 CPAN 的命令相比,这是一个很小的变化:

https://metacpan.org/pod/CPAN#PROGRAMMERS-INTERFACE

于 2009-11-12T21:18:47.467 回答
0

COLUMNS 和 LINES 环境变量不起作用。

尝试设置COLUMNSLINES环境变量。

COLUMNS=80
LINES=24
@daily cpan -i $(cpanp -o | perl -lane 'print $F[3]')
于 2009-11-12T21:24:36.313 回答