Назад | Перейти на главную страницу

Удаление модуля Perl, установленного с помощью cpanm

Я новичок в Perl. Я хотел использовать модуль Log :: Log4perl, так как я знаком с его работой в Java. Я использовал скрипт cpanm для загрузки модуля, но запускал его без «sudo». Затем он установил этот модуль в мой каталог / home / amer / perl5. Впоследствии я установил его как sudoer, но я хочу удалить установку в моем домашнем каталоге, чтобы избежать конфликтов в будущем. Как я могу это сделать? Вот мой стек выполнения cmdline.

Спасибо и привет!

На данный момент это довольно экспериментально, но теперь cpanm поддерживает удалить вариант. Из MetaCpan :

-U, --uninstall

ЭКСПЕРИМЕНТАЛЬНАЯ ЧАСТЬ: Удаляет модули. Удалит файлы распространения из пути к вашей библиотеке с помощью файла .packlist. При использовании с -l или -L будут удалены только файлы в каталоге local :: lib. ПРИМЕЧАНИЕ. Если у вас есть модуль «двойной жизни» в нескольких местах (например, site_perl и путь к библиотеке perl, с Perl 5.12 или новее), будут удалены только файлы в site_perl. Если в дистрибутиве есть сценарии bin и man, они будут сохранены на тот случай, если установка ядра все еще будет ссылаться на них, хотя нет гарантии, что сценарий продолжит работать должным образом со старой версией файлов .pm.

Пытаться Приложение :: pmuninstall

ОПИСАНИЕ

App :: pmuninstall - это быстрый деинсталлятор модулей. удалить файлы из .packlist.

App :: cpanminus и App :: cpanoutdated с высокой степенью близости.

Из своей учетной записи перейдите в оболочку / командную строку, введите PPM. Когда откроется PPM, введите «удалить [имя пакета]», это приведет к удалению этого конкретного пакета за вас. для получения более подробной информации введите "help remove" в PPM.

Я пробовал App :: pmuninstall, и у меня все получилось.

Установите модуль с помощью команды:

$ perl -MCPAN -e оболочка

Terminal does not support AddHistory.

cpan shell -- CPAN exploration and modules installation (v1.9800)
Enter 'h' for help.

cpan[1]>install App::pmuninstall

...

cpan[2]>quit

Использование.

На моем локальном компьютере он установлен в / home / taras / perl5 / bin / pm-uninstall

pm-uninstall [параметры] Модуль ...

параметры:

    -v,--verbose                  Turns on chatty output
    -f,--force                    Uninstalls without prompts
    -c,--checkdeps                Check dependencies (defaults to on)
    -n,--no-checkdeps             Don't check dependencies
    -q,--quiet                    Suppress some messages
    -h,--help                     This help message
    -V,--version                  Show version
    -l,--local-lib                Additional module path
    -L,--local-lib-contained      Additional module path (don't include non-core modules)

Сайт модуля: https://metacpan.org/release/App-pmuninstall

я использовал Сценарий Дэвида Фаррелла:

#!/usr/bin/perl
# 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";
}

Он выполнил свою работу, хотя и выдавал пугающий результат :-):

removing /
could not remove /: Device or resource busy
removing /home
could not remove /home: Permission denied

Вы также можете взглянуть на эта почта.