[SERVER-35885] libcurl Dependency Issues on Latest Debian Based Distros Created: 28/Jun/18  Updated: 27/Oct/23  Resolved: 01/Jul/18

Status: Closed
Project: Core Server
Component/s: None
Affects Version/s: 4.0.0
Fix Version/s: None

Type: Bug Priority: Major - P3
Reporter: Matt Lord (Inactive) Assignee: Andrew Morrow (Inactive)
Resolution: Works as Designed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Related
related to SERVER-37768 Platform Support: Add Community & Ent... Closed
Operating System: Linux
Participants:

 Description   

It seems that we need to adjust our MongoDB 4.0 build and packaging process on newer Debian based distros (e.g. Debian 9 and Ubuntu 18.04) as libcurl4 is the version of the library that the OS uses for the curl client itself and any other packages which have a libcurl dependency--whereas mongod has an explicit dependency on libcurl3. Examples of user reported issues can be seen on the user mailing list

More generally we should verify that our build and packaging processes always ensure that mongod depends upon and links in the default libcurl library provided by the given host OS.  



 Comments   
Comment by Hendy Irawan [ 27/Apr/20 ]

Historical note: This was an issue for Rocket.Chat: https://forums.rocket.chat/t/mongodb-wont-install-on-debian/4152/6?u=hendy

Comment by Kay Kim (Inactive) [ 07/Jan/19 ]

Reordered and bolded and also, updated the sentence
"Create the /etc/apt/sources.list.d/mongodb-org-4.0.list file" to"Create the /etc/apt/sources.list.d/mongodb-org-4.0.list file for Ubuntu ..."

Comment by Henrik Ingo (Inactive) [ 07/Jan/19 ]

Can reorder tabs so that 18.04 is the default.

Cool. I think this is the biggest improvement.

Would it help if I bold the Ubuntu version in the second sentence (after the reordering)

Can't hurt, but the real problem of course is that I don't read the text at all

Comment by Kay Kim (Inactive) [ 05/Jan/19 ]

Can reorder tabs so that 18.04 is the default.

Since currently in https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/#create-a-list-file-for-mongodb, we state:

Click on the appropriate tab for your version of Ubuntu.

Ubuntu 14.04 (Trusty) Ubuntu 16.04 (Xenial) Ubuntu 18.04 (Bionic)

The following instruction is for Ubuntu 14.04 (Trusty). For Ubuntu 16.04 (Xenial) or Ubuntu 18.04 (Bionic), click on the appropriate tab.

Create the /etc/apt/sources.list.d/mongodb-org-4.0.list file:

Would it help if I bold the Ubuntu version in the second sentence (after the reordering)

The following instruction is for Ubuntu 14.04 (Trusty). For Ubuntu 16.04 (Xenial) or Ubuntu 18.04 (Bionic), click on the appropriate tab.

Comment by Henrik Ingo (Inactive) [ 31/Dec/18 ]

kay.kim matt.lord

I'm posting this here mostly for the benefit of anyone that may find this issue due to the same reason as I did.

  • On Ubuntu 18.04 I followed https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/
  • It turns out the new tab system in the manual defaults to give instructions for the oldest LTS, 14.04. I didn't notice this.
  • The installation then either fails or uninstalls libcurl4 and its dependencies. (depending on how hard I forced it)
  • The fix is to ensure one has 18.04 == bionic in /etc/sources.list.d/mongodb-org-4.0.list

As a potential docs improvement, it would IMO make more sense to default to the newest version of each OS.

Comment by Matt Lord (Inactive) [ 29/Jul/18 ]

Hi bhawnesh_dipu

We know that this was a problem when using the Ubuntu 16.04 packages on Ubuntu 18.04–which was happening because we had no Ubuntu 18.04 support in 4.0.0 GA so no Ubuntu 18.04 packages. We've just added support for Ubuntu 18.04 with the 4.0.1 GA maintenance release. It's going through a brief testing phase before it gets the final "production ready" stamp, but you can currently get the 4.0.1-rc builds on the Development Releases downloads page (just change the version field to 4.0.1-rc0). Here's a direct link that you can use to get the package with curl or wget. 

Barring any unexpected issues, that will soon be the version of 4.0 – "Current Stable Release (4.0.1)" – that will be on the Current Release downloads page.

So while we appreciate you sharing the workaround that seemed to work for you, we don't recommend that you or others take those steps today. Instead we recommend that you use the 4.0.1+ Ubuntu 18.04 packages. Please do let us know if you still encounter any issues with the 18.04 packages.

Thank you for using MongoDB! 

Matt

Comment by Bhawnesh Dipu [ 29/Jul/18 ]

You have to do some custom things in order to run mongodb 4.0 in ubuntu 18.10 .

sudo apt-get install libcurl3

locate libcurl3 file likely in /usr/lib/x86_64-linux-gnu/

make a LD_LIBRARY folder in home.

cp /usr/lib/x86_64-linux-gnu/libcurl.so.4 /home/user/LD_LIBRARY
mv /home/user/LD_LIBRARY/libcurl.so.4 /home/user/LD_LIBRARY/libcurl.so.3
make a link of libcurl3 by :

ln -s libcurl.so.3 libcurl.so.4
echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/LD_LIBRARY/" >> ~/.bashrc
source ~/.bashrc

now start mongod it will run.

Also now you can install

sudo apt-get install libcurl4 php-curl

And use all the application require php-curl and libcurl4

Comment by Andrew Morrow (Inactive) [ 01/Jul/18 ]

The mailing list errors were the result of running 16.04 binaries (which have a hard curl3 dependency) on Ubuntu 18.04.

Comment by Andrew Morrow (Inactive) [ 28/Jun/18 ]

Yes, I suspect that is what happened in that thread. I've followed up to see if we can get more information to confirm that.

Comment by Mark Benvenuto [ 28/Jun/18 ]

In Ubuntu 18.04, Ubuntu created two packages that install (libcurl3 and libcurl4) the same binary (libcurl.so.4). These packages conflict. Our 16.04 binary needs libcurl3 when run on 18.04.

Generated at Thu Feb 08 04:41:20 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.