This question about Installation of Foswiki: More info required

Undefined subroutine Foswiki::Request::rearrange

I have been successfully using 1.1.9. I downloaded 2.0.2, resolved missing perl modules and now I get
Undefined subroutine Foswiki::Request::rearrange

when I try foswiki/Main (or System or whatever) or bin/configure. Nothing is written in event.log or the apache log. I am running OSX Yosemite. I don't know what to do next to complete the installation and move my topics to 2.0.2.

-- TheodoreMankovich - 24 Oct 2015

Can you find out what version of CGI and perl is installed? It appears that Perl is getting confused and trying to call Request::rearrange instead of CGI::Util::rearrange. The following diff makes it explicit, and should avoid the issue.

diff --git lib/Foswiki/Request.pm Foswiki/Request.pm
index 071c736..949c790 100644     
--- lib/Foswiki/Request.pm
+++ lib/Foswiki/Request.pm
@@ -264,7 +264,7 @@ Reasonably compatible with CGI corresponding method. Doesn't support
 sub url {
     my ( $this, @p ) = @_;
 
-    my ( $relative, $absolute, $full, $base, $path_info, $query ) = rearrange(
+    my ( $relative, $absolute, $full, $base, $path_info, $query ) = CGI::Util::rearrange(
         [
             qw(RELATIVE ABSOLUTE FULL BASE), [qw(PATH PATH_INFO)],
             [qw(QUERY_STRING QUERY)],
@@ -455,7 +455,7 @@ sub multi_param {
 sub param {
     my ( $this, @p ) = @_;
 
-    my ( $key, @value ) = rearrange( [ 'NAME', [qw(VALUE VALUES)] ], @p );
+    my ( $key, @value ) = CGI::Util::rearrange( [ 'NAME', [qw(VALUE VALUES)] ], @p );
 
     # param() - just return the list of param names
     return @{ $this->{param_list} } unless defined $key;
@@ -504,7 +504,7 @@ sub cookie {
     eval { require CGI::Cookie; 1 } or throw Error::Simple($@);
     my ( $this, @p ) = @_;
     my ( $name, $value, $path, $secure, $expires ) =
-      rearrange( [ 'NAME', [qw(VALUE VALUES)], 'PATH', 'SECURE', 'EXPIRES' ],
+      CGI::Util::rearrange( [ 'NAME', [qw(VALUE VALUES)], 'PATH', 'SECURE', 'EXPIRES' ],
         @p );
     unless ( defined $value ) {
         return keys %{ $this->{cookies} } unless $name;
@@ -607,7 +607,7 @@ Foswiki::Response =header= method.
 
 sub header {
     my ( $this, @p ) = @_;
-    my ( $key, @value ) = rearrange( [ 'NAME', [qw(VALUE VALUES)] ], @p );
+    my ( $key, @value ) = CGI::Util::rearrange( [ 'NAME', [qw(VALUE VALUES)] ], @p );
 
     return keys %{ $this->{headers} } unless $key;
     $key =~ tr/_/-/;

If your system has the "patch" utility installed, you can save this patch to a file named request.patch in the root of your foswiki installation. Then execute the following command:
patch -p0 < request.patch

-- GeorgeClark - 24 Oct 2015

Thanks. Some progress but not there yet. I applied the patch successfully. Now it gives me: Undefined subroutine &CGI::Cookie::unescape called My CGI is 3.63 perl is 5.18.2

-- TheodoreMankovich - 25 Oct 2015

I have no idea what's going on. CGI::Cookie::unescape() is actually CGI::Util::unescape, and it's the same patched above, but this time internal to CGI::Cookie. CGI::Cookie calls unescape and perl is picking up the wrong location. But since it's internal to CGI, I don't have a patch to suggest.

-- GeorgeClark - 25 Oct 2015

I had to install CGI::Session for 2.0.2. I used cpanm. It installed version 4.48. CGI.pm (version 3.63) on the other hand came with OSX and it is located in /System/Library/Perl/5.18. Session was installed in /Library/WebServer/Documents/Foswiki-2.0.2/lib/CPAN/lib/perl5/CGI/Session.pm. Is there some incompatability there. Maybe I should install all the needed CGI modules from cpanm. Should I try that?

-- TheodoreMankovich - 25 Oct 2015
 

QuestionForm edit

Subject Installation of Foswiki
Extension
Version Foswiki 2.0.2
Status More info required
Related Topics
Topic revision: r5 - 25 Oct 2015, TheodoreMankovich - This page was cached on 18 Oct 2018 - 06:20.

The copyright of the content on this website is held by the contributing authors, except where stated elsewhere. See Copyright Statement. Creative Commons License    Legal Imprint    Privacy Policy