黃家億 黃家億 - 4 months ago 18
Perl Question

perl sdl module install fail

i'm used ubuntu 14.04 lts
.
and,the module already download



1:Keyboard input

$ sudo -s cpan SDL 1>stdout.txt 2>stderr.txt


stdout.txt:

1 Reading '/home/freakcoco/.cpan/Metadata'
2 Database was generated on Fri, 04 Sep 2015 16:29:02 GMT
3 Running install for module 'SDL'
4 Checksum for /home/freakcoco/.cpan/sources/authors/id/F/FR/FROGGS/SDL-2.546.tar.gz ok
5 ---- Unsatisfied dependencies detected during ----
6 ---- FROGGS/SDL-2.546.tar.gz ----
7 Alien::SDL [build_requires]
8 Running install for module 'Alien::SDL'
9 Checksum for /home/freakcoco/.cpan/sources/authors/id/F/FR/FROGGS/Alien-SDL-1.446.tar.gz ok
10 Configuring F/FR/FROGGS/Alien-SDL-1.446.tar.gz with Build.PL
11 Welcome to Alien::SDL module installation
12 -----------------------------------------
13 checking operating system... linux
14 checking for cc... yes
15 checking build system type... x86_64-linux-gnu-thread-multi
16 checking platform specific module... using 'My::Builder::Unix'
17 Warning: No success on command[/usr/bin/perl Build.PL --installdirs site]
18 FROGGS/Alien-SDL-1.446.tar.gz
19 /usr/bin/perl Build.PL --installdirs site -- NOT OK
20 FROGGS/SDL-2.546.tar.gz
21 Has already been unwrapped into directory /home/freakcoco/.cpan/build/SDL-2.546-1przxQ
22 Warning: Prerequisite 'Alien::SDL => 1.446' for 'FROGGS/SDL-2.546.tar.gz' failed when processing 'FROGGS/Alien-SDL-1.446.tar.gz' with 'writemakefile => NO '/usr/bin/perl Build.PL --installdirs site' returned status 512'. Continuing, but chances to succeed are limited.
23 Configuring F/FR/FROGGS/SDL-2.546.tar.gz with Build.PL
24 Warning: No success on command[/usr/bin/perl Build.PL --installdirs site]
25 FROGGS/SDL-2.546.tar.gz
26 /usr/bin/perl Build.PL --installdirs site -- NOT OK


stderr.txt:

1 Unknown option: installdirs
2 Too early to specify a build action 'site'. Do 'Build site' instead.
3 Can't locate Alien/SDL.pm in @INC (you may need to install the Alien::SDL module) (@INC contains: inc /etc/perl /usr/local/lib/perl/5.18.2 /usr/local/share/perl/5.18.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.18 /usr/share/perl/5.18 /usr/local/lib/site_perl .) at Build.PL line 12.
4 BEGIN failed--compilation aborted at Build.PL line 12.


2:Keyboard input (install the Alien::SDL module)

$ sudo -s cpan SDL 1>stdout2.txt 2>stderr2.txt


stdout2.txt

1 Reading '/home/freakcoco/.cpan/Metadata'
2 Database was generated on Fri, 04 Sep 2015 16:29:02 GMT
3 Running install for module 'Alien::SDL'
4 Checksum for /home/freakcoco/.cpan/sources/authors/id/F/FR/FROGGS/Alien-SDL-1.446.tar.gz ok
5 Configuring F/FR/FROGGS/Alien-SDL-1.446.tar.gz with Build.PL
6 Welcome to Alien::SDL module installation
7 -----------------------------------------
8 checking operating system... linux
9 checking for cc... yes
10 checking build system type... x86_64-linux-gnu-thread-multi
11 checking platform specific module... using 'My::Builder::Unix'
12 Warning: No success on command[/usr/bin/perl Build.PL --installdirs site]
13 FROGGS/Alien-SDL-1.446.tar.gz
14 /usr/bin/perl Build.PL --installdirs site -- NOT OK


stderr2.txt:

1 Unknown option: installdirs
2 Too early to specify a build action 'site'. Do 'Build site' instead.

Answer

This might be a bug in Alien::SDL and its use of Getopt::Long (a similar issue was fixed here).

You can try this workaround:

If you run sudo cpan and in that shell o conf mbuildpl_arg, you should get something like this:

    mbuildpl_arg       [--installdirs site]
Type 'o conf' to view all configuration items

If that is the case, run o conf mbuild_arg installdirs=site (which should output mbuildpl_arg [installdirs=site]), then o conf commit, then exit the cpan shell. I believe that should bypass the option parsing issue.