ZaLinux.ru

Ошибки «install_driver(CSV) failed: Can’t locate DBD/CSV.pm in @INC» и «Can’t locate Text/CSV.pm in @INC» (РЕШЕНО)

В этой заметке будет показано как исправить ошибки, возникающие при работе скрипта Perl, который в качестве базы данных использует файл CSV.

Причём у данной проблемы могут быть два варианта:

  • Can't locate DBD/CSV.pm in @INC
  • Can't locate Text/CSV.pm in @INC

В обоих случаях скрипт не может найти файл CSV.pm и при беглом взгляде может показаться, что это одна и та же проблема. Но на самом деле это две разные ошибки и для их решения требуется установить два разных модуля Perl.

Can't locate DBD/CSV.pm in @INC

Если при запуске программы, написанной на PERL вы сталкиваетесь с ошибкой вроде такой:

install_driver(CSV) failed: Can't locate DBD/CSV.pm in @INC (you may need to install the DBD::CSV module) (@INC contains: /usr/lib/perl5/5.30/site_perl /usr/share/perl5/site_perl /usr/lib/perl5/5.30/vendor_perl /usr/share/perl5/vendor_perl /usr/lib/perl5/5.30/core_perl /usr/share/perl5/core_perl) at (eval 15) line 3.
Perhaps the DBD::CSV perl module hasn't been fully installed,
or perhaps the capitalisation of 'CSV' isn't right.
Available drivers: DBM, ExampleP, File, Gofer, Mem, Proxy, SQLite, Sponge.
 at /usr/bin/parallel line 11496.

То она означает, что отсутствует библиотека (драйвер), который позволяет скриптам Perl работать файлами в формате CSV (в таких файлах данные разделены друг от друга запятыми и размещены в виде таблицы).

Для того, чтобы Perl смог работать с файлами .csv как с базой данных, нужно установить дополнительную библиотеку.

В приведённой выше ошибке дана подсказка — возможно нужно установить модуль DBD::CSV, именно это мы и сделаем.

Обратите внимание, что нужные пакеты можно установить из самого Perl, либо из репозитория дистрибутива. Там где доступно, мы будем устанавливать из репозитория дистрибутива.

Для систем основанных на Debian/Ubuntu:

Выполните установку DBD::CSV из репозитория дистрибутива:

sudo apt install libdbd-csv-perl

Для систем основанных на Arch Linux:

Для Arch Linux я не смог найти DBD::CSV в стандартном репозитории, поэтому установим в самом Perl:

sudo perl -MCPAN -e'install DBD::CSV'

Для систем на основе RedHat/Centos/Fedora:

Установите DBD::CSV (возможно, данный пакет присутствует в стандартном репозитории, если вы это знаете, то напишите, пожалуйста, в комментарии):

sudo perl -MCPAN -e'install DBD::CSV'

Can't locate Text/CSV.pm in @INC

А это другой вариант похожей проблемы. Обратите внимание, что перед CSV.pm идёт слово Text. Пример ошибки:

Can't locate Text/CSV.pm in @INC (@INC contains:
/usr/lib/perl5/site_perl/5.16.2/x86_64-linux-thread-multi
/usr/lib/perl5/site_perl/5.16.2
/usr/lib/perl5/vendor_perl/5.16.2/x86_64-linux-thread-multi
/usr/lib/perl5/vendor_perl/5.16.2
/usr/lib/perl5/5.16.2/x86_64-linux-thread-multi /usr/lib/perl5/5.16.2
/usr/lib/perl5/site_perl/5.16.2/x86_64-linux-thread-multi
/usr/lib/perl5/site_perl/5.16.2 /usr/lib/perl5/site_perl .) at
./OracleScript.pl line 4. BEGIN failed--compilation aborted at
./OracleScript.pl line 4.

Для систем основанных на Debian/Ubuntu:

Установите библиотеку libtext-csv-perl:

sudo apt install libtext-csv-perl

Для систем основанных на Arch Linux:

Здесь этот пакет называется perl-text-csv:

sudo pacman -S perl-text-csv

Для систем на основе RedHat/Centos/Fedora:

Установите пакет perl-Text-CSV:

sudo yum install perl-Text-CSV

Рекомендуемые статьи:

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *