Я новичок в 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
Вы также можете взглянуть на эта почта.