Slacky Posted April 7, 2017 Posted April 7, 2017 Добрый день. Поиск рыл, ничего не нашел. Вопрос - не могу прикрутить sqlite к Perl'у. Установил сам Perl, установил perl-dbi. При выполнении простого скрипта #!/opt/bin/perl use DBI; use strict; my $driver = "SQLite"; my $database = "test.db"; my $dsn = "DBI:$driver:dbname=$database"; my $userid = "root"; my $password = "654321"; my $dbh = DBI->connect($dsn, $userid, $password, { RaiseError => 1 }) or die $DBI::errstr; print "Opened database successfully\n"; выдает следующее install_driver(SQLite) failed: Can't locate DBD/SQLite.pm in @INC (you may need to install the DBD::SQLite module) (@INC contains: /opt/lib/perl5/5.22 .) at (eval 5) line 3. Perhaps the DBD::SQLite perl module hasn't been fully installed, or perhaps the capitalisation of 'SQLite' isn't right. Available drivers: DBM, ExampleP, File, Gofer, Proxy, Sponge. at ./test.pl line 11. С бубном бегал (пытался устанавливать perlbase-anydbm-file и проч. Не помогло. Куда смотреть? Спасибо. Quote
zyxmon Posted April 7, 2017 Posted April 7, 2017 1 час назад, Slacky сказал: Куда смотреть? Начальная установка Perl включает более 100 пакетов. Можно поставить 1ой командой - http://forums.zyxmon.org/viewtopic.php?p=16476#p16476 Для поддержки sqlite скорее всего одним пакетом не обойтись - изучите список пакетов perl. Quote
Slacky Posted April 7, 2017 Author Posted April 7, 2017 11 час назад, zyxmon сказал: Начальная установка Perl включает более 100 пакетов. Можно поставить 1ой командой - http://forums.zyxmon.org/viewtopic.php?p=16476#p16476 Для поддержки sqlite скорее всего одним пакетом не обойтись - изучите список пакетов perl. Установил, как предлагалось по ссылке. Не помогло. install_driver(SQLite) failed: Can't locate DBD/SQLite.pm in @INC (you may need to install the DBD::SQLite module) (@INC contains: /opt/lib/perl5/5.22 .) at (eval 5) line 3. Perhaps the DBD::SQLite perl module hasn't been fully installed, or perhaps the capitalisation of 'SQLite' isn't right. Available drivers: DBM, ExampleP, File, Gofer, Proxy, Sponge. at ./test.pl line 11. Quote
zyxmon Posted April 7, 2017 Posted April 7, 2017 28 минут назад, Slacky сказал: Установил, как предлагалось по ссылке. Не помогло. Так это только первая часть. Выше написано.... Quote
Slacky Posted April 7, 2017 Author Posted April 7, 2017 16 минут назад, zyxmon сказал: Так это только первая часть. Выше написано.... Если честно, про"выше написано" не совсем понял ... Не понятно, что изучать в пакетах. К тому же, все пакеты от Perl вообще поставить не получается Configuring perlbase-universal. Configuring perlbase-storable. Configuring perlbase-ipc. Configuring perl-dbi. Configuring perl-dev. Configuring perl-image-exiftool. Configuring perl-net-telnet. Collected errors: * check_data_file_clashes: Package perl-test-harness wants to install file /opt/lib/perl5/5.22/TAP/Base.pm But that file is already provided by package * perlbase-tap * check_data_file_clashes: Package perl-test-harness wants to install file /opt/lib/perl5/5.22/TAP/Formatter/Base.pm But that file is already provided by package * perlbase-tap * check_data_file_clashes: Package perl-test-harness wants to install file /opt/lib/perl5/5.22/TAP/Formatter/Color.pm But that file is already provided by package * perlbase-tap * check_data_file_clashes: Package perl-test-harness wants to install file /opt/lib/perl5/5.22/TAP/Formatter/Console/ParallelSession.pm But that file is already provided by package * perlbase-tap Ну и там много еще чего внизу с perlbase-tap ... Quote
zyxmon Posted April 7, 2017 Posted April 7, 2017 27 минут назад, Slacky сказал: К тому же, все пакеты от Perl вообще поставить не получается Где был такой совет? Не нужжно это делать. Если пакета нет - https://github.com/Entware-ng/Entware-ng/wiki/Self-installation-of-perl-modules Quote
Slacky Posted April 8, 2017 Author Posted April 8, 2017 15 часов назад, zyxmon сказал: Где был такой совет? Не нужжно это делать. Если пакета нет - https://github.com/Entware-ng/Entware-ng/wiki/Self-installation-of-perl-modules О, а вот это хорошая ссылка. Спасибо. Буду пробовать. Quote
Slacky Posted April 8, 2017 Author Posted April 8, 2017 Не, все равно не получилось. Создание makefile проходит успешно ... root@Keenetic_Extra:/opt/usr/src/perl/DBD-SQLite-1.54$ perl Makefile.PL Checking if your kit is complete... Looks good Using DBI 1.634 (for perl 5.022001 on mipsel-linux-glibc) installed in /opt/lib/perl5/5.22/auto/DBI/ Generating a Unix-style Makefile Writing Makefile for DBD::SQLite Writing MYMETA.yml and MYMETA.json А вот дальше этому всему не хватает Driver_xst.h. root@Keenetic_Extra:/opt/usr/src/perl/DBD-SQLite-1.54$ make cp lib/DBD/SQLite/VirtualTable/FileContent.pm blib/lib/DBD/SQLite/VirtualTable/FileContent.pm cp lib/DBD/SQLite/VirtualTable/PerlData.pm blib/lib/DBD/SQLite/VirtualTable/PerlData.pm cp lib/DBD/SQLite/VirtualTable.pm blib/lib/DBD/SQLite/VirtualTable.pm cp lib/DBD/SQLite.pm blib/lib/DBD/SQLite.pm cp lib/DBD/SQLite/Cookbook.pod blib/lib/DBD/SQLite/Cookbook.pod cp lib/DBD/SQLite/Constants.pm blib/lib/DBD/SQLite/Constants.pm cp lib/DBD/SQLite/Fulltext_search.pod blib/lib/DBD/SQLite/Fulltext_search.pod Running Mkbootstrap for DBD::SQLite () chmod 644 "SQLite.bs" make: *** No rule to make target '/opt/lib/perl5/5.22/auto/DBI/Driver_xst.h', needed by 'SQLite.xsi'. Stop. В auto/DBI его нет, есть root@Keenetic_Extra:/opt/lib/perl5/5.22/auto/DBI$ ls -l -rwxr-xr-x 1 root root 139092 Feb 20 08:26 DBI.so -rw-r--r-- 1 root root 23067 Feb 20 08:26 Driver.xst Поиск рыл, ничего внятного ... Quote
zyxmon Posted April 8, 2017 Posted April 8, 2017 Изучите кнопочку CODE на форуме. Если листинг большой - выкладывайте на https://pastebin.com 8 минут назад, Slacky сказал: А вот дальше этому всему не хватает Driver_xst.h. это жe target! PS Наверняка инструкцию выполнили не полностью. Quote
Slacky Posted April 8, 2017 Author Posted April 8, 2017 59 минут назад, zyxmon сказал: PS Наверняка инструкцию выполнили не полностью. Каюсь. Прочел только до установки CPAN-DistnameInfo - ну типа понял. А там дальше несколько по другому. Пока положительным результатом похвастаться не могу - долго это все происходит ... Quote
zyxmon Posted April 8, 2017 Posted April 8, 2017 Надеюсь, sqlite3 поставили. Если нет - не будет найдена либа при линковке. 5 минут назад, Slacky сказал: долго это все происходит ... Если дошло до тестов - все ок! Quote
Slacky Posted April 8, 2017 Author Posted April 8, 2017 8 минут назад, zyxmon сказал: Надеюсь, sqlite3 поставили. Если нет - не будет найдена либа при линковке. Если дошло до тестов - все ок! Конечно поставил - sqlite3-cli и libsqlite3. До тестов не дошло. При попытке установки HTTP::Date пишет, что нашел новую версию cpan, ну ее что-то долго устанавливает ... Quote
zyxmon Posted April 8, 2017 Posted April 8, 2017 Инструкция писалась давно, могла частично и устареть. Не так давно на НАСах по ней пакеты ставили. Вот с неделю назад с форума Цитата For those trying to install Net::SSLeay this CPAN line worked for meo conf makepl_arg 'LIBS="-L/opt/lib -lcrypto -lssl"' Quote
Slacky Posted April 9, 2017 Author Posted April 9, 2017 Дал вечером команду install HTTP::Date и пошел спать. Утром увидел, что все ок. All tests successful. Files=5, Tests=508, 7 wallclock secs ( 1.41 usr 0.10 sys + 4.15 cusr 0.33 csys = 5.99 CPU) Result: PASS GBARR/TimeDate-2.30.tar.gz /opt/bin/make test -- OK Running make install Use of chdir('') or chdir(undef) as chdir() is deprecated at /opt/lib/perl5/5.22/ExtUtils/Install.pm line 332. Appending installation info to /opt/lib/perl5/5.22/perllocal.pod GBARR/TimeDate-2.30.tar.gz /opt/bin/make install -- OK cpan[3]> Дал команду bye. Висит уже полчаса ... cpan[3]> bye Terminal does not support GetHistory. Lockfile removed. Ладно, нужно убегать. Оставлю, вечером посмотрю - отлипнет ли ... Quote
Slacky Posted April 9, 2017 Author Posted April 9, 2017 (edited) Отлипла. Но все равно не работает, результат тот же. Running Mkbootstrap for DBD::SQLite () chmod 644 "SQLite.bs" make: *** No rule to make target '/opt/lib/perl5/5.22/auto/DBI/Driver_xst.h', needed by 'SQLite.xsi'. Stop. ISHIGAKI/DBD-SQLite-1.54.tar.gz /opt/bin/make -- NOT OK Failed during this command: ISHIGAKI/DBD-SQLite-1.54.tar.gz : make NO Вечером все снесу, попробую по-новой ... Edited April 9, 2017 by Slacky Quote
zyxmon Posted April 9, 2017 Posted April 9, 2017 По Вашим обрывкам логов ничего сказать нельзя. Swap включите! Quote
zyxmon Posted April 9, 2017 Posted April 9, 2017 Попробовал на mipsel - действительно жуткие тормоза. Причем тормозит CPAN, пишет громадные файлы. Снял. Можно попробовать ставить руками, только смотреть зависимости и ставить сначала их. Стал ставить DBI (зависимость) - http://search.cpan.org/~timb/DBI-1.636/DBI.pm make проходит, все нужные файлы компилируются и создаются, а install вываливается # make install Use of chdir('') or chdir(undef) as chdir() is deprecated at /opt/lib/perl5/5.22/ExtUtils/Install.pm line 332. Use of chdir('') or chdir(undef) as chdir() is deprecated at /opt/lib/perl5/5.22/ExtUtils/Install.pm line 332. Use of chdir('') or chdir(undef) as chdir() is deprecated at /opt/lib/perl5/5.22/ExtUtils/Install.pm line 332. Installing /opt/lib/perl5/5.22/auto/DBI/Driver.xst !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ERROR: Cannot copy 'blib/arch/auto/DBI/Driver.xst' to '/opt/lib/perl5/5.22/auto/DBI/Driver.xst': No such file or directory !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! at -e line 1. make: *** [Makefile:1106: pure_site_install] Error 2 root@Keenetic_Extra:/opt/root/perl_install/DBI-1.636$ root@Keenetic_Extra ~/p/DBI-1.636# ls blib/arch/auto/DBI/ DBI.so Driver.xst dbd_xsh.h dbipport.h dbixs_rev.h DBIXS.h Driver_xst.h dbi_sql.h dbivport.h Думаю проще с этим разобраться. Quote
Slacky Posted April 10, 2017 Author Posted April 10, 2017 21 час назад, zyxmon сказал: make проходит, все нужные файлы компилируются и создаются, а install вываливается Вчера некогда было этим заниматься. Но make у меня не проходит. А можно попросить листинг посмотреть opkg list-installed? Quote
zyxmon Posted April 10, 2017 Posted April 10, 2017 36 минут назад, Slacky сказал: А можно попросить листинг посмотреть opkg list-installed? По инструкции все и ставил, включая некоторые coreutils*. Лучше Вы полные листинги выкладывайте на pastebin. 37 минут назад, Slacky сказал: Но make у меня не проходит. Должны быть установлены make, gcc, распакованы хедеры, установлены либы, с которыми линковка будет. Лучше Вам дам лог установки DBI (в самом конце ошибка, файл которые не удается скопировать есть!) Вот лог - https://pastebin.com/2V6zi0Uu Причина проблем, возможно, в самых первых строках лога. Quote
zyxmon Posted April 10, 2017 Posted April 10, 2017 Очень похоже на проблему чисто ndms. Perl не определяет текущую директорию и установка не проходит. Quote
Slacky Posted April 10, 2017 Author Posted April 10, 2017 26 минут назад, zyxmon сказал: Очень похоже на проблему чисто ndms. Perl не определяет текущую директорию и установка не проходит. Есть решение? Quote
zyxmon Posted April 10, 2017 Posted April 10, 2017 51 минуту назад, Slacky сказал: Есть решение? Блин. Кто из нас с Вами знгаток по perl и должен решение искать. Проблема то локализована! Ищите в файле `/opt/lib/perl5/5.22/Cwd.pm` строку `/usr/bin/pwd` и меняете на `/opt/bin/pwd` - после этого все ставится Files found in blib/arch: installing files in blib/lib into architecture dependent library tree Installing /opt/lib/perl5/5.22/auto/DBI/Driver.xst Installing /opt/lib/perl5/5.22/auto/DBI/DBIXS.h Installing /opt/lib/perl5/5.22/auto/DBI/DBI.so Installing /opt/lib/perl5/5.22/auto/DBI/dbipport.h Installing /opt/lib/perl5/5.22/auto/DBI/dbivport.h Installing /opt/lib/perl5/5.22/auto/DBI/Driver_xst.h Installing /opt/lib/perl5/5.22/auto/DBI/dbi_sql.h Installing /opt/lib/perl5/5.22/auto/DBI/dbixs_rev.h Installing /opt/lib/perl5/5.22/auto/DBI/dbd_xsh.h Installing /opt/lib/perl5/5.22/dbixs_rev.pl Installing /opt/lib/perl5/5.22/DBI.pm .... Quote
Slacky Posted April 10, 2017 Author Posted April 10, 2017 4 минуты назад, zyxmon сказал: Блин. Кто из нас с Вами знгаток по perl и должен решение искать. Проблема то локализована! Ну если Вы меня знатоком считаете, то конечно спасибо, но это не совсем так. Я довольно плотно изучал (в качестве чистого хобби) С, С++, Perl, Linux и проч. Но это было более 10 лет назад. Последнее время я простой юзер. Знания, когда их не применяешь, забываются ... Спасибо. Quote
Slacky Posted April 10, 2017 Author Posted April 10, 2017 Спасибо, все заработало :)) root@Keenetic_Extra:/opt/usr/local/etc/sqlite$ ./test.pl Opened database successfully Но если честно, я "оригинальный" DBI не ставил сначала, только из коробки perl-dbi. Потому хедеров и не было ... Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.