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

Mark Kane mark at mkproductions.org
Sun Nov 27 21:15:05 GMT 2005


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.core
/./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

-- 
GnuPG Public Key:
http://www.mkproductions.org/mk_pubkey.asc

Internet Radio:
Party107 (Trance/Electronic) - http://www.party107.com
Rock 101.9 The Edge (Rock) - http://www.rock1019.net

IRC:
MIXXnet IRC Network - irc.mixxnet.net (Nick: MIXX941)

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 187 bytes
Desc: OpenPGP digital signature
Url : http://lists.freebsd.org/pipermail/freebsd-questions/attachments/20051127/2998ef25/signature.bin


More information about the freebsd-questions mailing list