2010-05-21 48 views
4

我正在对Perl/Tk进行更改,以使其具有自己的常驻Perl和模块安装的应用程序(所以我们可以放弃应用程序)。如何最好地处理Perl/Tk所需的补丁?

我发现我遇到,我只是无意中发现了什么似乎是补丁有问题,我需要在这里:http://osdir.com/ml/lang.perl.tk/2004-10/msg00030.html

 

    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 

我想申请这个补丁或者是否有新的我可以升级到包含这个补丁的Perl/Tk模块版本,它不需要我改变Perl的版本,就这么做。

这是我可以从安装找到这个程序:

的perl -v = 5.8.4 $ Tk的版本:: = '8.4' $ Tk的:: PATCHLEVEL = '8.4' $ TK :: VERSION =“804.027”

所以..

1A)如果有一个新的Tk的版本,其中包括在链接补丁上面,我如何在特定的Perl安装位置升级只是模块为这个应用程序?

1B)我怎么知道这是否升级是用Perl的5.8.4兼容的(如果不是我不想在这一点上升级的perl)

2),我如何应用该补丁定义在那个链接?

回答

3

首先,检查CPAN以查看当前版本的Tk是。在这个响应时,它是804.028,所以你的bug可能已经修复了。您可以检查Tk bug queue以查看报告的错误状态,但我不知道您的特定错误是否曾输入队列中。您也可以检查Changes文件以查看是否在此处提及您的问题。

如果你没有看到任何具体的东西,你可能会注意到你引用的消息的作者是Tk的维护者,所以很可能这个补丁已经被应用。 :)

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

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

如果你绝对是必须只适用这一个变化,下载你使用的Tk版本的源代码,应用补丁,并重建它。

+0

Michael,感谢您的评论。如果包含的话,我如何将Tk发行版从804.027升级到804.028?如果不是,我只想要补丁,我该怎么做你在最后一句中提出的建议?什么步骤? – Streamline 2010-05-21 21:53:09

+0

如果您正在运行ActivePerl,请使用随附的'ppm'实用程序。否则,请尝试'cpan' shell。如果一切都失败了,请下载发行版,解压缩,然后执行'make','make test','make install'跳舞。 – 2010-05-22 01:49:20