4

我正在为具有自己的常驻 Perl 和模块安装的应用程序对 Perl/Tk 进行更改(因此我们可以将应用程序放入并运行)。

我发现了一个我遇到的问题,我偶然发现了我在这里需要的补丁:http: //osdir.com/ml/lang.perl.tk/2004-10/msg00030.html

    错误确认。这是针对 Tk804.027 的补丁:


--- Tk-804.027/pTk/mTk/generic/tkEntry.c Sat Mar 20 19:54:48 2004
+++ Tk-804.027-perl5.8.3d/pTk/mTk/generic/tkEntry.c Tue Oct 19 22:50:31 2004
@@ -3478,6 +3478,18 @@
Tcl_DStringFree(&script);
#else

+ switch (type) {
+ case VALIDATE_INSERT:
+ type = 1;
+ break;
+ case VALIDATE_DELETE:
+ type = 0;
+ break;
+ default:
+ type = -1;
+ break;
+ }
+
code = LangDoCallback(entryPtr->interp, entryPtr->validateCmd, 1, 5, "%s
%s %s %d %d",
new, change, entryPtr->string, index, type);
if (code != TCL_OK && code != TCL_RETURN) {


问候,
奴隶

我想应用这个补丁,或者如果有更新版本的 Perl/Tk 模块我可以升级到其中包含这个补丁,不需要我更改 Perl 的版本,就这样做。

以下是我可以从该应用程序的安装中找到的内容:

perl -v = 5.8.4 $Tk::version = '8.4' $Tk::patchlevel = '8.4' $Tk::VERSION = '804.027'

所以..

1a) 如果有更新的 Tk VERSION 包含上面链接中的补丁,我如何只升级这个应用程序的特定 Perl 安装位置中的那个模块?

1b) 我如何知道该升级是否与 Perl 5.8.4 兼容(此时我不想升级 perl)

2)如果没有,我该如何应用该链接中定义的补丁?

4

1 回答 1

3

首先,检查CPAN以查看当前Tk版本是什么。在此响应时,它是 804.028,因此您的错误可能已被修复。您可以检查Tk 错误队列以查看已报告错误的状态,尽管我不知道您的特定错误是否曾进入队列。您还可以检查版本的更改文件,看看那里是否提到了您的问题。

如果您没有看到任何具体内容,您可能会注意到您引用的消息的作者是 Tk 的维护者,因此很可能已经应用了补丁。:)

Tk 是一个分布。您无法升级单个模块。

检查Perl/Platform Version Matrix以查看 Tk 的哪些版本在哪些平台上以及在哪些 Perl 版本下工作。

如果您绝对必须只应用这一更改,请下载您正在使用的 Tk 版本的源代码,应用补丁并重新构建它。

于 2010-05-21T20:24:08.427 回答