Como desfazer uma instalação acidental de todos os módulos Perl?

8

Eu estava tentando atualizar meus módulos Perl através do CPAN, mas não forneci um nome de módulo / regex para atualizar perl -MCPAN -e 'upgrade':; Só posso assumir o pior (que parece ser suportado pela saída de perldoc perllocal), ou seja, todos os módulos Perl do CPAN estão instalando.

Como posso desfazer essa bagunça? Suponho que posso remover /usr/local/share/perl, mas quais são as implicações disso?

Edit: Eu ainda tenho 95% de espaço livre no disco rígido, por isso não é uma grande preocupação. Só não quero muita confusão desnecessária. Estou pensando rmnesse diretório, realizando dpkg --purge perle refazendo o apt-getprocesso de instalação do CPAN. Mas é realmente necessário ou posso apenas remover os módulos desnecessários /usr/local/share/perl?

paulrehkugler
fonte
Algumas pessoas acham que não é uma boa ideia excluir diretamente arquivos (e pastas) do sistema. Talvez seja melhor usar coisas como o apt-getSynaptic para que o sistema faça a exclusão completa e atualize os bancos de dados necessários.
4
@ vasa1 Os módulos Perl instalados no CPAN não são rastreados dessa maneira. O diretório em que os módulos residem provavelmente precisa ser excluído. Ou é preciso excluí-los manualmente através do CPAN e é um cr * pshoot se eles obedecem a uma diretiva de desinstalação ou mesmo a um make uninstallcomando. Infelizmente, é um sistema de gerenciamento de pacotes completamente diferente. stackoverflow.com/questions/2626449/...
Kevin Bowen
@maggotbrain, obrigado! Eu não sabia disso. (A única Perl eu uso para coisas pequenas vem com o OS.)

Respostas:

5

Olhando isso um pouco mais de perto, não acho que você precise ou deva excluir todos os diretórios ou arquivos do seu sistema.

A execução do comando a perl -MCPAN -e 'upgrade'partir da linha de comando não instalará módulos adicionais no seu sistema.

Ele apenas tentará atualizar os módulos instalados, através do sistema de gerenciamento de pacotes CPAN, e não através do Synaptic .

Isso é semelhante a executar o comando 'r' e, em seguida, executar o comando upgrade no cpan[1]>prompt. Veja aqui .

CPAN e Synaptic são dois sistemas de gerenciamento de pacotes separados e distintos.

Isso não instalará todos os módulos Perl possíveis do CPAN. Nem modificará o pacote de sistema existente dB. Então, você pode definitivamente reverter isso com segurança.

No entanto, isso ainda é potencialmente arriscado se um aplicativo ou seu sistema depender de uma versão específica de um módulo Perl.

Se você interrompeu o processo de atualização, é provável que você tenha evitado prejudicar seu sistema.

Opções de recuperação:

Em uma linha de comandos, inicie cpane execute o comando r para ver a lista de módulos instalados e as atualizações disponíveis. Por exemplo, aqui está a saída abreviada do meu cpan:

cpan[7]> r

Package namespace         installed    latest  in CPAN file
App::Cpan                    1.5701      1.61  BDFOY/App-Cpan-1.61.tar.gz
DBD::mysql                    4.020     4.022  CAPTTOFU/DBD-mysql-4.022.tar.gz
DBI                           1.616     1.623  TIMB/DBI-1.623.tar.gz
DB_File                       1.821     1.827  PMQS/DB_File-1.827.tar.gz
Error                       0.17010   0.17019  SHLOMIF/Error-0.17019.tar.gz
Eval::Closure                  0.06      0.08  DOY/Eval-Closure-0.08.tar.gz
....

Veja o Eval::Closuremódulo, para este exemplo. Digamos que você deixe o perl -MCPAN -e 'upgrade'comando concluir e agora você tem a versão 0.08 instalada.

Observando o Synaptic, nesse caso, ele mostrará que a versão mais recente no repositório ainda será 0,06 (0,06-1, especificamente, na minha instância).

Você pode reverter para a versão do sistema executando o seguinte comando:

sudo apt-get install --reinstall libeval-closure-perl

Se você instalou algum módulo Perl manualmente e deseja revertê-los para uma versão anterior, precisará baixá-los novamente (no source.cpan.org ou em outro local) e reinstalá-los manualmente.

Para resumir: A atualização de módulos Perl no CPAN não deve afetar o repositório do sistema.

Boa sorte. Não entre em pânico.

Kevin Bowen
fonte
Excelente e completa resposta! "Não entre em pânico" é a frase-chave aqui. Eu vi muitos resultados e li sobre o uso de argumentos para especificar o módulo, então tirei conclusões muito rapidamente. I foi surpreendido ao descobrir que eu usei quase nenhum espaço no HD, mas eu ainda vi alguns módulos que eu não reconheci (provavelmente por causa das dependências). É bom saber que isso não exige trabalho para mim!
paulrehkugler
0

Eu recomendaria fazer: apt-get remove <installed-packages> && apt-get autoremove(para remover dependências) && apt-get purge <installed-packages>(para remover os arquivos de configuração), então você pode remover as pastas que você não precisa, mas isso já deve ser feito para você :)

Stefan
fonte
2
O OP fez isso através do CPAN. Uma limpeza não vai ajudar, pois esses módulos não estão sob gerenciamento de pacotes.
precisa