# libperl.so missing?



## Ofloo (Nov 14, 2010)

After upgrading from 7.3 to 8.1 I lot of lib issues, .. now the weirdest one was this one


```
# ldd /usr/local/lib/libnetsnmphelpers.so.20
/usr/local/lib/libnetsnmphelpers.so.20:
        libnetsnmpagent.so.20 => /usr/local/lib/libnetsnmpagent.so.20 (0x800c00000)
        libwrap.so.6 => /usr/lib/libwrap.so.6 (0x800d48000)
        libperl.so => not found (0x0)
        libcrypt.so.5 => /lib/libcrypt.so.5 (0x800e51000)
        libutil.so.8 => /lib/libutil.so.8 (0x800f6a000)
        libnetsnmp.so.20 => /usr/local/lib/libnetsnmp.so.20 (0x80107a000)
        libcrypto.so.6 => /lib/libcrypto.so.6 (0x80124a000)
        libm.so.5 => /lib/libm.so.5 (0x8014e4000)
        libkvm.so.5 => /lib/libkvm.so.5 (0x801603000)
        libdevstat.so.7 => /lib/libdevstat.so.7 (0x80170b000)
        libthr.so.3 => /lib/libthr.so.3 (0x801810000)
        libc.so.7 => /lib/libc.so.7 (0x800647000)
        libperl.so => /usr/local/lib/perl5/5.12.2/mach/CORE/libperl.so (0x801928000)
```

It is missing libperl.so however on the end it is still there, the weird thing is that both net-snmp and perl where recompiled.

At this point this is the only remaining problem i can still find except that gobject-introspection won't compile, ..

Probably making a link from /usr/local/lib/perl5/5.12.2/mach/CORE/libperl.so to /usr/local/lib will fix this however I think it is odd that this is compiled the way it is.


----------



## Ofloo (Nov 14, 2010)

wrote small script to check missing libs probably incomplete, .. if anyone can add stuff to it .. 


```
#!/usr/local/bin/bash
LIST="/bin /usr/bin /usr/local/bin /sbin /usr/sbin /usr/local/sbin /lib /usr/lib /usr/local/lib /libexec /usr/libexec /usr/local/libexec"
MODE="111 511 555 751 755"
for P in $LIST; do
  echo Checking $P
  for M in $MODE; do
    for X in `find $P -perm $M -type f -print`; do
      if [ `ldd "$X" 2>&1 | grep -i found | wc -l` -gt 0 ]; then
        echo Found broken $X
      fi
    done
  done
  
done
echo Done checking paths
exit 0
```


----------



## wblock@ (Nov 14, 2010)

Ofloo said:
			
		

> after upgrading from 7.3 to 8.1 I lot of lib issues,



Hold on.  After a major version upgrade, you have to rebuild *all* ports, or you'll get just this kind of problem.


----------



## wblock@ (Nov 14, 2010)

Ofloo said:
			
		

> wrote small script to check missing libs probably incomplete, .. if anyone can add stuff to it ..



See sysutils/bsdadminscripts, pkg_libchk(1).



> ```
> #!/usr/local/bin/bash
> ```



Please don't write bash-specific scripts.


----------



## Ofloo (Nov 15, 2010)

wblock said:
			
		

> Hold on.  After a major version upgrade, you have to rebuild *all* ports, or you'll get just this kind of problem.



I did 3 times or something i did so for 4 days



			
				wblock said:
			
		

> See sysutils/bsdadminscripts, pkg_libchk(1).
> 
> 
> 
> Please don't write bash-specific scripts.



why not, just wondering, ..


----------



## wblock@ (Nov 15, 2010)

Ofloo said:
			
		

> > Please don't write bash-specific scripts.
> 
> 
> why not, just wondering, ..



Because they only work with bash, and not every system or user has bash.


----------



## Ofloo (Nov 16, 2010)

Ok I understand but I'm not saying anyone should use a script 

BTW, thank you for the pkg_libchk tip.


----------



## wmoreno3 (Nov 4, 2011)

Hi,


```
server# pkg_libchk
net-snmp-5.7_4: /usr/local/lib/libnetsnmpmibs.so.30 misses libperl.so
server#
```
That is the test, but how to solve?


----------



## SirDice (Nov 4, 2011)

Rebuild net-mgmt/net-snmp


----------



## wmoreno3 (Nov 4, 2011)

*loader.c: Error loading module 'res_snmp.so': Shared object "libperl.so" not found*

Problem:

```
server# pkg_libchk
net-snmp-5.7_4: /usr/local/lib/libnetsnmpmibs.so.30 misses libperl.so
server#
loader.c: Error loading module 'res_snmp.so': Shared object "libperl.so" not found, required by "libnetsnmpmibs.so.30"
ldd /usr/local/sbin/snmpd
libperl.so => /usr/local/lib/perl5/5.14.1/mach/CORE/libperl.so
ldd /usr/local/lib/libnetsnmpmibs.so.30
libperl.so => not found (0x0)
```
Solution:
http://mustnofee.com/tutorials/112-snmpd-error-libperlso-not-found

```
cp /usr/local/lib/perl5/5.10.1/mach/CORE/libperl.so /usr/local/lib
```
Adapted to my case:

```
cp /usr/local/lib/perl5/5.14.1/mach/CORE/libperl.so /usr/local/lib
```


----------



## Ofloo (Nov 5, 2011)

Even recompiling never put it back into the lib directory so I used `[b]ln -s[/b]`, because using cp also means the binary .so never gets updated.


----------



## wmoreno3 (Nov 15, 2011)

Other Solution:
http://www.bsdforen.de/showthread.php?t=26848
http://networking.ringofsaturn.com/Unix/usinglibchk.php

```
# ldconfig -m /usr/local/lib/perl5/5.14.1/mach/CORE/
```
Can add this line to /etc/rc.conf.


----------



## Ofloo (Nov 16, 2011)

```
libperl.so => /usr/local/lib/perl5/5.12.2/mach/CORE/libperl.so (0x801928000)
```

As you can see there is no issue in missing lib path, .. the problem is that libperl.so isn't linked to the main lib directory.


```
libperl.so => not found (0x0)
```

The bins will work, it's more of a luxury issue, but if you write a script to check for missing libs libperl.so will pop up, .. so wanted to automatically check for missing libs weekly. Instead of waiting for when something breaks.


----------



## wmoreno3 (Dec 1, 2011)

Hi...

```
# ln -s /usr/local/lib/perl5/5.14.1/mach/CORE/libperl.so /usr/local/lib/
# ldd /usr/local/lib/libnetsnmpmibs.so.30
/usr/local/lib/libnetsnmpmibs.so.30:
        libnetsnmpagent.so.30 => /usr/local/lib/libnetsnmpagent.so.30 (0x800889000)
        libwrap.so.6 => /usr/lib/libwrap.so.6 (0x800e2a000)
        libperl.so => /usr/local/lib/libperl.so (0x800f33000)
...
```
may be is a bug ?
I found this about... https://bugzilla.redhat.com/show_bug.cgi?id=742678.
The best temporary solution seems to be [cmd=]ln -s /usr/local/lib/perl5/5.14.1/mach/CORE/libperl.so /usr/local/lib/[/cmd] until the net-snmp team, make a solution. isn't it?


----------



## wmoreno3 (Dec 3, 2011)

wmoreno3 said:
			
		

> Hi...
> 
> ```
> # ln -s /usr/local/lib/perl5/5.14.1/mach/CORE/libperl.so /usr/local/lib/
> ...



Solution: Update to net-snmp 5.7.1_1 http://www.freshports.org/net-mgmt/net-snmp/


----------



## Ofloo (Dec 4, 2011)

Yes, that should/will make it work, in your case. But that won't take care of the error entirely, .. of course as I said before, "it's a luxury problem", because it causes no real problems, ..


----------



## bigbrother (Mar 20, 2014)

I also faced the missing libperl.so today. I searched and found the script posted at http://lists.freebsd.org/pipermail/free ... 56810.html
which not only locates the missing libraries, but it also reports suggestions. In my case the following output was printed, using this sh script.

```
.....
WARNING: Missing library(-ies) for /usr/local/lib/freeswitch/mod/mod_perl.so
--------------------------------------
libperl.so
Maybe1: ln -s /usr/local/lib/perl5/5.18/mach/CORE/libperl.so /usr/local/lib/perl5/5.18/mach/CORE/libperl.so --NOT SUGGESTED, seems /usr/local/lib/perl5/5.18/mach/CORE  not in ldconfig path

Maybe1b: ln -s /usr/local/lib/perl5/5.18/mach/CORE/libperl.so /usr/local/lib/libperl.so
--------------------------------------
....
```
I did the suggestion 1b, and after this

```
ldd /usr/local/lib/freeswitch/mod/mod_perl.so
/usr/local/lib/freeswitch/mod/mod_perl.so:
        libfreeswitch.so.1 => /usr/local/lib/freeswitch/lib/libfreeswitch.so.1 (0x801239000)
        libthr.so.3 => /lib/libthr.so.3 (0x801678000)
        libz.so.6 => /lib/libz.so.6 (0x80189b000)
        librt.so.1 => /usr/lib/librt.so.1 (0x801aaf000)
        libssl.so.6 => /usr/lib/libssl.so.6 (0x801cb4000)
        libcrypto.so.6 => /lib/libcrypto.so.6 (0x801f0a000)
        libncurses.so.8 => /lib/libncurses.so.8 (0x8022b2000)
        libjpeg.so.11 => /usr/local/lib/libjpeg.so.11 (0x80063b000)
        libodbc.so.2 => /usr/local/lib/libodbc.so.2 (0x802500000)
        libperl.so => /usr/local/lib/libperl.so (0x802772000)
        libgdbm.so.4 => /usr/local/lib/libgdbm.so.4 (0x802afc000)
        libintl.so.9 => /usr/local/lib/libintl.so.9 (0x802d03000)
        libiconv.so.3 => /usr/local/lib/libiconv.so.3 (0x802f0d000)
        libm.so.5 => /lib/libm.so.5 (0x803209000)
        libcrypt.so.5 => /lib/libcrypt.so.5 (0x80342a000)
        libutil.so.9 => /lib/libutil.so.9 (0x803649000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x80385c000)
        libc.so.7 => /lib/libc.so.7 (0x80081b000)
        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x803a6a000)
```

All seem OK!


Rgz,
BB


----------

