Как отменить случайную установку всех модулей Perl?


8

Я пытался обновить свои модули Perl через CPAN, но я не поставить / имя модуля регулярного выражения для обновления: perl -MCPAN -e 'upgrade'; Я могу предположить только худшее (что, кажется, поддерживается выводом perldoc perllocal), то есть устанавливаются все модули Perl из CPAN.

Как я могу отменить этот беспорядок? Я полагаю, я могу удалить /usr/local/share/perl, но каковы последствия этого?

Изменить: у меня все еще есть 95% свободного места на моем жестком диске, так что это не большая проблема. Я просто не хочу много ненужного беспорядка. Я рассматриваю rmэтот каталог, делаю dpkg --purge perlи переделываю apt-getпроцесс установки CPAN. Но действительно ли это необходимо, или я могу просто удалить ненужные модули /usr/local/share/perl?


Некоторые люди считают, что не стоит напрямую удалять системные файлы (и папки). Может быть, лучше использовать такие вещи, как apt-getили Synaptic, чтобы система тщательно удалила и обновила необходимые базы данных.

4
@ vasa1 Модули Perl, установленные под CPAN, таким образом не отслеживаются. Каталог, в котором находятся модули, вероятно, необходимо удалить. Или нужно вручную удалить их через CPAN, и это будет cr * pshoot, если они будут подчиняться директиве удаления или даже make uninstallкоманде. К сожалению, это совершенно другая система управления пакетами. stackoverflow.com/questions/2626449/…
Кевин Боуэн

@maggotbrain, спасибо! Я этого не знал. (Единственный Perl, который я использую для мелких вещей, поставляется с ОС.)

Ответы:


5

Глядя на это чуть ближе, я не думаю, что вам нужно или нужно удалять какие-либо каталоги или файлы в вашей системе.

Выполнение команды perl -MCPAN -e 'upgrade'из командной строки не приведет к установке дополнительных модулей в вашей системе.

Это только попытка обновить установленные модули, с помощью системы управления CPAN пакетов, а не через Synaptic .

Это похоже на выполнение команды 'r' и последующее выполнение команды обновления в командной cpan[1]>строке. Смотрите здесь .

CPAN и Synaptic - это две разные системы управления пакетами.

Это не установит все возможные модули Perl из CPAN. Он также не изменит существующий системный пакет дБ. Таким образом, вы можете безопасно откатиться назад.

Однако это все еще потенциально опасно, если приложение или ваша система зависят от конкретной версии модуля Perl.

Если вы прервали процесс обновления, велика вероятность, что вы избежали нанесения вреда вашей системе.

Варианты восстановления:

Из командной строки запустите cpanи выполните команду r, чтобы увидеть список установленных модулей и доступных обновлений. Например, вот сокращенный вывод из моего 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
....

Возьмите Eval::Closureмодуль, для этого примера. Допустим, вы позволили perl -MCPAN -e 'upgrade'команде завершиться, и теперь у вас установлена ​​версия 0.08.

Если посмотреть на Synaptic, то в этом случае он покажет, что последняя версия в хранилище все еще будет иметь значение 0,06 (в частности, 0,06-1, в моем случае).

Вы можете откатиться до версии вашей системы, выполнив следующую команду:

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

Если вы установили какие-либо модули Perl вручную и хотите откатить их до предыдущей версии, вам нужно будет загрузить их снова (из source.cpan.org или в другом месте) и вручную переустановить.

Подводя итог: Обновление модулей Perl в CPAN не должно влиять на ваш системный репозиторий.

Удачи. Не паникуйте.


Отличный и тщательный ответ! «Не паникуйте» является ключевой фразой здесь. Я видел много выходных данных и читал об использовании аргументов для указания модуля, поэтому я слишком быстро сделал выводы. Я был удивлен, обнаружив, что я практически не использовал HD-пространство, но я все еще видел некоторые модули, которые я не распознал (вероятно, из-за зависимостей). Приятно знать, что это не требует никакой работы для меня!
paulrehkugler

0

Я бы порекомендовал сделать: apt-get remove <installed-packages> && apt-get autoremove(чтобы удалить зависимости) && apt-get purge <installed-packages>(чтобы удалить остающиеся файлы конфигурации), тогда вы можете удалить ненужные папки, но это уже должно быть сделано для вас :)


2
ОП сделал это через CPAN. Очистка не поможет, так как эти модули не находятся под управлением пакетов.
Кевин Боуэн
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.