Zobrazuje se vám chyba „Nelze sestavit modul ” při kompilaci OpenCA base 1.5.1? Pokud ano, pak tento tutoriál vysvětlí, jak to opravit.
Zde je kompletní chybová zpráva.
Build::External PERL modules Building (openca::ac) ... ERROR::Cannot build module make[6]: *** [openca-ac] Error 1 Build::External PERL modules Building (Authen::SASL::215) ... ERROR::Cannot build module
Jak opravit chybu Cannot build module
Zobrazila se mi chyba „Nelze sestavit modul“ pro balíček Authen::SASL
. Tato chyba se však může vyskytnout u jakéhokoli modulu Perl.
Nejprve to vypadalo jako balíček Authen::SASL
nebyl v systému nainstalován. Nainstaloval jsem tedy jeden pomocí níže uvedeného příkazu:
# perl -MCPAN -e 'install Authen::SASL'
Ve výchozím nastavení na CentOS 6 výše uvedený příkaz nainstaloval Authen::SASL
verze 2.16. Chybu to však nevyřešilo. Později jsem si všiml, že všechny externí moduly, které jsou nutné pro instalaci OpenCA Base, byly umístěny pod src/ext-modules
složka. K odladění problému jsem musel změnit adresář na příslušné složky modulu a zkontrolovat jeho soubor protokolu. Například externí modul Perl, který způsobuje tuto chybu, je Authen-SASL-2.15. Dovolte mi tedy změnit adresář na Authen-SASL-2.15 pod src/ext-modules
.
$ cd src/ext-modules/Authen-SASL-2.15
V souboru protokolu byla nalezena níže uvedená chyba:
$ vi log.err Only one of PREFIX or INSTALL_BASE can be given. Not both.
Co ta chyba znamená? Spustil jsem perl Makefile.PL.
[src/ext-modules/Authen-SASL-2.15]$ perl Makefile.PL
Překvapivě výše uvedený příkaz nevyvolal žádnou chybu. Teď jsem zkusil make
v openca-base-1.5.1
adresář a viděl, že prošel konkrétním modulem Perl a selhal při kompilaci dalšího modulu – Convert::ASN1
.
Build::External PERL modules Building (Authen::SASL::215) ... Ok Building (Convert::ASN1::022) ... ERROR::Can not build module
Vím, že stejným způsobem mohu přepnout na Convert::ASN1
složka pod src/ext-modules
a zkuste perl Makefile.PL
a vraťte se do základního adresáře OpenCA a spusťte make
opravit chybu. Ale mohu to udělat pro všech 40 externích modulů, které je třeba zkompilovat jako další? Ach! Toto rozhodně není správný způsob, jak tento problém vyřešit.
Poté, co jsem se na chybu podrobně podíval, jsem pochopil, že by měla být nastavena buď jedna z proměnných prostředí PREFIX nebo INSTALL_BASE, a ne obě. Tato rada mi pomohla chybu vyřešit.
Stačí vypsat všechny proměnné prostředí nastavené pro Perl a grep PERL_MB_OPT
.
# perl -V | grep PERL_MB_OPT PERL_MB_OPT="--install_base /root/perl5"
Můžete vidět, že install_base
je nastaven na PERL_MB_OPT
. Zrušte nastavení proměnné a je dobré zkompilovat OpenCA Base.
#unset PERL_MB_OPT
Nyní je problém globálně vyřešen pro každý externí modul v src/ext-modules
.