After upgrading Perl, cannot reinstall modules - Cwd.so: Undefined symbol "perl_get_sv

Michael C. Shultz ringworm01 at gmail.com
Sun Nov 27 21:25:03 GMT 2005


On Sunday 27 November 2005 13:14, Mark Kane wrote:
> Michael C. Shultz wrote:
> > On Sunday 27 November 2005 12:54, Mark Kane wrote:
> >>Michael C. Shultz wrote:
> >>>On Sunday 27 November 2005 12:42, Mark Kane wrote:
> >>>>Michael C. Shultz wrote:
> >>>>>On Sunday 27 November 2005 12:29, Mark Kane wrote:
> >>>>>>Michael C. Shultz wrote:
> >>>>>>>On Saturday 26 November 2005 22:20, Mark Kane wrote:
> >>>>>>>>Michael C. Shultz wrote:
> >>>>>>>>>On Saturday 26 November 2005 19:25, Michael C. Shultz wrote:
> >>>>>>>>>>On Saturday 26 November 2005 18:48, Mark Kane wrote:
> >>>>>>>>>>>Michael C. Shultz wrote:
> >>>>>>>>>>>>On Saturday 26 November 2005 17:13, Mark Kane wrote:
> >>>>>>>>>>>>>Hi everyone. I finally did a big portupgrade on a 4.9-RELEASE
> >>>>>>>>>>>>>system today and I'm having some problems with Perl.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>I got it updated to 5.8.7 (was 5.6.x before), ran "use.perl
> >>>>>>>>>>>>>port", and ran the perl-after-upgrade script which were all
> >>>>>>>>>>>>>said in UPDATING. Now it's time to force upgrade/recompile the
> >>>>>>>>>>>>>Perl modules for the new version.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>Unfortunately this is where I get stuck:
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>xeon1# portupgrade -f p5-\*
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>[snip]
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>===>   p5-HTML-Tagset-3.10 depends on file:
> >>>>>>>>>>>>>/usr/local/bin/perl5.8.7 - found ===>   p5-HTML-Tagset-3.10
> >>>>>>>>>>>>>depends on file:
> >>>>>>>>>>>>>/usr/local/bin/perl5.8.7 - found ===>  Configuring for
> >>>>>>>>>>>>>p5-HTML-Tagset-3.10
> >>>>>>>>>>>>>/usr/libexec/ld-elf.so.1:
> >>>>>>>>>>>>>/usr/local/lib/perl5/5.8.7/mach/auto/Cwd/Cwd.so: Undefined
> >>>>>>>>>>>>>symbol "perl_get_sv"
> >>>>>>>>>>>>>*** Error code 1
> >>>>>>>>>>>>>------------------------------------
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>The remaining Perl modules that are supposed to be
> >>>>>>>>>>>>>upgraded/recompiled either error out with the same message or
> >>>>>>>>>>>>>are skipped because one that it requires errored out.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>I tried Googling for that error, but nothing came up. Other
> >>>>>>>>>>>>> info that might be useful:
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>xeon1# pkg_which
> >>>>>>>>>>>>> /usr/local/lib/perl5/5.8.7/mach/auto/Cwd/Cwd.so perl-5.8.7
> >>>>>>>>>>>>>-----
> >>>>>>>>>>>>>xeon1# pkg_info | grep p5
> >>>>>>>>>>>>>p5-Authen-SASL-2.04 Perl5 module for SASL authentication
> >>>>>>>>>>>>>p5-Compress-Zlib-1.41 Perl5 interface to zlib compression
> >>>>>>>>>>>>>library p5-DBD-mysql-2.1026_1 MySQL driver for the Perl5
> >>>>>>>>>>>>>Database Interface (DBI) p5-DBI-1.38         The perl5
> >>>>>>>>>>>>> Database Interface. Required for DBD::* modules
> >>>>>>>>>>>>>p5-Digest-1.13      Modules that calculate message digests
> >>>>>>>>>>>>>p5-Digest-MD5-2.27  Perl5 interface to the MD5 algorithm
> >>>>>>>>>>>>>p5-HTML-Parser-3.31 Perl5 module for parse HTML tag
> >>>>>>>>>>>>>p5-HTML-Tagset-3.03 Some useful data table in parsing HTML
> >>>>>>>>>>>>>p5-MIME-Base64-2.20 Perl5 module for Base64 and
> >>>>>>>>>>>>> Quoted-Printable encodings p5-Net-1.16,1       Perl5 modules
> >>>>>>>>>>>>> to access and use network protocols p5-URI-1.25         Perl5
> >>>>>>>>>>>>> interface to Uniform Resource Identifier (URI) refere
> >>>>>>>>>>>>>p5-libvorbis-0.04   Perl extension for Ogg Vorbis streams
> >>>>>>>>>>>>>p5-libwww-5.69      Perl5 library for WWW access
> >>>>>>>>>>>>>-----
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>Thanks very much in advance as this is a production server
> >>>>>>>>>>>>> which uses Perl all the time.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>-Mark
> >>>>>>>>>>>>>FreeBSD 4.9-RELEASE i386
> >>>>>>>>>>>>
> >>>>>>>>>>>>On a 4.11 system sysutils/portmanager has no problem with
> >>>>>>>>>>>> perl5.8 and www/p5-HTML-Tagset, just tested it, not sure if it
> >>>>>>>>>>>> will run on 4.9 but you you may want to give it a try.
> >>>>>>>>>>>>
> >>>>>>>>>>>>-Mike
> >>>>>>>>>>>
> >>>>>>>>>>>Thanks for the reply. I have never used portmanager, but I did
> >>>>>>>>>>>give it a try like you said. Unfortunately it produced the same
> >>>>>>>>>>>error when building that portupgrade did. I should also point
> >>>>>>>>>>> out that I did try just a "make" from the port directory to see
> >>>>>>>>>>> if it had something to do with portupgrade, and that failed
> >>>>>>>>>>> with the same message about "perl_get_sv" as well.
> >>>>>>>>>>>
> >>>>>>>>>>>Here is the output from portmanager. I have omitted other errors
> >>>>>>>>>>>that were about other Perl modules that were not installed via
> >>>>>>>>>>>ports at all.
> >>>>>>>>>>>
> >>>>>>>>>>>xeon1# portmanager www/p5-HTML-Tagset
> >>>>>>>>>>>
> >>>>>>>>>>>[snip]
> >>>>>>>>>>>
> >>>>>>>>>>>--------------------
> >>>>>>>>>>>update p5-HTML-Tagset-3.10
> >>>>>>>>>>>MGPMrUpdate 0.3.9_2 localProperty.command: #9 of 14  cd
> >>>>>>>>>>>/usr/ports/www/p5-HTML-Tagset; make
> >>>>>>>>>>>----------------------------------------------------------------
> >>>>>>>>>>>-- -- -- -- ===>  Vulnerability check disabled, database not
> >>>>>>>>>>> found ===>  Extracting for p5-HTML-Tagset-3.10
> >>>>>>>>>>>=> MD5 Checksum OK for HTML-Tagset-3.10.tar.gz.
> >>>>>>>>>>>===>   p5-HTML-Tagset-3.10 depends on file:
> >>>>>>>>>>>/usr/local/bin/perl5.8.7 - found ===>  Patching for
> >>>>>>>>>>>p5-HTML-Tagset-3.10
> >>>>>>>>>>>===>   p5-HTML-Tagset-3.10 depends on file:
> >>>>>>>>>>>/usr/local/bin/perl5.8.7 - found ===>   p5-HTML-Tagset-3.10
> >>>>>>>>>>>depends on file:
> >>>>>>>>>>>/usr/local/bin/perl5.8.7 - found ===>  Configuring for
> >>>>>>>>>>>p5-HTML-Tagset-3.10
> >>>>>>>>>>>/usr/libexec/ld-elf.so.1:
> >>>>>>>>>>>/usr/local/lib/perl5/5.8.7/mach/auto/Cwd/Cwd.so: Undefined
> >>>>>>>>>>> symbol "perl_get_sv"
> >>>>>>>>>>>*** Error code 1
> >>>>>>>>>>>
> >>>>>>>>>>>Stop in /usr/ports/www/p5-HTML-Tagset.
> >>>>>>>>>>>MGPMrUpdate 0.3.9_2 error: make returned an error, adding
> >>>>>>>>>>>/www/p5-HTML-Tagset to ignore.db
> >>>>>>>>>>>reverting bsd.port.mk patch -=>cd /usr/ports/Mk; patch -R <
> >>>>>>>>>>>/usr/local/share/portmanager/patch-bsd.port.mk-0.3.6;
> >>>>>>>>>>>Hmm...  Looks like a unified diff to me...
> >>>>>>>>>>>The text leading up to this was:
> >>>>>>>>>>>--------------------------
> >>>>>>>>>>>
> >>>>>>>>>>>|--- /usr/ports/Mk/bsd.port.mk  Tue Nov  8 01:02:51 2005
> >>>>>>>>>>>|+++ bsd.port.mk        Wed Nov 16 02:16:57 2005
> >>>>>>>>>>>
> >>>>>>>>>>>--------------------------
> >>>>>>>>>>>Patching file bsd.port.mk using Plan A...
> >>>>>>>>>>>Hunk #1 succeeded at 2049.
> >>>>>>>>>>>done
> >>>>>>>>>>>rCreateInstalledDbVerifyContentsFile 0.3.9_2 error: "@comment
> >>>>>>>>>>>ORIGIN:" not found in
> >>>>>>>>>>> /var/db/pkg/bsdpan-XML-Parser-2.34/+CONTENTS
> >>>>>>>>>>> bsdpan-XML-Parser-2.34 installation is corrupt! recomend
> >>>>>>>>>>> running "pkg_delete -f
> >>>>>>>>>>>bsdpan-XML-Parser-2.34" then manually reinstalling this port
> >>>>>>>>>>>--------------------
> >>>>>>>>>>>
> >>>>>>>>>>>Thanks
> >>>>>>>>>>>
> >>>>>>>>>>>-Mark
> >>>>>>>>>>
> >>>>>>>>>>I dug a little and think have figured the problem but not
> >>>>>>>>>> positive. I think your running perl configure from the original
> >>>>>>>>>> perl and not the one
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>from ports.
> >>>>>>>>>>
> >>>>>>>>>>Assuming you use csh as your shell try in .cshrc to change the
> >>>>>>>>>>order of the path staement so it looks at /usr /local directories
> >>>>>>>>>>first.
> >>>>>>>>>>
> >>>>>>>>>>from:
> >>>>>>>>>>
> >>>>>>>>>>set path =
> >>>>>>>>>>(/sbin /bin /usr/sbin /usr/bin /usr/games /usr/local/sbin
> >>>>>>>>>>/usr/local/bin /usr/X11R6/bin $HOME/bin /home/mike/SCRIPTS
> >>>>>>>>>>/root/bin )
> >>>>>>>>>>
> >>>>>>>>>>to
> >>>>>>>>>>
> >>>>>>>>>>set path =
> >>>>>>>>>>( /usr/local/sbin /usr/local/bin /sbin /bin /usr/sbin /usr/bin
> >>>>>>>>>>/usr/games /usr/X11R6/bin $HOME/bin /home/mike/SCRIPTS /root/bin
> >>>>>>>>>> )
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>-Mike
> >>>>>>>>>
> >>>>>>>>>I am nearly certain your using /usr/bin/perl
> >>>>>>>>>instead of /usr/local/bin/perl, here is how to test:
> >>>>>>>>>
> >>>>>>>>>cd
> >>>>>>>>>/usr/ports/www/p5-HTML-Tagset/work/HTML-Tagset-3.10
> >>>>>>>>>
> >>>>>>>>>try
> >>>>>>>>>perl Makefile.PL
> >>>>>>>>>and I bet you get the error
> >>>>>>>>>and if you try:
> >>>>>>>>>
> >>>>>>>>>/usr/local/bin/perl Makefile.PL
> >>>>>>>>>
> >>>>>>>>>I bet it works ok.....
> >>>>>>>>
> >>>>>>>>Thanks for your replies. Your explanation makes sense about the
> >>>>>>>>/usr/bin vs /usr/local/bin, however if I do: /usr/bin/perl
> >>>>>>>> --version, I get:
> >>>>>>>>
> >>>>>>>>This is perl, v5.8.7 built for i386-freebsd-64int
> >>>>>>>>(with 1 registered patch, see perl -V for more detail)
> >>>>>>>>
> >>>>>>>>If I do: /usr/local/bin/perl --version, I get:
> >>>>>>>>
> >>>>>>>>This is perl, v5.8.7 built for i386-freebsd-64int
> >>>>>>>>(with 1 registered patch, see perl -V for more detail)
> >>>>>>>>
> >>>>>>>>Looks like /usr/bin/perl is a link to another file:
> >>>>>>>>
> >>>>>>>>xeon1# ls -l /usr/bin/perl
> >>>>>>>>lrwxr-xr-x  1 root  wheel  24 Nov 26 18:32 /usr/bin/perl ->
> >>>>>>>>/usr/local/bin/perl5.8.7
> >>>>>>>>
> >>>>>>>>Finally, I tried what you said anyway:
> >>>>>>>>
> >>>>>>>>xeon1# perl Makefile.PL
> >>>>>>>>/usr/libexec/ld-elf.so.1:
> >>>>>>>>/usr/local/lib/perl5/5.8.7/mach/auto/Cwd/Cwd.so: Undefined symbol
> >>>>>>>>"perl_get_sv"
> >>>>>>>>xeon1# /usr/local/bin/perl Makefile.PL
> >>>>>>>>/usr/libexec/ld-elf.so.1:
> >>>>>>>>/usr/local/lib/perl5/5.8.7/mach/auto/Cwd/Cwd.so: Undefined symbol
> >>>>>>>>"perl_get_sv"
> >>>>>>>>
> >>>>>>>>Thanks.
> >>>>>>>>
> >>>>>>>>-Mark
> >>>>>>>
> >>>>>>>Beats me what is wrong then.  This is from running:  perldoc
> >>>>>>>perl58delta.pod
> >>>>>>>
> >>>>>>>Perl_get_sv
> >>>>>>>
> >>>>>>>     You may get errors like ’Undefined symbol "Perl_get_sv"’ or
> >>>>>>>"can’t resolve symbol ’Perl_get_sv’", or the symbol may be
> >>>>>>>"Perl_sv_2pv". This probably means that you are trying to use an
> >>>>>>> older shared Perl library (or extensions linked with such) with
> >>>>>>> Perl 5.8.0 executable. Perl used to have such a subroutine, but
> >>>>>>> that is no more the case. Check your shared library path, and any
> >>>>>>> shared Perl libraries in those directories.
> >>>>>>>
> >>>>>>>     Sometimes this problem may also indicate a partial Perl 5.8.0
> >>>>>>>installa‐ tion, see "Mac OS X dyld undefined symbols" for an example
> >>>>>>>and how to deal with it.
> >>>>>>>
> >>>>>>>
> >>>>>>>-Mike
> >>>>>>
> >>>>>>Well I tried to find some more info and ended up doing a force
> >>>>>>reinstall of perl. I also ran "use.perl port" and perl-after-upgrade
> >>>>>>again (which didn't show anything as moved or needed to be done so I
> >>>>>>did not continue with -f).
> >>>>>>
> >>>>>>Now there is a different error when trying to force upgrade/recompile
> >>>>>>the perl modules:
> >>>>>>
> >>>>>>===>   p5-HTML-Tagset-3.10 depends on file: /usr/local/bin/perl5.8.7
> >>>>>> - found ===>  Configuring for p5-HTML-Tagset-3.10
> >>>>>>Checking if your kit is complete...
> >>>>>>Segmentation fault (core dumped)
> >>>>>>*** Error code 139
> >>>>>>
> >>>>>>Stop in /usr/ports/www/p5-HTML-Tagset.
> >>>>>>
> >>>>>>Any ideas? Again, this is a live production server that heavily
> >>>>>> relies on Perl.
> >>>>>>
> >>>>>>Thanks.
> >>>>>>
> >>>>>>-Mark
> >>>>>
> >>>>>I need to see more context, are you manually trying to install
> >>>>>p5-HTML-Tagset or are you using portupgrade/portmanager for example.
> >>>>>
> >>>>>-Mike
> >>>>
> >>>>I am doing as /usr/ports/UPDATING says to upgrade/reinstall all the
> >>>> Perl modules, which is to do:
> >>>>
> >>>>portupgrade -f p5-\*
> >>>>
> >>>>p5-HTML-Tagset is just the first one that it tries, and it produces
> >>>> this:
> >>>>
> >>>>--->  Upgrading 'p5-HTML-Tagset-3.03' to 'p5-HTML-Tagset-3.10'
> >>>>(www/p5-HTML-Tagset)
> >>>>--->  Building '/usr/ports/www/p5-HTML-Tagset'
> >>>>===>  Cleaning for perl-5.8.7
> >>>>===>  Cleaning for p5-HTML-Tagset-3.10
> >>>>===>  Vulnerability check disabled, database not found
> >>>>===>  Extracting for p5-HTML-Tagset-3.10
> >>>>=> MD5 Checksum OK for HTML-Tagset-3.10.tar.gz.
> >>>>===>   p5-HTML-Tagset-3.10 depends on file: /usr/local/bin/perl5.8.7 -
> >>>>found ===>  Patching for p5-HTML-Tagset-3.10
> >>>>===>   p5-HTML-Tagset-3.10 depends on file: /usr/local/bin/perl5.8.7 -
> >>>>found ===>   p5-HTML-Tagset-3.10 depends on file:
> >>>>/usr/local/bin/perl5.8.7 - found ===>  Configuring for
> >>>>p5-HTML-Tagset-3.10
> >>>>Checking if your kit is complete...
> >>>>Segmentation fault (core dumped)
> >>>>*** Error code 139
> >>>>
> >>>>Stop in /usr/ports/www/p5-HTML-Tagset.
> >>>>** Command failed [exit code 1]: /usr/bin/script -qa
> >>>>/tmp/portupgrade52316.0 make
> >>>>** Fix the problem and try again.
> >>>>--------------------
> >>>>
> >>>>It attempts the other Perl modules as well but fails with the same.
> >>>> Here is the final report:
> >>>>
> >>>>--------------------
> >>>>** Listing the failed packages (*:skipped / !:failed)
> >>>>       ! www/p5-HTML-Tagset (p5-HTML-Tagset-3.03)      (coredump)
> >>>>       ! converters/p5-MIME-Base64 (p5-MIME-Base64-2.20)
> >>>>(coredump) * security/p5-Digest (p5-Digest-1.13)
> >>>>       ! security/p5-Authen-SASL (p5-Authen-SASL-2.04) (coredump)
> >>>>       ! databases/p5-DBI (p5-DBI-1.38)        (coredump)
> >>>>       ! audio/p5-libvorbis (p5-libvorbis-0.04)        (coredump)
> >>>>       * net/p5-URI (p5-URI-1.25)
> >>>>       * net/p5-Net (p5-Net-1.16,1)
> >>>>       * www/p5-HTML-Parser (p5-HTML-Parser-3.31)
> >>>>       * databases/p5-DBD-mysql (p5-DBD-mysql-2.1026_1)
> >>>>       ! security/p5-Digest-MD5 (p5-Digest-MD5-2.27)   (coredump)
> >>>>       ! archivers/p5-Compress-Zlib (p5-Compress-Zlib-1.41)
> >>>>(coredump) * www/p5-libwww (p5-libwww-5.69)
> >>>>--->  Packages processed: 0 done, 0 ignored, 6 skipped and 7 failed
> >>>>--------------------
> >>>>
> >>>>Thanks
> >>>>
> >>>>-Mark
> >>>
> >>>Are you getting a portupgrade.core?  Looks like that is what is
> >>>coredumping, If so try manually upgrading one or two of these and see
> >>>what happens.
> >>>
> >>>-Mike
> >>
> >>Nope, no portupgrade.core. Tried manually, same deal. Even on another
> >> one:
> >>
> >>===>   p5-MIME-Base64-3.05 depends on file: /usr/local/bin/perl5.8.7 -
> >>found ===>  Configuring for p5-MIME-Base64-3.05
> >>Checking if your kit is complete...
> >>Segmentation fault (core dumped)
> >>*** Error code 139
> >>
> >>Stop in /usr/ports/converters/p5-MIME-Base64.
> >>
> >>-Mark
> >
> > Well something is core dumping, most likely perl since its not
> > portupgrade. Do a search if it isn't in the current directory, like this
> > to check the whole drive:
> >
> > find /. | grep ".core"
> >
> > If it's perl that is core dumping I think you should a) go back to using
> > the one in base or b) upgrade at least to 4.11
> >
> > -Mike
>
> Yep.
>
> /./usr/ports/archivers/p5-Compress-Zlib/work/Compress-Zlib-1.41/perl5.8.7.c
>ore /./usr/ports/audio/p5-libvorbis/work/libvorbis-perl-0.05/perl5.8.7.core
> /./usr/ports/converters/p5-MIME-Base64/work/MIME-Base64-3.05/perl5.8.7.core
> /./usr/ports/databases/p5-DBI/work/DBI-1.48/perl5.8.7.core
> /./usr/ports/security/p5-Authen-SASL/work/Authen-SASL-2.09/perl5.8.7.core
> /./usr/ports/security/p5-Digest-MD5/work/Digest-MD5-2.33/perl5.8.7.core
> /./usr/ports/www/p5-HTML-Tagset/work/HTML-Tagset-3.10/perl5.8.7.core
>
> To go back to using the one in the base system, would I just "use.perl
> system"? Then the modules should upgrade fine? My end goal when I first
> started the portupgrade wasn't specifically to upgrade Perl. The system
> was running on real old software in general (had not been portupgraded
> ever) and we're rolling out a new version of the software that runs the
> complete playlist for one of my internet radio stations. That needs the
> latest versions of other software programs like Icecast,
> libogg/libvorbis, Lame, etc. As far as I know, it doesn't require the
> latest Perl, but I am not 100% positive that the old version that was
> installed with 4.9 would work for the new software either.
>
> The main goal was to update those other programs and at the same time it
> would get Perl as well. I have never had bad problems like this when
> upgrading Perl on any other machine, so I did not expect this.
>
> As for upgrading to 4.11, I am a little nervous about doing this
> remotely. Aside from there not being an official documented way to do
> this remotely (everything I have seen in the handbook requires single
> user mode), I am over 500 miles away from the server so I would not have
> much recourse if something happened during the upgrade other than paying
> the datacenter [high prices] for their assistance.
>
> -Mark

I think all you have to do is deinstall perl then just do a normal upgrade, 
and don't run the perl scripts.
If your going to run newer software it is just a matter of time before you 
will have have no choice but to do a system upgrade.
 My experience is 4.9 to 4.10 to 4.11 is not too difficult, no need
to go into single user mode but you should have no users on the system.

To go from 4.11 to 5.* is a nightmare IMHO and is better to just do a clean
install if you decide to upgrade that far.

-Mike










More information about the freebsd-questions mailing list