Zobrazila se mi chyba „install_driver(Pg) se nezdařil:Nelze najít verzi.pm ” při spouštění démona OpenCA 1.5.1 na CentOS. Tento tutoriál vysvětlí, jak opravit chybu spuštění OpenCA Can't locate version.pm. Než budu mluvit o řešení, podívejte se na kompletní chybovou zprávu.
Spouštění démona OpenCA:
# ./etc/init.d/openca start
Ačkoli výše uvedený příkaz nevyvolal žádnou zprávu, našel jsem podrobnou chybu v var/openca/log/stderr.log
. Níže je jeho snímek.
install_driver(Pg) failed: Can't locate version.pm in @INC (@INC contains: /home/openca/lib/openca/perl_modules/perl5/x86_64-linux-thread-multi /home/openca/lib/openca/perl_modules/perl5 /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /home/openca/lib/openca/perl_modules/perl5/x86_64-linux-thread-multi/DBD/Pg.pm line 19. BEGIN failed--compilation aborted at /home/openca/lib/openca/perl_modules/perl5/x86_64-linux-thread-multi/DBD/Pg.pm line 19. Compilation failed in require at (eval 288) line 3. Perhaps a module that DBD::Pg requires hasn't been fully installed at /home/openca/lib/openca/perl_modules/perl5/OpenCA/DBI.pm line 914. Compilation failed in require at /home/openca/etc/openca/openca_start line 66.
Chybová zpráva znamená, že nemohl najít version.pm
soubor a možná modul, který DBD::Pg
nebyl plně nainstalován. Pojďme nainstalovat DBD::Pg
.
Nainstalujte DBD::Pg pomocí cpan
cpan[1]> install DBD::Pg
Nicméně cpan
instalace DBD::Pg
se nezdařila a skončil s níže uvedenou chybovou zprávou.
Could not load DBI::DBD - is the DBI module installed? No 'Makefile' created'YAML' not installed, will not store persistent state TURNSTEP/DBD-Pg-3.7.4.tar.gz /usr/bin/perl Makefile.PL -- NOT OK Running make test Make had some problems, won't test Running make install Make had some problems, won't install Could not read metadata file. Falling back to other methods to determine prerequisites Failed during this command: TURNSTEP/DBD-Pg-3.7.4.tar.gz : writemakefile NO -- No 'Makefile' created
Takže jsem musel nainstalovat DBI::DBD
modulu před instalací DBD::Pg
. Pokračujme a nainstalujme DBI::DBD
Nainstalujte DBI::DBD
cpan> install DBI::DBD Appending installation info to /usr/lib64/perl5/perllocal.pod TIMB/DBI-1.640.tar.gz /usr/bin/make install -- OK
Ano, nyní jsem nainstaloval DBI::DBD
modulu, zkusme to znovu DBD::Pg
instalace přes cpan
.
cpan> install DBD::Pg
Ach! další chyba:
cp lib/Bundle/DBD/Pg.pm blib/lib/Bundle/DBD/Pg.pm cp Pg.pm blib/lib/DBD/Pg.pm /usr/bin/perl -p -e "s/~DRIVER~/Pg/g; s/^do\(/dontdo\(/" /usr/local/lib64/perl5/auto/DBI/Driver.xst > Pg.xsi /usr/bin/perl /usr/share/perl5/vendor_perl/ExtUtils/xsubpp -typemap /usr/share/perl5/ExtUtils/typemap Pg.xs > Pg.xsc && mv Pg.xsc Pg.c gcc -c -I/usr/include -I/usr/local/lib64/perl5/auto/DBI -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DPGLIBVERSION=90223 -DPGDEFPORT=5432 -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -DPERL_EXTMALLOC_DEF -Dmalloc=Perl_malloc -Dfree=Perl_mfree -Drealloc=Perl_realloc -Dcalloc=Perl_calloc -DVERSION=\"undef\" -DXS_VERSION=\"undef\" -fPIC "-I/usr/lib64/perl5/CORE" Pg.c In file included from Pg.xs:14:0: Pg.h:36:22: fatal error: libpq-fe.h: No such file or directory #include "libpq-fe.h" ^ compilation terminated. make: *** [Pg.o] Error 1 TURNSTEP/DBD-Pg-3.7.4.tar.gz /usr/bin/make -- NOT OK Running make test Can't test without successful make Running make install Make had returned bad status, install seems impossible Failed during this command: TURNSTEP/DBD-Pg-3.7.4.tar.gz : make NO
Nyní je chyba „závažná chyba:libpq-fe.h:Žádný takový soubor nebo adresář “. To znamená, že jsem musel nainstalovat balíček nebo knihovnu, která dodává libpq-fe.h
soubor. Po googlování rozumím ‘libpg-dev
‘ je knihovna, ale to je pro stroje Ubuntu a Debian. Odpovídající balíček pro CentOS je tedy ‘postgresql-devel
‘.
Nainstalujte postgresql-devel pomocí YUM
# yum install postgresql-devel ::::::::::::::::: Installed: postgresql-devel.x86_64 0:9.2.23-3.el7_4 Complete!
OK. Doufejme, že cpan
nyní by měl nainstalovat DBD::Pg
bez problému. Pojďme se na to podívat.
Opětovná instalace DBD::Pg pomocí cpan
cpan[3]> install DBD::Pg Running install for module 'DBD::Pg' Running make for T/TU/TURNSTEP/DBD-Pg-3.7.4.tar.gz Has already been unwrapped into directory /root/.cpan/build/DBD-Pg-3.7.4-JtTHAe Could not make: Unknown error Running make test Can't test without successful make Running make install Make had returned bad status, install seems impossible
Co! cpan říká, že instalace se zdá být nemožná? Ne, nainstalujme to ručně. Abych to udělal, musel jsem přejít na .cpan
adresář umístěný pod domovem uživatele a vyhledejte DBD-PG stažené pomocí cpan.
# cd /root/.cpan/build/DBD-Pg-3.7.4-ScxNAT
Pojďme vytvořit Makefile
teď.
# perl Makefile.PL Configuring DBD::Pg 3.7.4 PostgreSQL version: 90223 (default port: 5432) POSTGRES_HOME: (not set) POSTGRES_INCLUDE: /usr/include POSTGRES_LIB: /usr/lib64 OS: linux Checking if your kit is complete... Looks good Using DBI 1.64 (for perl 5.016003 on x86_64-linux-thread-multi) installed in /usr/local/lib64/perl5/auto/DBI/ Writing Makefile for DBD::Pg
Chladný. A co udělat?
#make chmod 755 blib/arch/auto/DBD/Pg/Pg.so cp Pg.bs blib/arch/auto/DBD/Pg/Pg.bs chmod 644 blib/arch/auto/DBD/Pg/Pg.bs Manifying blib/man3/Bundle::DBD::Pg.3pm Manifying blib/man3/DBD::Pg.3pm
Zase super, co nainstalovat?
# make install Files found in blib/arch: installing files in blib/lib into architecture dependent library tree Installing /usr/local/lib64/perl5/auto/DBD/Pg/Pg.so Installing /usr/local/lib64/perl5/auto/DBD/Pg/Pg.bs Installing /usr/local/lib64/perl5/DBD/Pg.pm Installing /usr/local/lib64/perl5/Bundle/DBD/Pg.pm Installing /usr/local/share/man/man3/Bundle::DBD::Pg.3pm Installing /usr/local/share/man/man3/DBD::Pg.3pm Appending installation info to /usr/lib64/perl5/perllocal.pod
Ano. Nyní jsem úspěšně nainstaloval „DBD::Pg
“modul. Nyní jsem spustil OpenCA démona a fungovalo to bez problémů.
Doufám, že to někomu pomůže.