Casteele has asked for the wisdom of the Perl Monks concerning the following question:

Hi,

I am having this same problem with several packages (about ten out of some 2000+).. Before I go into the details, here's my setup..

Windows XP Home Edition, Build 2600.xpsp_sp2_gdr.070227-2254 ActivePerl v5.8.8, Binary Build 817 [257965], Mar 20 2006 17:54:25
(I doubt any more info is needed, but let me know if any helps..)

My problem is this: While trying to go through and update all my packages (with -file=.. and a file with the commands--but the problem persists even when I try it by hand), I have several packages that consistently gives me the follow error, which dumps out of PPM3 back to the command-line:

PPM::PPD::init: not a PPD and not a file

Here's the command-line copy+paste of just one of the problem packages and it's dependencies (all the others are almost identical in every way, except the packages and dependencies):

C:\Documents and Settings\casteele\ppm3>perl -MLWP::Debug=+ -S ppm3 -f +ile=ppm3-cmd.txt >> ppm3-cmd.log PPM::PPD::init: not a PPD and not a file: C:\Documents and Settings\casteele\ppm3>

Here's the contents of ppm3-cmd.txt (includes commands such as set, etc., to show my perl/ppm settings):

set rep rep desc 1 rep desc 2 rep desc 3 rep desc 4 rep desc 5 targ tree ConfigReader-Simple desc Array-Compare prop Array-Compare upg Array-Compare desc Sub-Uplevel prop Sub-Uplevel upg Sub-Uplevel desc Test-Builder-Tester prop Test-Builder-Tester upg Test-Builder-Tester desc Test-Exception prop Test-Exception upg Test-Exception desc Tree-DAG_Node prop Tree-DAG_Node upg Tree-DAG_Node desc Test-Warn prop Test-Warn upg Test-Warn desc ConfigReader-Simple prop ConfigReader-Simple upg ConfigReader-Simple

And here's the results file, ppm3-cmd.log (the ppm3 tracelog is further down):

case-sensitivity: 0 download-chunksize: 16384 fields: name version title abstract repository follow-install: 1 force-install: 0 install-verbose: 1 pager: profile-track: 0 prompt-context: 1 prompt-slotsize: 11 prompt-verbose: 1 remove-verbose: 1 sort-field: name tempdir: C:\TEMP trace-file: D:\Devel\Perl\ppm3.log trace-level: 9 upgrade-verbose: 1 verbose-startup: 1 Repositories: [1] A-ASPN [2] B-theory58 [3] C-bribes [4] I-roth [5] J-trouchelle [ ] D-soulcage58 [ ] E-esoft [ ] F-savage [ ] G-crazy58 [ ] H-jenda Describing Active Repository 1: Name: A-ASPN Location: http://ppm.ActiveState.com/PPM/ppmserver-5.8-windows.plex?ur +n:/PPM/Server/SQL Type: PPMServer 3.0 Describing Active Repository 2: Name: B-theory58 Location: http://theoryx5.uwinnipeg.ca/cgi-bin/ppmserver?urn:/PPMServe +r58 Type: PPMServer 2.0 Describing Active Repository 3: Name: C-bribes Location: http://www.bribes.org/perl/ppm/ Type: Webpage Describing Active Repository 4: Name: I-roth Location: http://www.roth.net/perl/packages Type: Webpage Describing Active Repository 5: Name: J-trouchelle Location: http://trouchelle.com/ppm/ Type: Webpage Targets: * 1. ActivePerl 5.8.8.817 ==================== ConfigReader-Simple 1.23 \__Test-Warn 0.0 |__Array-Compare 0.0 |__Sub-Uplevel 0.0 |__Test-Builder-Tester 0.0 |__Test-Exception 0.0 | \__Sub-Uplevel 0.13 | \__Tree-DAG_Node 0.0 ==================== ==================== Name: Array-Compare Version: 1.14 Author: Dave Cross (dave@dave.org.uk) Title: Array-Compare Abstract: Perl extension for comparing arrays. Location: A-ASPN Available Platforms: 1. MSWin32-x86-multi-thread-5.8 ==================== ==================== Name: Array-Compare Version: 1.14 Author: Dave Cross (dave@dave.org.uk) Title: Array-Compare Abstract: Perl extension for comparing arrays. InstDate: Sat Aug 18 20:08:26 2007 Location: http://ppm.ActiveState.com/PPM/ppmserver-5.8-windows.plex?ur +n:/PPM/Server/SQL Available Platforms: 1. MSWin32-x86-multi-thread-5.8 ==================== Array-Compare 1.14: up to date. ==================== Name: Sub-Uplevel Version: 0.16 Author: David Golden (dagolden@cpan.org) Title: Sub-Uplevel Abstract: apparently run a function in a higher stack frame Location: A-ASPN Available Platforms: 1. MSWin32-x86-multi-thread-5.8 ==================== ==================== Name: Sub-Uplevel Version: 0.16 Author: David Golden (dagolden@cpan.org) Title: Sub-Uplevel Abstract: apparently run a function in a higher stack frame InstDate: Sat Aug 18 20:08:44 2007 Location: http://ppm.ActiveState.com/PPM/ppmserver-5.8-windows.plex?ur +n:/PPM/Server/SQL Available Platforms: 1. MSWin32-x86-multi-thread-5.8 ==================== Sub-Uplevel 0.16: up to date. ==================== Name: Test-Builder-Tester Version: 1.01 Author: Mark Fowler (mark@twoshortplanks.com) Title: Test-Builder-Tester Abstract: test testsuites that have been built with Test::Builder Location: A-ASPN Available Platforms: 1. MSWin32-x86-multi-thread-5.8 ==================== ==================== Name: Test-Builder-Tester Version: 1.01 Author: Mark Fowler (mark@twoshortplanks.com) Title: Test-Builder-Tester Abstract: test testsuites that have been built with Test::Builder InstDate: Sat Aug 18 20:09:03 2007 Location: http://ppm.ActiveState.com/PPM/ppmserver-5.8-windows.plex?ur +n:/PPM/Server/SQL Available Platforms: 1. MSWin32-x86-multi-thread-5.8 ==================== Test-Builder-Tester 1.01: up to date. ==================== Name: Test-Exception Version: 0.24 Author: Adrian Howard (adrianh@quietstars.com) Title: Test-Exception Abstract: Test exception based code Location: A-ASPN Available Platforms: 1. MSWin32-x86-multi-thread-5.8 ==================== ==================== Name: Test-Exception Version: 0.24 Author: Adrian Howard <adrianh@quietstars.com> Title: Test-Exception Abstract: Test exception based code InstDate: Sun Aug 19 00:43:26 2007 Location: http://trouchelle.com/ppm/ Prerequisites: 1. Sub-Uplevel 0.13 Available Platforms: 1. MSWin32-x86-multi-thread-5.8 ==================== Test-Exception 0.24: new version 0.25 available in C-bribes ==================== Name: Tree-DAG_Node Version: 1.05 Author: Sean M. Burke (sburke@cpan.org) Title: Tree-DAG_Node Abstract: (super)class for representing nodes in a tree Location: A-ASPN Available Platforms: 1. MSWin32-x86-multi-thread-5.8 ==================== ==================== Name: Tree-DAG_Node Version: 1.05 Author: Sean M. Burke (sburke@cpan.org) Title: Tree-DAG_Node Abstract: (super)class for representing nodes in a tree InstDate: Sat Aug 18 20:09:41 2007 Location: http://ppm.ActiveState.com/PPM/ppmserver-5.8-windows.plex?ur +n:/PPM/Server/SQL Available Platforms: 1. MSWin32-x86-multi-thread-5.8 ==================== Tree-DAG_Node 1.05: up to date. ==================== Name: Test-Warn Version: 0.08 Author: Janek Schleicher (bigj@kamelfreund.de) Title: Test-Warn Abstract: Perl extension to test methods for warnings Location: A-ASPN Available Platforms: 1. MSWin32-x86-multi-thread-5.8 ==================== ==================== Name: Test-Warn Version: 0.08 Author: Janek Schleicher (bigj@kamelfreund.de) Title: Test-Warn Abstract: Perl extension to test methods for warnings InstDate: Sun Aug 19 00:40:58 2007 Location: http://ppm.ActiveState.com/PPM/ppmserver-5.8-windows.plex?ur +n:/PPM/Server/SQL Prerequisites: 1. Array-Compare 0.0 2. Sub-Uplevel 0.0 3. Test-Builder-Tester 0.0 4. Test-Exception 0.0 5. Tree-DAG_Node 0.0 Available Platforms: 1. MSWin32-x86-multi-thread-5.8 ==================== Test-Warn 0.08: new version 0.10 available in J-trouchelle ==================== Name: ConfigReader-Simple Version: 1.23 Author: brian d foy (bdfoy@cpan.org) Title: ConfigReader-Simple Abstract: Simple configuration file parser Location: A-ASPN Available Platforms: 1. MSWin32-x86-multi-thread-5.8 ==================== ==================== Name: ConfigReader-Simple Version: 1.23 Author: brian d foy (bdfoy@cpan.org) Title: ConfigReader-Simple Abstract: Simple configuration file parser InstDate: Sat Aug 18 20:10:18 2007 Location: http://ppm.ActiveState.com/PPM/ppmserver-5.8-windows.plex?ur +n:/PPM/Server/SQL Prerequisites: 1. Test-Warn 0.0 Available Platforms: 1. MSWin32-x86-multi-thread-5.8 ====================

Finally, here's the ppm3 tracelog:

D:\Devel\Perl\Perl5\bin\ppm3-bin: trace started Sun Aug 19 01:02:48 20 +07. PPM::UI::target_list() PPM::UI::target_list() PPM: target select ActivePerl 5.8.8.817 PPM::UI::target_list() PPM: settings PPM::UI::config_get(profile_enable) PPM::UI::config_get(tracefile) PPM::UI::config_get(downloadbytes) PPM::UI::config_get(tracelvl) PPM::UI::config_get(tempdir) PPM::UI::repository_list() PPM::UI::repository_list() PPM: repository PPM::UI::repository_list() PPM::UI::repository_list() PPM::UI::repository_list() PPM::UI::repository_list() PPM: repository desc 1 PPM::UI::repository_info(A-ASPN) PPM::UI::get_rep(A-ASPN) PPM::UI::repository_list() PPM::UI::repository_list() PPM: repository desc 2 PPM::UI::repository_info(B-theory58) PPM::UI::get_rep(B-theory58) PPM::UI::repository_list() PPM::UI::repository_list() PPM: repository desc 3 PPM::UI::repository_info(C-bribes) PPM::UI::get_rep(C-bribes) PPM::UI::repository_list() PPM::UI::repository_list() PPM: repository desc 4 PPM::UI::repository_info(I-roth) PPM::UI::get_rep(I-roth) PPM::UI::repository_list() PPM::UI::repository_list() PPM: repository desc 5 PPM::UI::repository_info(J-trouchelle) PPM::UI::get_rep(J-trouchelle) PPM: target PPM::UI::target_list() PPM: tree ConfigReader-Simple PPM::UI::get_rep(A-ASPN) PPM::UI::get_rep(B-theory58) PPM::UI::get_rep(C-bribes) PPM::UI::get_rep(I-roth) PPM::UI::get_rep(J-trouchelle) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::get_targ(PPM::Installer::Local=HASH(0x270cfb8)) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::get_rep(A-ASPN) PPM::UI::get_rep(B-theory58) PPM::UI::get_rep(C-bribes) PPM::UI::get_rep(I-roth) PPM::UI::get_rep(J-trouchelle) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::get_targ(PPM::Installer::Local=HASH(0x270cfb8)) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::get_targ(PPM::Installer::Local=HASH(0x270cfb8)) PPM::UI::get_targ(PPM::Installer::Local=HASH(0x270cfb8)) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::get_rep(A-ASPN) PPM::UI::get_rep(B-theory58) PPM::UI::get_rep(C-bribes) PPM::UI::get_rep(I-roth) PPM::UI::get_rep(J-trouchelle) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::get_targ(PPM::Installer::Local=HASH(0x270cfb8)) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::get_targ(PPM::Installer::Local=HASH(0x270cfb8)) PPM::UI::get_targ(PPM::Installer::Local=HASH(0x270cfb8)) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::get_rep(A-ASPN) PPM::UI::get_rep(B-theory58) PPM::UI::get_rep(C-bribes) PPM::UI::get_rep(I-roth) PPM::UI::get_rep(J-trouchelle) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::get_targ(PPM::Installer::Local=HASH(0x270cfb8)) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::get_targ(PPM::Installer::Local=HASH(0x270cfb8)) PPM::UI::get_targ(PPM::Installer::Local=HASH(0x270cfb8)) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::get_rep(A-ASPN) PPM::UI::get_rep(B-theory58) PPM::UI::get_rep(C-bribes) PPM::UI::get_rep(I-roth) PPM::UI::get_rep(J-trouchelle) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::get_targ(PPM::Installer::Local=HASH(0x270cfb8)) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::get_targ(PPM::Installer::Local=HASH(0x270cfb8)) PPM::UI::get_targ(PPM::Installer::Local=HASH(0x270cfb8)) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::get_rep(A-ASPN) PPM::UI::get_rep(B-theory58) PPM::UI::get_rep(C-bribes) PPM::UI::get_rep(I-roth) PPM::UI::get_rep(J-trouchelle) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::get_targ(PPM::Installer::Local=HASH(0x270cfb8)) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::get_targ(PPM::Installer::Local=HASH(0x270cfb8)) PPM::UI::get_targ(PPM::Installer::Local=HASH(0x270cfb8)) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::get_rep(A-ASPN) PPM::UI::get_rep(B-theory58) PPM::UI::get_rep(C-bribes) PPM::UI::get_rep(I-roth) PPM::UI::get_rep(J-trouchelle) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::get_targ(PPM::Installer::Local=HASH(0x270cfb8)) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::get_targ(PPM::Installer::Local=HASH(0x270cfb8)) PPM::UI::get_targ(PPM::Installer::Local=HASH(0x270cfb8)) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::get_rep(A-ASPN) PPM::UI::get_rep(B-theory58) PPM::UI::get_rep(C-bribes) PPM::UI::get_rep(I-roth) PPM::UI::get_rep(J-trouchelle) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::get_targ(PPM::Installer::Local=HASH(0x270cfb8)) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::get_targ(PPM::Installer::Local=HASH(0x270cfb8)) PPM::UI::get_targ(PPM::Installer::Local=HASH(0x270cfb8)) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM: describe Array-Compare PPM::UI::get_rep(A-ASPN) PPM::UI::get_rep(B-theory58) PPM::UI::get_rep(C-bribes) PPM::UI::get_rep(I-roth) PPM::UI::get_rep(J-trouchelle) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::get_targ(PPM::Installer::Local=HASH(0x270cfb8)) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM: properties Array-Compare PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::properties(ActivePerl 5.8.8.817, Array-Compare) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM: upgrade Array-Compare PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::properties(ActivePerl 5.8.8.817, Array-Compare) PPM::UI::get_rep(A-ASPN) PPM::UI::get_rep(B-theory58) PPM::UI::get_rep(C-bribes) PPM::UI::get_rep(I-roth) PPM::UI::get_rep(J-trouchelle) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::get_targ(PPM::Installer::Local=HASH(0x270cfb8)) PPM::UI::properties(ActivePerl 5.8.8.817, Array-Compare) PPM::UI::get_targ(PPM::Installer::Local=HASH(0x270cfb8)) PPM: describe Sub-Uplevel PPM::UI::get_rep(A-ASPN) PPM::UI::get_rep(B-theory58) PPM::UI::get_rep(C-bribes) PPM::UI::get_rep(I-roth) PPM::UI::get_rep(J-trouchelle) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::get_targ(PPM::Installer::Local=HASH(0x270cfb8)) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM: properties Sub-Uplevel PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::properties(ActivePerl 5.8.8.817, Sub-Uplevel) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM: upgrade Sub-Uplevel PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::properties(ActivePerl 5.8.8.817, Sub-Uplevel) PPM::UI::get_rep(A-ASPN) PPM::UI::get_rep(B-theory58) PPM::UI::get_rep(C-bribes) PPM::UI::get_rep(I-roth) PPM::UI::get_rep(J-trouchelle) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::get_targ(PPM::Installer::Local=HASH(0x270cfb8)) PPM::UI::properties(ActivePerl 5.8.8.817, Sub-Uplevel) PPM::UI::get_targ(PPM::Installer::Local=HASH(0x270cfb8)) PPM: describe Test-Builder-Tester PPM::UI::get_rep(A-ASPN) PPM::UI::get_rep(B-theory58) PPM::UI::get_rep(C-bribes) PPM::UI::get_rep(I-roth) PPM::UI::get_rep(J-trouchelle) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::get_targ(PPM::Installer::Local=HASH(0x270cfb8)) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM: properties Test-Builder-Tester PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::properties(ActivePerl 5.8.8.817, Test-Builder-Tester) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM: upgrade Test-Builder-Tester PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::properties(ActivePerl 5.8.8.817, Test-Builder-Tester) PPM::UI::get_rep(A-ASPN) PPM::UI::get_rep(B-theory58) PPM::UI::get_rep(C-bribes) PPM::UI::get_rep(I-roth) PPM::UI::get_rep(J-trouchelle) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::get_targ(PPM::Installer::Local=HASH(0x270cfb8)) PPM::UI::properties(ActivePerl 5.8.8.817, Test-Builder-Tester) PPM::UI::get_targ(PPM::Installer::Local=HASH(0x270cfb8)) PPM: describe Test-Exception PPM::UI::get_rep(A-ASPN) PPM::UI::get_rep(B-theory58) PPM::UI::get_rep(C-bribes) PPM::UI::get_rep(I-roth) PPM::UI::get_rep(J-trouchelle) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::get_targ(PPM::Installer::Local=HASH(0x270cfb8)) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM: properties Test-Exception PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::properties(ActivePerl 5.8.8.817, Test-Exception) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM: upgrade Test-Exception PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::properties(ActivePerl 5.8.8.817, Test-Exception) PPM::UI::get_rep(A-ASPN) PPM::UI::get_rep(B-theory58) PPM::UI::get_rep(C-bribes) PPM::UI::get_rep(I-roth) PPM::UI::get_rep(J-trouchelle) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::get_targ(PPM::Installer::Local=HASH(0x270cfb8)) PPM::UI::properties(ActivePerl 5.8.8.817, Test-Exception) PPM::UI::get_targ(PPM::Installer::Local=HASH(0x270cfb8)) PPM: describe Tree-DAG_Node PPM::UI::get_rep(A-ASPN) PPM::UI::get_rep(B-theory58) PPM::UI::get_rep(C-bribes) PPM::UI::get_rep(I-roth) PPM::UI::get_rep(J-trouchelle) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::get_targ(PPM::Installer::Local=HASH(0x270cfb8)) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM: properties Tree-DAG_Node PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::properties(ActivePerl 5.8.8.817, Tree-DAG_Node) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM: upgrade Tree-DAG_Node PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::properties(ActivePerl 5.8.8.817, Tree-DAG_Node) PPM::UI::get_rep(A-ASPN) PPM::UI::get_rep(B-theory58) PPM::UI::get_rep(C-bribes) PPM::UI::get_rep(I-roth) PPM::UI::get_rep(J-trouchelle) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::get_targ(PPM::Installer::Local=HASH(0x270cfb8)) PPM::UI::properties(ActivePerl 5.8.8.817, Tree-DAG_Node) PPM::UI::get_targ(PPM::Installer::Local=HASH(0x270cfb8)) PPM: describe Test-Warn PPM::UI::get_rep(A-ASPN) PPM::UI::get_rep(B-theory58) PPM::UI::get_rep(C-bribes) PPM::UI::get_rep(I-roth) PPM::UI::get_rep(J-trouchelle) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::get_targ(PPM::Installer::Local=HASH(0x270cfb8)) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM: properties Test-Warn PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::properties(ActivePerl 5.8.8.817, Test-Warn) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM: upgrade Test-Warn PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::properties(ActivePerl 5.8.8.817, Test-Warn) PPM::UI::get_rep(A-ASPN) PPM::UI::get_rep(B-theory58) PPM::UI::get_rep(C-bribes) PPM::UI::get_rep(I-roth) PPM::UI::get_rep(J-trouchelle) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::get_targ(PPM::Installer::Local=HASH(0x270cfb8)) PPM::UI::properties(ActivePerl 5.8.8.817, Test-Warn) PPM::UI::get_targ(PPM::Installer::Local=HASH(0x270cfb8)) PPM: describe ConfigReader-Simple PPM::UI::get_rep(A-ASPN) PPM::UI::get_rep(B-theory58) PPM::UI::get_rep(C-bribes) PPM::UI::get_rep(I-roth) PPM::UI::get_rep(J-trouchelle) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::get_targ(PPM::Installer::Local=HASH(0x270cfb8)) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM: properties ConfigReader-Simple PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::properties(ActivePerl 5.8.8.817, ConfigReader-Simple) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM: upgrade ConfigReader-Simple PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::properties(ActivePerl 5.8.8.817, ConfigReader-Simple) PPM::UI::get_rep(A-ASPN) PPM::UI::get_rep(B-theory58) PPM::UI::get_rep(C-bribes) PPM::UI::get_rep(I-roth) PPM::UI::get_rep(J-trouchelle) PPM::UI::get_targ(ActivePerl 5.8.8.817) PPM::UI::get_targ(PPM::Installer::Local=HASH(0x270cfb8)) PPM::UI::properties(ActivePerl 5.8.8.817, ConfigReader-Simple) PPM::UI::get_targ(PPM::Installer::Local=HASH(0x270cfb8))

I have pretty much tried everything I could think of, short of uninstalling all the problem packages and re-installing them--I did do this on a couple, which seemed to work just fine and those ones no longer give errors.. But I am hoping for a permanent solution that won't ever return, not a kludge/work-around. Unless this is the result of an install issue when I originally installed them--But several of the problem packages I use quite often and seem to work fine.

(Also, is there an easy way to get ppm/ppm3 to show the full URL to the ppd on searches/upgrades? I've been loading the web pages by hand, then searching and copy+pasting it from the page source..)

Any ideas, help, info, tips, etc., would be greatly appreciated! Thanks.

C. M.

PS.. As I write this:
For the ConfigReader-Simple package at least, when I load the ppd ( http://trouchelle.com/ppm/ConfigReader-Simple.ppd ) into my web browser, it appears to be blank/zero-length. I also get the same error for this particular package if I uninstall it then try to search and install it:

ppm:ActivePerl > sea ConfigReader-Simple Searching in Active Repositories 1. ConfigReader-Simple [1.23] ConfigReader-Simpl +e A-ASPN [http://ppm.ActiveState.com/PPM/ppmserver-5.8-w +indows.plex?urn~ 2. ConfigReader-Simple [1.24] ConfigReader-Simple Simple configurati +on file parser J-trouchelle [http://trouchelle.com/ppm/] ppm:ActivePerl :ConfigReade> ins 2 Package 2: PPM::PPD::init: not a PPD and not a file: C:\Documents and Settings\casteele\ppm3>
But this does not make sense, either--If the ppd is blank and causing the error, where is the search query getting it's version information from!?

Obviously, I am assuming that ppm gets it from reading the ppd file. If not, and it's getting it elsewhere, where do I go to find this out and what can I do to fix it? This also wouldn't explain the other packages with similar problems that I was able to uninstall/re-install from the ppd.. (Unfortunately, I don't remember which they were, and I wasn't logging at the time..)

Replies are listed 'Best First'.
Re: Problems with "PPM::PPD::init: not a PPD and not a file"
by syphilis (Archbishop) on Aug 19, 2007 at 09:36 UTC
    If the ppd is blank and causing the error, where is the search query getting it's version information from

    That's a damn good question - and I look forward to seeing an answer provided by someone who knows. Like you, I expected the information would be retrieved from the ppd file - but the ppd file in question certainly doesn't contain that information. I've looked at the ConfigReader-Simple.ppd in both IE7 and Firefox, and done an LWP::Simple::get(). It always shows up as empty. A "view source" in IE7 shows up some html, but I think IE7 is just making it up. In any case, the html doesn't contain any useful info for ppm.

    All I can think of is that either ppm finds another ConfigReader-Simple ppd file, or that ppm knows to look in the MSWin32-x86-multi-thread-5.8 folder (where it will find the zip files - whose names incorporate the version info).

    Neither alternative seems particularly likely to me ... but it's all I can think of. (And I don't feel like delving into the PPM source.)

    Incidentally, using ppm4 on build 822 I get:
    C:\_32>ppm search ConfigReader-Simple Downloading ActiveState Package Repository packlist...not modified 1: ConfigReader-Simple Simple configuration file parser Version: 1.23 Repo: ActiveState Package Repository 2: ConfigReader-Simple Simple configuration file parser Version: 1.25 Repo: trouchelle.com C:\_32>ppm install http://trouchelle.com/ppm/ConfigReader-Simple.ppd ppm install failed: No PPD found at http://trouchelle.com/ppm/ConfigRe +ader-Simpl e.ppd
    I notice there's quite a few empty (0k) ppd files at trouchelle. You might like to 'ppm install' more of them and see if there actually is a correlation between empty ppd files and that error you're getting.

    Cheers,
    Rob
    Update: When I added trouchelle to the ppm repo list I got the following output:
    C:\_32>ppm repo add http://trouchelle.com/ppm/ Downloading ActiveState Package Repository packlist...done Updating ActiveState Package Repository database...done Downloading trouchelle.com packlist...done Updating trouchelle.com database...done Repo 2 added.
    I don't know where those packlists are kept ... but perhaps that's what 'ppm search' uses ?

      Well, it does appear to be the problem with that particular package, and a few of the others. I am still digging around getting all the info together on which packages this is the problem--and which ones have valid PPD's but still error out (some still seem to).

      On the plus side, I did figure out where it's getting the version information from: There were a couple XML and PPM files amongst all the PPDs.. The XML includes what looks like each of the full SOFTPKG entries for the entire repository (this is what normally goes in each PPD, right?), and the PPM files have summary information (I'm guessing to aid in searching).

      I am starting to wonder if maybe this particular package problem is related to how and when the trouchelle repository (and possibly others) update their stores; The information seems disjoint between the XML and PPM files. For example, the ConfigReader-Simple package lists in one as version 1.24, and in another as 1.25. (The site seems to have the 1.23, 1.24 and 1.25 ZIP files, as well. Just no valid PPD file for them.)

      Is there some perlmonk out there who can confirm this.. or better yet, suggest some solution? I am wary of fiddling with the internals of the PPM code--But it would certainly be nice if I could modify PPM to print the error, then continue processing the rest of the commands instead of dumping me back to the command-line with only half the packages processed. (Maybe it's even possible to "build" a valid PPD from the package.xml file? It looks like a complete SOFTPKG entry..)

      One more last minute note, again as I'm writing this (I keep working in a command window as I write ;-)).. Some of the packages which previously processed OK are now showing this error, and some of the ones which previously had errors are now working OK. Just more reason I'm starting to think it's a problem with de-sync during the rep's update process..

        I did figure out where it's getting the version information from

        Yes, http://trouchelle.com/ppm/package.xml seems to contain the info ... well spotted. But why did your search report version 1.24 of ConfigReader-Simple, and not version 1.25 ?

        Cheers,
        Rob
      0k files are error, please report
        0k files are error, please report

        Done. (Sent an email, as that was the only reporting mechanism I could find.)

        Cheers,
        Rob
Re: Problems with "PPM::PPD::init: not a PPD and not a file"
by randyk (Parson) on Aug 19, 2007 at 17:19 UTC
    The preceding exchanges between you and Rob does I think point to the problem - perhaps to summarize:
    • ActiveState builds 817 and below (ppm3) use summary.ppm and searchsummary.ppm files, if they are available in a repository, to provide a list of ppm packages; ActiveState builds 818 and above (ppm4) use a package.xml or perhaps package.lst file for the same purpose. These are there to speed up searches, as otherwise ppm will build up a list of ppd files manually, which is slow over the net for large repositories.
    • The trouchelle repository, from looking at the timestamps of the various files, appears not to be updating these summary files for some reason; for example, the ppd package for Devel-Timer has a timestamp of 14-Aug-2007, but the searchsummary.ppm file has a timestamp of 09-Feb-2007. This explains the version mismatch you discovered.
    • Furthermore, there does seem to be a problem with the ConfigReader-Simple file in particular, which is empty; in most modern browsers, it should display the information (eg, see Config-Yacp). This is the cause of the not a PPD and not a file error.
    There's not really much you can do from the client side to fix these problems; informing Serguei, as you've done, would be the best course of action.

    Update: Both the problems with ConfigReader-Simple and the update of the package.xml file have now been fixed in the trouchelle repository.