Подтвердить что ты не робот

Удалите все модули perl, установленные cpan

Вчера мне захотелось протестировать какое-то программное обеспечение и в документации, о которой говорилось, для установки мне просто нужно было ввести

cpan -i Software

Я никогда не использовал cpan, я просто знаю, что это менеджер пакетов perl. (Является ли это??) Однако оказалось, что мне нужны нагрузки зависимостей и глупы, как и я, я только что установил их все. (Во-первых, мне пришлось настроить cpan, который задал мне много вопросов). Короче говоря, я просто хочу снова удалить все это. Я немного искал googled, и похоже, что у cpan нет процедуры удаления, особенно для всех пакетов одновременно. Могу ли я просто удалить какую-либо директорию или у меня возникнут проблемы?

4b9b3361

Ответ 1

команда cpan на самом деле не такая менеджер пакетов, как apt-get. Это больше инструмент, который загружает и устанавливает из CPAN (сайта или одного из его зеркал). После того, как он завершил эту задачу, он не очень много помнит о том, что было сделано раньше, по крайней мере, недостаточно, чтобы удалить ранее установленные модули, по крайней мере, не надежно, чисто или безопасно. (Обновление:). После просмотра App::pmuninstall его можно использовать для обработки зависимостей, но он делает это, подключаясь к внешней (читайте: web), которые вычисляют их отдельно, что хорошо, но я согласен с предыдущим утверждением, что CPAN.pm этого не делает.)

Раньше я беспокоился об удалении модулей, но теперь я понимаю, что большинство модулей Perl занимают настолько мало места, что я просто не беспокоюсь о том, чтобы установить несколько дополнительных модулей, которые вы никогда не будете использовать. Поэтому, если вы не находитесь на компьютере с ДЕЙСТВИТЕЛЬНО маленьким диском, я бы просто позволил ему быть.

В Windows или если вы используете не-системный Perl на Linux/Mac, вы можете просто удалить Perl и переустановить его. Я бы не рекомендовал этого, если вы используете установленную системой Perl на Linux/Mac, но, как вы могли бы сломать вашу ОС, это можно было бы (если вы были осторожны, но не стоило бы сэкономить несколько Mb!).

В будущем вы можете легко установить локальную версию Perl с помощью perlbrew, есть урок по всей сети, если документы недостаточно ( они должны быть). У этого также есть бонус, позволяющий вам играть с новейшими и самыми большими версиями Perl, которые, по всей видимости, у вашей системы еще не появились. Тогда, если вы установите гору мусора или даже сломаете его, сделав что-то сумасшедшее, удалите эту версию и переустановите/установите другую версию.

Другим приятным инструментом является cpanminus (или cpanm для краткости), который является более новым, более удобным для пользователя инструментом cpan. Все классные дети используют его.

Ответ 2

Вы можете удалить отдельные модули с помощью cpanplus (поставляется с Perl) следующим образом:

cpanp uninstall SQL::Abstract

Вы можете просмотреть все модули, установленные с помощью cpan script следующим образом:

perldoc perllocal

Сочетание двух:

for module in $(perldoc -u perllocal | grep -F 'C<Module> L<' | sed 's/^.*L<\(.*\)|.*>$/\1/') ; do
    cpanp uninstall "$module"
done

Ответ 3

Я не уверен в том, чтобы удалить "все это". Но для удаления одного модуля вы можете использовать App::pmuninstall с его единственным script pm-uninstall для удаления модулей. Затем вы можете написать какой-то script, чтобы рекурсивно удалить депо.

Ответ 4

Если вы больше не можете использовать cpan, потому что в вашем пути есть несовместимые модули, вы можете удалить все установленные модули вручную. Например, я обновил Fedora 22 до Fedora 23, а версия Perl изменилась. Все модули, установленные ранее через cpanm в /usr/local/lib64/perl5, больше не работали и не позволяли мне использовать cpanm.

$ cpanm --uninstall Apache::DBI
Attempt to reload Scalar/Util.pm aborted.
Compilation failed in require at /usr/share/perl5/vendor_perl/File/Temp.pm line 18.
...

Я мог бы решить это, переместив этот каталог:

$ mv /usr/local/lib64/perl5 /root/usr-local-lib64-perl5

Название этого каталога может отличаться в вашей системе.

Осторожно: Если модуль установил файлы за пределами этого каталога, например файлы системной библиотеки, эти файлы останутся там.

Ответ 5

Я думаю, что лучшим вариантом является удаление Perl и установка его снова.

Ответ 6

Я расширю ответ Flimm, чтобы дополнительно удалить сам cpanm в конце скрипта, а не где-то посередине:

#!/usr/bin/env bash

for module in $(perldoc -u perllocal | grep -F 'C<Module> L<' | sed 's/^.*L<\(.*\)|.*>$/\1/' | sort | uniq) ; do
    if [[ "$module" =~ "App::cpanminus" ]]; then
        continue
    fi
    echo "Uninstalling $module..."
    yes | cpanm --uninstall "$module"
done

cpanm --uninstall App::cpanminus