doc-base and `Can't locate PerlIO.pm in @INC ' during perl upgrade
Robert Luberda
robert at debian.org
Sun Oct 26 14:18:12 UTC 2014
Hi,
Could you please look at the following doc-base error messages from
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=758398#10 :
-- BEGIN --
Database error: Cannot read file `/var/lib/doc-base/info/status.yml':
Can't locate PerlIO.pm in @INC (you may need to install the PerlIO
module) (@INC contains: /etc/perl
/usr/local/lib/x86_64-linux-gnu/perl/5.20.0 /usr/local/share/perl/5.20.0
/usr/lib/x86_64-linux-gnu/perl5/5.20 /usr/share/perl5
/usr/lib/x86_64-linux-gnu/perl/5.20 /usr/share/perl/5.20
/usr/local/lib/site_perl .) at /usr/share/perl5/YAML/Tiny.pm line 187.
BEGIN failed--compilation aborted.
Database error: Cannot save file
`/var/lib/doc-base/info/status-new.yml': Can't locate PerlIO.pm in @INC
(you may need to install the PerlIO module) (@INC contains: /etc/perl
/usr/local/lib/x86_64-linux-gnu/perl/5.20.0 /usr/local/share/perl/5.20.0
/usr/lib/x86_64-linux-gnu/perl5/5.20 /usr/share/perl5
/usr/lib/x86_64-linux-gnu/perl/5.20 /usr/share/perl/5.20
/usr/local/lib/site_perl .) at /usr/share/perl5/YAML/Tiny.pm line 582.
BEGIN failed--compilation aborted.
.
dpkg: error processing package doc-base (--unpack):
subprocess installed post-installation script returned error exit status 10
Errors were encountered while processing:
doc-base
-- END --
doc-base's postinst script exports PERL_DL_NONLAZY=1, and install-docs
script has the following code to detect if perl is being upgraded during
the run:
$fully_functional = eval {
require Debian::DocBase::InstallDocs;
import Debian::DocBase::InstallDocs;
# skip few require/imports, the following DB has explicit 'use YAML::Tiny'
require Debian::DocBase::DB;
import Debian::DocBase::DB;
# skip more require/import lines
1;
};
if ($@) {
# gettext is most probably not usable here.
warn "The following error has occurred while loading doc-base
modules:\n\n".
$@ ."\n".
However this didn't help in case of PerlIO.pm, because YAML::Tiny module
uses the module without any `use' statement. Could you please advise me,
how to deal with this?
BTW. Are there any other modules that might be used without prior
declaration with `use module;'?
Thanks,
robert
More information about the Perl-maintainers
mailing list