libgdbm.so.2: cannot open shared object file: No such file or directory

Asked by Ajusha

While running a shallow parser for Malayalam in ubuntu 16.04 64-bit machine I found the following error.
 ---------------------------------------------------------------------------------------------------------------------------------------------------------
ajusha@ajusha:~/shallow-parser-mal-3.0.fc8$ shallow_parser_mal INPFILE OUTFILE
/home/ajusha/sampark/shallow_parser_mal/bin/sl/morph/mal/morph.out: error while loading shared libraries: libgdbm.so.2: cannot open shared object file: No such file or directory
Can't open morphoutput3549: No such file or directory at /home/ajusha/sampark/shallow_parser_mal/bin/sys/common/printinput.pl line 4.
rm: cannot remove 'morphoutput3549': No such file or directory
/home/ajusha/sampark/shallow_parser_mal/bin/sl/postagger/common/hmm_run: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
Can't open posout3554: No such file or directory at /home/ajusha/sampark/shallow_parser_mal/bin/sys/common/addsentencetag.pl line 4.
/home/ajusha/sampark/shallow_parser_mal/bin/sl/chunker/common/hmm_run: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
Can't open chunkout3559: No such file or directory at /home/ajusha/sampark/shallow_parser_mal/bin/sl/chunker/common/bio2ssf.pl line 73.
Type of arg 1 to dbmclose must be hash (not constant item) at /home/ajusha/sampark/shallow_parser_mal/bin/sl/pruning//src/prune_on_pos.pl line 179, near "mapping)"
Compilation failed in require at /home/ajusha/sampark/shallow_parser_mal/bin/sl/pruning/pruning.pl line 40.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
and output of
ajusha@ajusha:~$ ldd sampark/shallow_parser_mal/bin/sl/morph/mal/morph.out
linux-gate.so.1 => (0xf7f7f000)
 libglib-2.0.so.0 => /lib/i386-linux-gnu/libglib-2.0.so.0 (0xf7e28000)
 libgdbm.so.2 => not found
 libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf7c71000)
 libpcre.so.3 => /lib/i386-linux-gnu/libpcre.so.3 (0xf7bfc000)
 libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf7bde000)
 /lib/ld-linux.so.2 (0xf7f81000)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Please suggest a solution

Regards

Question information

Language:
English Edit question
Status:
Solved
For:
Ubuntu bash Edit question
Assignee:
No assignee Edit question
Solved by:
Manfred Hampl
Solved:
Last query:
Last reply:
Revision history for this message
Manfred Hampl (m-hampl) said :
#1

libgdbm.so.2 is an obsolete version of the library.
Current Ubuntu releases contain libgdbm.so.3, libgdbm.so.5 or libgdbm.so.6

I assume that you need a more current version of shallow_parser_mal (if that exists at all).

What is the output of the commands

uname -a
lsb_release -crid
apt policy libgdbm\*

Revision history for this message
actionparsnip (andrew-woodhead666) said :
#2

sudo apt install libgdbm-dev

You can make a symlink to make the file exist. Check it isn't present with:
file /usr/lib/x86_64-linux-gnu/libgdbm.so.2

If no file is found, then run:
sudo ln -s /usr/lib/x86_64-linux-gnu/libgdbm.so /usr/lib/x86_64-linux-gnu/libgdbm.so.2

Should do it

Revision history for this message
Ajusha (ajushapv86) said (last edit ):
#3

Thank you for the reply
ajusha@ajusha:~$ sudo apt install libgdbm-dev
[sudo] password for ajusha:
Reading package lists... Done
Building dependency tree
Reading state information... Done
libgdbm-dev is already the newest version (1.8.3-13.1).
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.

There is nofile named libgdbm.so.2 in the folder /usr/lib/x86_64-linux-gnu. And libgdbm.so also not there in that folder

Revision history for this message
Ajusha (ajushapv86) said (last edit ):
#4

@Manfred Hampl (m-hampl) s
Thank you for the reply.
These are the outputs

ajusha@ajusha:~$ uname -a
Linux ajusha 4.15.0-142-generic #146~16.04.1-Ubuntu SMP Tue Apr 13 09:27:15 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
ajusha@ajusha:~$ lsb_release -crid
Distributor ID: Ubuntu
Description: Ubuntu 16.04.7 LTS
Release: 16.04
Codename: xenial
ajusha@ajusha:~$ apt policy libgdbm\*
libgdbm-dev:
  Installed: 1.8.3-13.1
  Candidate: 1.8.3-13.1
  Version table:
 *** 1.8.3-13.1 500
        500 http://archive.ubuntu.com/ubuntu xenial/main amd64 Packages
        100 /var/lib/dpkg/status
libgdbmg1-dev:
  Installed: (none)
  Candidate: (none)
  Version table:
libgdbm-gst:
  Installed: (none)
  Candidate: 3.2.5-1build2
  Version table:
     3.2.5-1build2 500
        500 http://archive.ubuntu.com/ubuntu xenial/universe amd64 Packages
libgdbm3:
  Installed: 1.8.3-13.1
  Candidate: 1.8.3-13.1
  Version table:
 *** 1.8.3-13.1 500
        500 http://archive.ubuntu.com/ubuntu xenial/main amd64 Packages
        100 /var/lib/dpkg/status
libgdbm1-dev:
  Installed: (none)
  Candidate: (none)
  Version table:

Revision history for this message
Manfred Hampl (m-hampl) said :
#5

What is the output of the command

ls -l /usr/lib/x86_64-linux-gnu/libgdb*

Revision history for this message
Ajusha (ajushapv86) said :
#6

It shows
ajusha@ajusha:~$ ls -l /usr/lib/x86_64-linux-gnu/libgdb*
-rw-r--r-- 1 root root 50664 Nov 17 2014 /usr/lib/x86_64-linux-gnu/libgdbm.a
-rw-r--r-- 1 root root 24938 Nov 17 2014 /usr/lib/x86_64-linux-gnu/libgdbm_compat.a
lrwxrwxrwx 1 root root 23 Nov 17 2014 /usr/lib/x86_64-linux-gnu/libgdbm_compat.so -> libgdbm_compat.so.3.0.0
lrwxrwxrwx 1 root root 23 Nov 17 2014 /usr/lib/x86_64-linux-gnu/libgdbm_compat.so.3 -> libgdbm_compat.so.3.0.0
-rw-r--r-- 1 root root 10112 Nov 17 2014 /usr/lib/x86_64-linux-gnu/libgdbm_compat.so.3.0.0
lrwxrwxrwx 1 root root 16 Nov 17 2014 /usr/lib/x86_64-linux-gnu/libgdbm.so -> libgdbm.so.3.0.0
lrwxrwxrwx 1 root root 12 Aug 30 15:11 /usr/lib/x86_64-linux-gnu/libgdbm.so.2 -> libgdbm.so.3
lrwxrwxrwx 1 root root 16 Nov 17 2014 /usr/lib/x86_64-linux-gnu/libgdbm.so.3 -> libgdbm.so.3.0.0
-rw-r--r-- 1 root root 22600 Nov 17 2014 /usr/lib/x86_64-linux-gnu/libgdbm.so.3.0.0

Revision history for this message
Manfred Hampl (m-hampl) said :
#7

You have already created a link for libgdbm.so.2

What is now the output of
ldd sampark/shallow_parser_mal/bin/sl/morph/mal/morph.out

(Eventually you have to rebuild the linker cache with the ldconfig command.)

Revision history for this message
actionparsnip (andrew-woodhead666) said :
#8

Yeah looking pretty good.

Revision history for this message
Ajusha (ajushapv86) said :
#9

I have already tried creating the link and purging and rebuilding of ldconfig cache. But no change in the output of ldd sampark/shallow_parser_mal/bin/sl/morph/mal/morph.out

ajusha@ajusha:~$ sudo rm /etc/ld.so.cache
ajusha@ajusha:~$ sudo ldconfig
ajusha@ajusha:~$ ldd sampark/shallow_parser_mal/bin/sl/morph/mal/morph.out
 linux-gate.so.1 => (0xf7f6a000)
 libglib-2.0.so.0 => /lib/i386-linux-gnu/libglib-2.0.so.0 (0xf7e13000)
 libgdbm.so.2 => not found
 libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf7c5c000)
 libpcre.so.3 => /lib/i386-linux-gnu/libpcre.so.3 (0xf7be7000)
 libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf7bc9000)
 /lib/ld-linux.so.2 (0xf7f6c000)

Revision history for this message
Manfred Hampl (m-hampl) said :
#10

What is the output of the commands

ldconfig -p | grep libgdbm
file /usr/lib/x86_64-linux-gnu/libgdbm.so.2

You could try changing the link that it does not point to libgdbm.so.3, but to libgdbm.so.3.0.0

Or - as already written in my first comment:
Where did you get that shallow_parser program? Is there an updated version available that works with newer libgdbm versions?

Revision history for this message
Ajusha (ajushapv86) said :
#11

The outputs are
ajusha@ajusha:~$ ldconfig -p | grep libgdbm
 libgdbm_compat.so.3 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libgdbm_compat.so.3
 libgdbm_compat.so.3 (libc6) => /usr/lib/i386-linux-gnu/libgdbm_compat.so.3
 libgdbm_compat.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libgdbm_compat.so
 libgdbm.so.3 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libgdbm.so.3
 libgdbm.so.3 (libc6) => /usr/lib/i386-linux-gnu/libgdbm.so.3
 libgdbm.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libgdbm.so
ajusha@ajusha:~$ file /usr/lib/x86_64-linux-gnu/libgdbm.so.2
/usr/lib/x86_64-linux-gnu/libgdbm.so.2: symbolic link to libgdbm.so.3

I created the link with libgdbm.so.3.0.0
ajusha@ajusha:~$ sudo ln -s /usr/lib/x86_64-linux-gnu/libgdbm.so.3.0.0 /usr/lib/x86_64-linux-gnu/libgdbm.so.2
ajusha@ajusha:~$ sudo rm /etc/ld.so.cache
ajusha@ajusha:~$ sudo ldconfig
ajusha@ajusha:~$ ldd sampark/shallow_parser_mal/bin/sl/morph/mal/morph.out
 linux-gate.so.1 => (0xf7ef8000)
 libglib-2.0.so.0 => /lib/i386-linux-gnu/libglib-2.0.so.0 (0xf7da1000)
 libgdbm.so.2 => not found
 libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf7bea000)
 libpcre.so.3 => /lib/i386-linux-gnu/libpcre.so.3 (0xf7b75000)
 libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf7b57000)
 /lib/ld-linux.so.2 (0xf7efa000)

Tried this too
ajusha@ajusha:~$ sudo ln -s /usr/lib/x86_64-linux-gnu/libgdbm.so /usr/lib/x86_64-linux-gnu/libgdbm.so.2
ajusha@ajusha:~$ sudo rm /etc/ld.so.cache
ajusha@ajusha:~$ sudo ldconfig
ajusha@ajusha:~$ file /usr/lib/x86_64-linux-gnu/libgdbm.so.2/usr/lib/x86_64-linux-gnu/libgdbm.so.2: symbolic link to /usr/lib/x86_64-linux-gnu/libgdbm.so
ajusha@ajusha:~$ ldd sampark/shallow_parser_mal/bin/sl/morph/mal/morph.out linux-gate.so.1 => (0xf7f4d000)
 libglib-2.0.so.0 => /lib/i386-linux-gnu/libglib-2.0.so.0 (0xf7df6000)
 libgdbm.so.2 => not found
 libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf7c3f000)
 libpcre.so.3 => /lib/i386-linux-gnu/libpcre.so.3 (0xf7bca000)
 libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf7bac000)
 /lib/ld-linux.so.2 (0xf7f4f000)

I got it from http://ltrc.iiit.ac.in/showfile.php?filename=downloads/shallow_parser
Atually it worked for me 3 years before in my old laptop. Now I want to run the same with the new data. I tried to contact them. But those email id is not available.

Revision history for this message
Best Manfred Hampl (m-hampl) said :
#12

Oops, we overlooked something:

The working links in the ldd output all point to i386 (=32bit) libraries!

You need to install the 32bit version of gdbm (if available at all) and then try creating the additional link.

What output do you get for

sudo apt install libgdbm-dev:i386
ls -l /usr/lib/i386-linux-gnu/libgdb*

sudo ln -s /usr/lib/i386-linux-gnu/libgdbm.so.3.0.0 /usr/lib/i386-linux-gnu/libgdbm.so.2

etc.

Revision history for this message
Ajusha (ajushapv86) said :
#13

Thanks Manfred Hampl, that solved my question.

Revision history for this message
Ajusha (ajushapv86) said :
#14

Thank you for your time. It worked :)