I got mongodb 5.0.9 installed on ubuntu 22.05… but boy… it was a hassle.
First you have to remove the libssl1.1 dep from:
mongodb-org-mongos_5.0.9_amd64.deb
mongodb-org-server_5.0.9_amd64.deb
mongodb-org-shell_5.0.9_amd64.deb
My bash script (that’s added below) will open the ‘nano’ editor and offer you to edit the control file specifying the deps. Your are looking for a line like this (starting with “Depends” and containing a reference to “libssl1.1”):
Depends: libc6 (>= 2.29), libcurl4 (>= 7.16.2), libgcc-s1 (>= 4.2), liblzma5 (>= 5.1.1alpha+20110809), libssl1.1 (>= 1.1.1)
Remove the reference to libssl1.1 and save & quit. It should look like this:
Depends: libc6 (>= 2.29), libcurl4 (>= 7.16.2), libgcc-s1 (>= 4.2), liblzma5 (>= 5.1.1alpha+20110809)
The script will automagically repackage the files and generate you a new package with ‘-newpackage.deb’ attached to its name:
mongodb-org-mongos_5.0.9_amd64.deb-newpackage.deb
mongodb-org-server_5.0.9_amd64.deb-newpackage.deb
mongodb-org-shell_5.0.9_amd64.deb-newpackage.deb
Now put them in a folder and install them manually with dpkg:
sudo dpkg -i *.deb
After that run:
sudo apt install --no-install-recommends mongodb-org mongodb-org-database mongodb-org-tools mongodb-mongosh-shared-openssl3
Hint: You don’t need ‘mongodb-mongosh’ from the deps as it’s being replaced by ‘mongodb-mongosh-shared-openssl3’.
Afterwards I couldn’t start the mongod service:
Jun 11 18:14:11 systemd[1]: Started MongoDB Database Server.
Jun 11 18:14:11 systemd[48437]: mongod.service: Failed to determine user credentials: No such process
Jun 11 18:14:11 systemd[48437]: mongod.service: Failed at step USER spawning /usr/bin/mongod: No such process
Jun 11 18:14:11 systemd[1]: mongod.service: Main process exited, code=exited, status=217/USER
Jun 11 18:14:11 systemd[1]: mongod.service: Failed with result 'exit-code'.
Which was because of a missing user (after looking at ‘/etc/systemd/system/mongod.service’), so I added it:
sudo adduser mongodb
Edit, try, fail, repeat:
Jun 11 18:15:53 systemd[1]: Started MongoDB Database Server.
Jun 11 18:15:53 mongod[48504]: /usr/bin/mongod: error while loading shared libraries: libcrypto.so.1.1: cannot open shared object file: No such file or directory
Jun 11 18:15:53 systemd[1]: mongod.service: Main process exited, code=exited, status=127/n/a
Jun 11 18:15:53 systemd[1]: mongod.service: Failed with result 'exit-code'.
Missing libcrypto from ssl 1.1…
I didn’t have the 3.0 on the system, fix that:
sudo apt-get install libssl-dev
Now search for the file:
sudo find / -type f -name libcrypto.so*
link it:
sudo ln -s /usr/lib/x86_64-linux-gnu/libcrypto.so.3 /usr/lib/x86_64-linux-gnu/libcrypto.so.3 /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1
And we got the same error for ssl1.1…
Jun 11 18:23:59 mongod[48822]: /usr/bin/mongod: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory
Search, link, start…
sudo find / -type f -name libssl.so.*
sudo ln -s /usr/lib/x86_64-linux-gnu/libssl.so.3 /usr/lib/x86_64-linux-gnu/libssl.so.1.1
And error (obviously - it’s 3.0, not 1.1…):
Jun 11 18:26:29 systemd[1]: Started MongoDB Database Server.
Jun 11 18:26:29 mongod[48845]: /usr/bin/mongod: /lib/x86_64-linux-gnu/libcrypto.so.1.1: version `OPENSSL_1_1_0' not found (required by /usr/bin/mongod)
Jun 11 18:26:29 mongod[48845]: /usr/bin/mongod: /lib/x86_64-linux-gnu/libssl.so.1.1: version `OPENSSL_1_1_0' not found (required by /usr/bin/mongod)
Jun 11 18:26:29 mongod[48845]: /usr/bin/mongod: /lib/x86_64-linux-gnu/libssl.so.1.1: version `OPENSSL_1_1_1' not found (required by /usr/bin/mongod)
But didn’t I see a snap with 1.1 libs on the system when running the find commands? - Sure did!
$ sudo find / -type f -name libcrypto.so*
/usr/lib/x86_64-linux-gnu/libcrypto.so.3
/snap/core20/1518/usr/lib/x86_64-linux-gnu/libcrypto.so.1.1
$ sudo find / -type f -name libssl.so.*
/usr/lib/x86_64-linux-gnu/libssl.so.3
/snap/core20/1518/usr/lib/x86_64-linux-gnu/libssl.so.1.1
Let’s remove the previous link and they those…
$ sudo rm /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 /usr/lib/x86_64-linux-gnu/libssl.so.1.1
$ sudo ln -s /snap/core20/1518/usr/lib/x86_64-linux-gnu/libssl.so.1.1 /usr/lib/x86_64-linux-gnu/libssl.so.1.1
$ sudo ln -s /snap/core20/1518/usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1
SUCCESS:
$ sudo service mongod start && sudo service mongod status
● mongod.service - MongoDB Database Server
Loaded: loaded (/lib/systemd/system/mongod.service; disabled; vendor preset: enabled)
Active: active (running) since Sat 2022-06-11 18:32:20 CEST; 49ms ago
Docs: https://docs.mongodb.org/manual
Main PID: 48894 (mongod)
Memory: 760.0K
CPU: 16ms
CGroup: /system.slice/mongod.service
└─48894 /usr/bin/mongod --config /etc/mongod.conf
Jun 11 18:32:20 systemd[1]: Started MongoDB Database Server.
Script:
#!/bin/bash
# name: debedit.sh
# author: showp1984
# description: unpacks, edits control file and repacks deb-files with gz or xz compression
# prerequisites: xz-utils && nano
# No guarantees. Use at your own peril.
unset DECOMPXZ
unset DECOMPGZ
FILES="{post,pre}{inst,rm} conffiles md5sums control"
echo "Uncompressing deb..."
ar x $*
FILEXZ="control.tar.xz"
if [ -f "$FILEXZ" ]; then
DECOMPXZ=1
echo "Found: $FILEXZ | using XZ decomp..."
tar --xz -xvf $FILEXZ
fi
FILEGZ="control.tar.gz"
if [ -f "$FILEGZ" ]; then
DECOMPGZ=1
echo "$FILEGZ exists."
tar xzf $FILEGZ
fi
nano control
if [[ "$DECOMPXZ" == 1 ]]; then
echo "Repacking $FILEXZ..."
tar --ignore-failed-read -cvJf $FILEXZ $FILES
echo "Repacking deb with xz files..."
ar rcs "${*}-newpackage.deb" debian-binary $FILEXZ data.tar.xz
fi
if [[ "$DECOMPGZ" == 1 ]]; then
echo "Repacking $FILEGZ..."
tar --ignore-failed-read -cvzf $FILEGZ $FILES
echo "Repacking deb with gz files..."
ar rcs "${*}-newpackage.deb" debian-binary $FILEGZ data.tar.gz
fi
echo "Cleanup..."
rm -r control md5sums debian-binary control.tar.xz data.tar.xz control.tar.gz data.tar.gz postrm preinst prerm conffiles postinst
echo "Done!"