Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris

Re: Re: A Guide to Installing Modules

by Anonymous Monk
on Dec 29, 2001 at 06:45 UTC ( #135052=note: print w/replies, xml ) Need Help??

in reply to Re: A Guide to Installing Modules
in thread A Guide to Installing Modules

How do you uninstall a module ?

Replies are listed 'Best First'.
Re: Re: Re: A Guide to Installing Modules
by PodMaster (Abbot) on Nov 08, 2002 at 11:54 UTC
    If the module was installed in a normal fashion (perl Makefile.PL ...), it should've left a .packlist file.

    Then you just use ExtUtils::Installed (you could use File::Find, but why go through the trouble when somebody already done it)

    use ExtUtils::Installed; my $inst = ExtUtils::Installed->new(); print "$_\n" for $inst->files('CGI'); =head1 on my machine, I get C:\Perl\lib\CGI\ C:\Perl\lib\CGI\ C:\Perl\lib\ C:\Perl\lib\CGI\ C:\Perl\lib\CGI\ C:\Perl\lib\CGI\ C:\Perl\lib\CGI\ C:\Perl\lib\CGI\ C:\Perl\lib\CGI\ =cut # and now for the "deletion" part print "unlinking ", unlink( $inst->files('CGI') );

    Hmm, works just fine for me on various perls/systems, what exactly did you try, and what version of ExtUtils::Packlist/ExtUtils::Installed do you have?

    How did you install Image::Magick?

    I have used CPAN to install modules and tested this, and it all works out as expected. I suspect one of the ExtUtils modules you're using is messed up. Seeing how you're still getting a file list, a workaround is easy (use File::Find to locate those files in @INC and acquire absolute paths).

    ** The Third rule of perl club is a statement of fact: pod is sexy.

      I looked into it some further using the following:
      #!/usr/bin/perl -w use strict; use ExtUtils::Installed; my $inst = ExtUtils::Installed->new(); print map "$_\n", @ARGV ? map $inst->files($_), @ARGV : $inst->modules(); __END__
      I got the same pathless reply for any module I checked - bar Perl itself. All additional modules were installed using CPAN. In reply to your requests:

      Makeshifts last the longest.

      Hmm. On my 5.6.1 it looks like this: autosplit.ix Image::Magick.3
      Not really suitable to feed it into unlink..

      Makeshifts last the longest.

Re: Re: Re: A Guide to Installing Modules
by Fastolfe (Vicar) on Dec 29, 2001 at 09:44 UTC
    Why would you need to?

    I don't believe there are any mechanisms available to completely uninstall a module (assuming it wasn't installed with a package management system like RPM). If you just want to make a module unavailable to scripts, just find and delete the file.

      I found at least one good reason to do this: if the code you are writing tests whether a module is available (through an eval { require Module;} and defaults to a less-than-optimal-but-acceptable behaviour if the eval returns an error. Then you need to test both cases, with and without the module. A workaround is to wrap the eval in a test controlled by an environment variable, so when testing you can pretend that the module was not here. This is not perfect (the module could be imported by an other part of yur code or by an other module) but it is usually the easiest way to "desinstall" a module.

        In this situation I would simply modify my code to allow me to test both situations by only requiring the module if a certain flag was set (or unset). Then I could just flip the value of the flag whenever I wanted to test the other bit of code. Certainly easier than uninstalling/reinstalling modules.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://135052]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (8)
As of 2017-08-23 08:20 GMT
Find Nodes?
    Voting Booth?
    Who is your favorite scientist and why?

    Results (349 votes). Check out past polls.