Módulos CPAN no Debian e distros GNU/Linux em geral

Tratará este arquivo, sobre como utilizar de diferentes formas os módulos CPAN no Debian, seja manualmente, via CPAN, via CPANminus ou empacotando. Referente às demais distros, tanto a forma manual, quanto ao CPAN e em último caso, ao CPANminus (se disponível nos repositórios) também se aplicam.

[ Hits: 16.582 ]

Por: edps em 27/04/2015 | Blog: https://edpsblog.wordpress.com/


Removendo módulos CPAN manualmente



Porque removê-los?

Em meu caso, remover os módulos CPAN se apoia ao fato de que já empacotei os mesmos tanto no Debian, quanto no Slackware, portanto, não preciso de um mesmo módulo instalado em 2 locais diferentes (todos vistos na imagem abaixo) no Slackware e de alguns para o caso do Debian.
Linux: Módulos CPAN no Debian e distros GNU/Linux em geral   Linux: Módulos CPAN no Debian e distros GNU/Linux em geral
O que nos leva ao tópico do post, é a dificuldade em remover tais módulos sem o uso de algum módulo extra do CPAN! Oras, se quero deixar meu sistema limpo, vou instalar mais trecos nele?

Soluções

Antes de começar informo que o foco deste tutorial é o uso do CPAN como root e não rodando-o localmente como usuário normal "local::lib", se este for o seu caso as coisas mudam de figura.

Abaixo, veremos diferentes métodos para remover os tais módulos.

1. O modo certo:

(rsrs) Caso alguém saiba como remover tais módulos do jeito correto, por favor me avisem! (kkk)

2. Via script:

Via script, podemos criar um script Perl, contendo o seguinte:

# uninstall_perl_module.pl from PerlTricks.com

use 5.14.2;
use ExtUtils::Installed;
use ExtUtils::Packlist;

# Exit unless a module name was passed
die ("Error: no Module::Name passed as an argument. E.G.\n\t perl $0 Module::Name\n") unless $#ARGV == 0;

my $module = shift @ARGV;

my $installed_modules = ExtUtils::Installed->new;

# iterate through and try to delete every file associated with the module
foreach my $file ($installed_modules->files($module)) {
    print "removing $file\n";
    unlink $file or warn "could not remove $file: $!\n";
}

# delete the module packfile
my $packfile = $installed_modules->packlist($module)->packlist_file;
print "removing $packfile\n";
unlink $packfile or warn "could not remove $packfile: $!\n";

# delete the module directories if they are empty
foreach my $dir (sort($installed_modules->directory_tree($module))) {
    print("removing $dir\n");
    rmdir $dir or warn "could not remove $dir: $!\n";
}

O script acima foi publicado originalmente em:
Salve-o com o nome que quiser, aqui atribui o nome "uninstall_perl_module.pl" tal como apresentado no link acima, salvei-o em /usr/local/bin e dei-lhe permissão de execução.

Logue-se como root, e entre no shell CPAN e instale os módulos ExtUtils::Installed e ExtUtils::Packlist.1

su
# perl -MCPAN -e shell

cpan[1]> install ExtUtils::Installed
cpan[2]> install ExtUtils::Packlist
cpan[3]> exit

# exit
exit
Linux: Módulos CPAN no Debian e distros GNU/Linux em geral   Linux: Módulos CPAN no Debian e distros GNU/Linux em geral
Daí, caso saiba qual módulo remover, use como exemplo:

sudo perl /usr/local/bin/uninstall_perl_module.pl App::cpanminus
Linux: Módulos CPAN no Debian e distros GNU/Linux em geral
Bem, resolve, mas não acho que ficou legal!

3. O modo tosco:

O modo tosco seria acessar a pasta do módulo, geralmente, salva em "#.cpan/build", como em /root/.cpan/build/File-DesktopEntry-0.08-rvcloY/, e rodar um:

# make uninstall

Somente isso já lhe daria o caminho das pedras, digo, quem remover, exemplo:

# make uninstall

Uninstall is unsafe and deprecated, the uninstallation was not performed.
We will show what would have been done.

unlink /usr/local/share/man/man3/File::DesktopEntry.3
unlink /usr/local/share/perl5/File/DesktopEntry.pm
unlink /usr/local/lib/perl5/auto/File/DesktopEntry/.packlist

Uninstall is unsafe and deprecated, the uninstallation was not performed.
Please check the list above carefully, there may be errors.
Remove the appropriate files manually.
Sorry for the inconvenience.


Como visto acima, todas as linhas começadas por "unlink", referem-se ao que foi instalado. Infelizmente, o "make uninstall" não fará o trabalho para você, daí bastaria remover cada arquivo individualmente:

# rm -fv /usr/local/share/man/man3/File::DesktopEntry.3
# rm -fv /usr/local/share/perl5/File/DesktopEntry.pm
# rm -fv /usr/local/lib/perl5/auto/File/DesktopEntry/.packlist

E pronto! Mas há um jeitinho melhor.

4. O modo bruto:

No modo dos brutos, as coisas funcionam perfeitamente, seja removendo apenas um módulo CPAN, como o ExtUtils:

find /usr/local/lib/perl5/auto/ExtUtils/ -name '*.packlist' -exec cat >> remove_extutils.txt {} \;
cat remove_extutils.txt | xargs -l1 sudo rm -fv
sudo rm -rf /usr/local/share/perl5/ExtUtils
sudo rm -rf /usr/local/lib/perl5/auto/ExtUtils
Linux: Módulos CPAN no Debian e distros GNU/Linux em geral   Linux: Módulos CPAN no Debian e distros GNU/Linux em geral   Linux: Módulos CPAN no Debian e distros GNU/Linux em geral
Ou todos os módulos instalados via CPAN:

find /usr/local/lib/perl5/auto/ -name '*.packlist' -exec cat >> remove_modules.txt {} \;
cat remove_modules.txt | xargs -l1 sudo rm -fv
sudo rm -rf /usr/local/lib/perl5
sudo rm -rf /usr/local/share/perl5
Linux: Módulos CPAN no Debian e distros GNU/Linux em geral   Linux: Módulos CPAN no Debian e distros GNU/Linux em geral
Querendo passar um pente-fino em /usr/local, podemos remover pastas vazias e checar se ficou algo estranho em /usr/local/bin, com:

*Antes de executar os comandos, leia a informação abaixo!!!

du -h /usr/local/lib/perl5
du -h /usr/local/share/perl5
du -h /usr/local/share/man
du -h /usr/local/man
sudo rm -rf /usr/local/lib/perl5
sudo rm -rf /usr/local/share/perl5
sudo rm -rf /usr/local/man
ls /usr/local/bin/
Linux: Módulos CPAN no Debian e distros GNU/Linux em geral
*Obviamente, sugiro que verifique todas as pastas acima antes de removê-las, isso porque, às vezes, instalamos pacotes da maneira tradicional:

# ./configure && make
# make install

E quando não especificamos a opção "prefix= do ./configure", é para /usr/local, onde geralmente esses programas são instalados!

Caso queira ganhar mais algum espaço em disco, remova também as pastas ".cpan" e ".cpanplus" no diretório do root:

sudo rm -rf /root/.cpanplus
sudo rm -rf /root/.cpan
Linux: Módulos CPAN no Debian e distros GNU/Linux em geral
Sistema limpo, divirtam-se! O mlocate agradece!

Referência


Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Usando da forma tradicional
   3. Via shell CPAN
   4. Via CPANminus
   5. Empacotando módulos CPAN no Debian
   6. Removendo módulos CPAN manualmente
   7. Conclusão
Outros artigos deste autor

JIGDO, atualização de uma imagem .iso

Configurando o modem ZTE MF626 com Vivo3G no Debian

Sabayon CoreCDX FluxBox 5.3, excelente!

WAJIG, gerenciamento avançado de pacotes em distros Debian-like

KernelCheck - Instalando o kernel mais recente em distros Debian-like e outras

Leitura recomendada

Programando em Perl (parte 2)

Um pouco de PERL

Programando em Perl (parte 1)

Comparação entre Tcl e Perl

Programando uma Intranet com Apache, MySQL e Perl (parte 1)

  
Comentários
[1] Comentário enviado por fabio em 27/04/2015 - 11:01h

Perl é o que há! Sempre foi minha linguagem predileta. Muitas ferramentas e outras linguagens utilizam o modelo de expressões regulares do Perl.

[2] Comentário enviado por edps em 27/04/2015 - 18:14h


[1] Comentário enviado por fabio em 27/04/2015 - 11:01h

Perl é o que há! Sempre foi minha linguagem predileta. Muitas ferramentas e outras linguagens utilizam o modelo de expressões regulares do Perl.


Obrigado pelo comentário, a mim (um leigo) me parece ser bem mais fácil de se trabalhar com Perl do que com outras linguagens a começar pelo fato de que seus módulos ajudam bastante.

Um abraço.

[3] Comentário enviado por mineirobr em 30/04/2015 - 10:18h

Para instalar o cpanminus pode fazer assim:
$ cpan App::cpanminus

depois para instalar os módulos:
$ cpanm Nome::Do::Modulo

cpanminus é muito mais rápido para instalar módulos e você pode instalar módulos que estão no github.

[4] Comentário enviado por edps em 30/04/2015 - 11:18h


[3] Comentário enviado por mineirobr em 30/04/2015 - 10:18h

Para instalar o cpanminus pode fazer assim:
$ cpan App::cpanminus

depois para instalar os módulos:
$ cpanm Nome::Do::Modulo

cpanminus é muito mais rápido para instalar módulos e você pode instalar módulos que estão no github.


Obrigado pelo complemento.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts