如何最好地处理Perl/Tk所需的补丁?

如何最好地处理Perl/Tk所需的补丁?,perl,tk,perl-module,Perl,Tk,Perl Module,我对Perl/Tk做了一个更改,用于一个有自己的常驻Perl和模块安装的应用程序(这样我们就可以将该应用程序放入并运行) 我发现了一个我正在经历的问题,我只是偶然发现了我在这里需要的补丁: 我想应用这个补丁,或者如果我可以升级到一个新版本的Perl/Tk模块,它已经包含了这个补丁,不需要我更改Perl的版本,那么就这样做 以下是我可以从该应用程序的安装中找到的内容: perl-v=5.8.4 $Tk::版本='8.4' $Tk::patchlevel='8.4' $Tk::版本='804.027

我对Perl/Tk做了一个更改,用于一个有自己的常驻Perl和模块安装的应用程序(这样我们就可以将该应用程序放入并运行)

我发现了一个我正在经历的问题,我只是偶然发现了我在这里需要的补丁:

我想应用这个补丁,或者如果我可以升级到一个新版本的Perl/Tk模块,它已经包含了这个补丁,不需要我更改Perl的版本,那么就这样做

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

perl-v=5.8.4 $Tk::版本='8.4' $Tk::patchlevel='8.4' $Tk::版本='804.027'

所以

1a)如果有一个更新的Tk版本包含上述链接中的补丁,我如何在该应用程序的特定Perl安装位置升级该模块

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

2) 如果没有,如何应用该链接中定义的修补程序?

首先,检查当前版本的。在做出此响应时,它是804.028,因此您的bug可能已经修复。您可以检查以查看报告的bug的状态,尽管我不知道您的特定bug是否已输入队列。您还可以检查发布的文件,看看是否有提到您的问题

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

Tk是一种分布。您不能升级单个模块

检查以查看哪些版本的Tk在哪些平台上工作,以及在哪些版本的Perl下工作


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

Michael,谢谢您的评论。如果包含Tk发行版,我将如何将其从804.027升级到804.028?如果不是,我只想要补丁,我怎么做你在最后一句中的建议?步骤是什么?如果您正在运行ActivePerl,请使用随附的
ppm
实用程序。否则,请尝试
cpan
shell。如果所有其他操作都失败,请下载发行版,解压缩它,然后执行
make
make test
make install
。 Bug confirmed. Here's the patch against 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) {
Regards, Slaven