Re: Perl install problems OSX 10.4.11
[email protected] (Mine)
| Newsgroups | perl.macosx |
|---|---|
| Message-ID | <[email protected]> |
Hi, Thanks to all who have responded.
I have tried Packy Anderson suggestion but I found that some modules
stated
that they only come as part of Perl 5.10.1. If I try to install them,
it seem that
they want to be installed in a location other than that which I have
specified.
I have Perl 5.10.1 installed but I don't know how set my environment
so get_iplayer to use it.
MacPorts has set my environment to export PATH=/opt/local/bin:/opt/
local/sbin:$PATH
so the version of Perl (5.8.8) installed by MacPorts is being used by
get_iplayer.
Is it possible to add the Perl 5.10.1 path to the environment so i
don't loose the MacPort option.
I have reinstall Apple's developer tools from my system install disk.
Thanks,
Terrence
On 14 Sep 2009, at 19:41, Alan Fry wrote:
> Hi Terrence,
>
> On 14 Sep 2009, at 13:04, Mine wrote:
>
>> I think the problem is probably to do with my Perl install. I
>> looked in /System/Library/Perl/
>> but the Perl folder contained 5.8.6 not 5.8.8. I could not find
>> any of the following:
>> Fcntl
>> HTML
>> HTTP
>> LWP
>
> I have one machine here which is running 10.4.11 and, as you say,
> it has Perl 5.8.6 and also is missing the modules you list above.
>
> If it were me I would stick with the Apple install and, as Packy
> Anderson has suggested, go to CPAN and download the missing modules.
>
>> I previously installed some applications using MacPorts, and it
>> appears that there is an
>> install of Perl 5.8.8 in /opt/local/bin/.
>>
>> Over the weekend still trying to solve the problem I also
>> installed Perl 5.10.1 in an attempt
>> to upgrade my system Perl install. That is in /usr/local/bin/.
>>
>> I also searched /usr/local/lib/perl5/5.10.1/ and /opt/local/lib/
>> perl5/5.8.8/ and it would appear
>> that the MacPorts install is the most complete but I could not
>> find an LWP directory or HTTP,
>> and I was not sure where to look for URI. The HTML directory
>> contained entities.pm, and
>> headerParser.pm but no Cookies
>
> I hate multiple versions of Perl, unless there is some compelling
> reason for having a newer one, because of the confusion it can
> cause. In the case of 'get_iplayer.pl', so far as I can see, there
> is no reason to want any newer version of Perl than 5.8.6.
>
>> Is it possible to upgrade the system Perl install to a full
>> version of Perl 5.8.8?
>
> I don't think there is any such thing really -- one is always
> encountering scripts which use modules one hasn't got. Then it's
> off to CPAN to repair the omission.
>
> Kind regards,
>
> Alan
>
>> On 14 Sep 2009, at 11:09, Alan Fry wrote:
>>
>>>
>>> On 13 Sep 2009, at 03:46, Doug McNutt wrote:
>>>
>>>> At 23:22 +0100 9/12/09, Mine wrote:
>>>>> Hi,
>>>>>
>>>>> Thanks for your excellent response, makes installing so easy
>>>>> assuming I did it correctly.
>>>>> I think everything that was required is installed, but I am not
>>>>> sure everything was installed
>>>>> in the right location.
>>>>>
>>>>> It appears that Perl 5.10.1 was installed and all the modules
>>>>> I installed are associated with
>>>>> Perl 5.10.1. When I try to run the get_iplayer PVR module I get
>>>>> the following error:
>>>>> Can't locate loadable object for module HTML::Parser in @INC
>>>>> (@INC contains: /opt/local/lib/perl5/5.8.8/darwin-2level
>>>>> (I have abbreviated the error message)
>>>>>
>>>>> And when I enter perl -v I get the following:
>>>>> This is perl, v5.8.8 built for darwin-2level
>>>>>
>>>>> So the system does not see the Perl 5.10.1 install. Can
>>>>> someone please tell me if there is a
>>>>> was to install the modules so they relate to perl, v5.8.8, or
>>>>> point get_iplayer to use Perl 5.10.1.
>>>>>
>>>>
>>>>
>>>> I suspect that Apple's perl is 5.8.8 and it is installed in /usr/
>>>> bin. It needs to stay there because Apple's updates may depend
>>>> on it. Installing 5.10.1 in /usr/bin/ replacing 5.8.8 is not
>>>> recommended.
>>>>
>>>> I also suspect that perl 5.10 is installed in /usr/local/bin but
>>>> that might be different like /opt/bin depending on just how you
>>>> installed it.. Look around for it. /opt/local/lib/ sounds
>>>> unlikely to me.
>>>>
>>>> You are probably going to make a change to your PATH environment
>>>> variable to make the directory that perl 5,10 resides in appear
>>>> before /usr/bin.
>>>>
>>>> A shell command like:
>>>> setenv PATH /usr/local/bin:$PATH # csh
>>>>
>>>> PATH=/usr/local/bin:$PATH # something like this in bash
>>>> export PATH
>>>>
>>>> You can also specify PATH in a startup file
>>>> $HOME/.MacOSX/environment.plist.
>>>> but you'll have to create that including the .MacOSX directory
>>>> unless it's already there. There are some instructions on
>>>> Apple's web site. Ask if you'd like a sample.
>>>>
>>>> @INC is a perl array that lists directories in which modules can
>>>> be found. There are a bunch of standard locations relative to
>>>> the directory that perl itself lives in but you can add more
>>>> directories by setting the PERL5LIB environment variable to a
>>>> PATH-like list of other directories. That too can be done in
>>>> environment.plist.
>>>>
>>>> It's a bit hard to understand why iplayer doesn't have an
>>>> installation script or at least some less geeky instructions for
>>>> users.
>>>
>>> I am puzzled why the original poster is having problems with
>>> 'get_iplayer'. Out of curiosity I downloaded it and find it runs
>>> fine here on a standard Apple Perl install. Regrettably I have
>>> deleted the original post but I recollect the writer said he was
>>> not a frequent user of Perl? So I wondered if the following
>>> thoughts might be helpful.
>>>
>>> 'get_iplayer.pl' is just a 272KB script (272KB) which can be put
>>> anywhere convenient and there is excellent documentation for it
>>> on the download site. Just for starters it is convenient to park
>>> it on the desktop.
>>>
>>> The first thing to do is set the executable flag by the following
>>> line in Terminal.app
>>> chmod +x <full_path_to_'get_iplayer'>
>>> -- it being understood that the easiest way to get the
>>> <full_path_to_'get_iplayer'> is just to drag 'get-iplayer.pl>
>>> from where it is on the Desktop into the Terminal window.
>>>
>>> The next thing is simply to put
>>> <full_path_to_'get_iplayer'>
>>> as the command line in Terminal (on line of course) and it should
>>> then list all available BBC TV files in alphabetical order. If it
>>> does not, then some investigation is called for.
>>>
>>> To do this it makes life very much easier if the hidden folders
>>> (containing Perl and its modules) are made visible. To this
>>> execute the following in Terminal:
>>> /Developer/Tools/SetFile -a v 'full-path-name'
>>> and then:
>>> killall "Finder"
>>> For 'full path name put successively, /bin, /Library, /sbin, /
>>> System and /usr. (The process can be reversed by running the line
>>> again with the lower-case 'v' replaced by an upper-case 'V'.)
>>>
>>> Now 'get_iplayer.pl' starts with the 'shebang' "#!/usr/bin/perl".
>>> So go to '/usr/bin' (now visible) and look for 'perl' -- it will
>>> surely be there.
>>>
>>> The script 'uses' the following:
>>>
>>> use Env qw[@PATH];
>>> use Fcntl;
>>> use File::Copy;
>>> use File::Path;
>>> use File::stat;
>>> use Getopt::Long;
>>> use HTML::Entities;
>>> use HTTP::Cookies;
>>> use HTTP::Headers;
>>> use IO::Seekable;
>>> use IO::Socket;
>>> use LWP::ConnCache;
>>> use LWP::UserAgent;
>>> use POSIX qw(mkfifo);
>>> use Time::Local;
>>> use URI;
>>> use POSIX qw(:termios_h);
>>>
>>> So, go to /System/Library/Perl/5.8.8 and look down the list to
>>> see that all these things are present. I would be astonished if
>>> any are missing in an Apple standard Perl install, but in that
>>> unlikely event, I would think the simplest thing would be to
>>> download the missing module from CPAN and pop it in. (On Mac OS X
>>> 10.4.* it might be 5.8.4 (?) I think, but that shouldn't matter
>>> at all -- the script should be quite happy with that version).
>>>
>>> The next thing to check is that /System/Library/Perl is listed in
>>> @INC. Run the following in Terminal:
>>> perl -e 'foreach (@INC) {print"$_\n"}'
>>> In the unlikely event it is not in the list, then add it to @INC.
>>>
>>> I hope these notes might be helpful to someone relatively unused
>>> to Perl and apologise if I appear, so to speak, to be trying to
>>> teach my grandmother to suck eggs...
>>>
>>> Alan Fry
>>>
>>> (PS I am afraid I shall be away for ten days from tomorrow and
>>> unable to respond until I get back.)
>>>
>>>
>>>
>>>
>>>
>>
>