Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to create lib curl-gnutls.so.4

So, I'm an idiot, and I accidentally deleted the file libcurl-gnutls.so.4 on my Ubuntu system. Now I can't figure out how to recreate it. The actual error I'm getting is when I'm trying to use git:

git-remote-https: error while loading shared libraries: libcurl-gnutls.so.4: cannot open shared object file: No such file or directory

And it's right! That file doesn't exist. But I don't know how to create it. I've tried using apt-get to install libcurl-gnutls, and while it says that it succeeds, it doesn't create the library. I also downloaded curl and built/installed it, but that also didn't create the library I need. Any ideas on how I can fix this?

Thank you so much for any help.

like image 368
user2701114 Avatar asked May 03 '16 19:05

user2701114


2 Answers

I think, it is libcurl3-gnutls - Give it a try - sudo apt-get install libcurl3-gnutls.

This is how I figured it out, hoping this may help others:

Step1: Looked for the libcurl-gnutls.so.4 on my machine(Ubuntu 16.04).

ravitezu@Neutron:~$ locate libcurl-gnutls.so.4
/usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4
/usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4.4.0

Step2: Check which package provides this file, when installed.

ravitezu@Neutron:~$ dpkg -S /usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4
libcurl3-gnutls:amd64: /usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4

So, it gave me the package name libcurl3-gnutls which provides that file.

Here are the files, which will be deployed when you install libcurl3-gnutls:

ravitezu@Neutron:~$ dpkg -c libcurl3-gnutls_7.47.0-1ubuntu2_amd64.deb 
drwxr-xr-x root/root         0 2016-02-18 13:48 ./
drwxr-xr-x root/root         0 2016-02-18 13:48 ./usr/
drwxr-xr-x root/root         0 2016-02-18 13:48 ./usr/lib/
drwxr-xr-x root/root         0 2016-02-18 13:48 ./usr/lib/x86_64-linux-gnu/
-rw-r--r-- root/root    444800 2016-02-18 13:48 ./usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4.4.0
drwxr-xr-x root/root         0 2016-02-18 13:48 ./usr/share/
drwxr-xr-x root/root         0 2016-02-18 13:48 ./usr/share/lintian/
drwxr-xr-x root/root         0 2016-02-18 13:48 ./usr/share/lintian/overrides/
-rw-r--r-- root/root        67 2016-01-27 17:17 ./usr/share/lintian/overrides/libcurl3-gnutls
drwxr-xr-x root/root         0 2016-02-18 13:48 ./usr/share/doc/
drwxr-xr-x root/root         0 2016-02-18 13:48 ./usr/share/doc/libcurl3-gnutls/
-rw-r--r-- root/root     10954 2016-01-27 17:17 ./usr/share/doc/libcurl3-gnutls/copyright
-rw-r--r-- root/root      1019 2016-02-18 13:48 ./usr/share/doc/libcurl3-gnutls/changelog.Debian.gz
-rw-r--r-- root/root       590 2016-01-27 17:17 ./usr/share/doc/libcurl3-gnutls/NEWS.Debian.gz
lrwxrwxrwx root/root         0 2016-02-18 13:48 ./usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4 -> libcurl-gnutls.so.4.4.0
lrwxrwxrwx root/root         0 2016-02-18 13:48 ./usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.3 -> libcurl-gnutls.so.4
like image 144
RaviTezu Avatar answered Sep 20 '22 17:09

RaviTezu


Another reason for this issue is that your sistem only has the 64 bit version of the library and the program requires the 32 bit version. In this case you might see an error similar to the following:

error while loading shared libraries: libcurl-gnutls.so.4: wrong ELF class: ELFCLASS64

Installing the 32 bit version will fix it:

apt-get install libcurl3-gnutls:i386
like image 26
BlackBear Avatar answered Sep 19 '22 17:09

BlackBear