Iotedge: IoT Edge install fails on Raspian Buster - error while loading shared libraries: libssl.so.1.0.2

Created on 3 Jul 2019  路  11Comments  路  Source: Azure/iotedge

Expected Behavior

Used the guide at https://docs.microsoft.com/en-us/azure/iot-edge/how-to-install-iot-edge-linux-arm to install moby and iotedge on a fresh install of Raspbian Buster.

Install should run through and I should be left with a working iotedge installation.

Confirmed it is working on Raspbian Stretch.

Current Behavior

Install runs through as expected but any iotedge commands result in the error:
iotedge: error while loading shared libraries: libssl.so.1.0.2: cannot open shared object file: No such file or directory

Steps to Reproduce

  1. Set up an SD Card with Raspbian Buster
  2. Follow the guide https://docs.microsoft.com/en-us/azure/iot-edge/how-to-install-iot-edge-linux-arm to install Moby and iotedge
  3. Optional reboot - makes no difference
  4. Run sudo iotedge list

Context (Environment)

Output of iotedge check

iotedge: error while loading shared libraries: libssl.so.1.0.2: cannot open shared object file: No such file or directory

Device (Host) Operating System

Raspberry Pi 3 Model B Rev 1.2
Linux raspberrypi 4.19.50-v7+ armv7l
Version:June 2019
Release date:2019-06-20
Kernel version:4.19

Architecture

arm32

Container Operating System

Linux

Runtime Versions

iotedged

1.0.7.1

Edge Agent

N/A - doesn't get this far

Edge Hub

N/A - doesn't get this far

Docker

Client:
Version: 3.0.5
API version: 1.40
Go version: go1.12.1
Git commit: ba9934d4
Built: Thu Apr 18 23:28:44 2019
OS/Arch: linux/arm
Experimental: false

Server:
Engine:
Version: 3.0.5
API version: 1.40 (minimum version 1.12)
Go version: go1.12.1
Git commit: dbe4a30
Built: Fri Apr 19 07:14:38 2019
OS/Arch: linux/arm
Experimental: false
containerd:
Version: v1.2.5
GitCommit: bb71b10fd8f58240ca47fbb579b9d1028eea7c84
runc:
Version: 1.0.0-rc6+dev
GitCommit: 2b18fe1d885ee5083ef9f0838fee39b62d653e30
docker-init:
Version: 0.18.0
GitCommit: fec3683

Logs

Jul 03 14:21:56 raspberrypi iotedged[793]: /usr/bin/iotedged: error while loading shared libraries: libcrypto.so.1.0.2: cannot open shared object file: No such file or directory
Jul 03 14:21:56 raspberrypi systemd[1]: iotedge.service: Main process exited, code=exited, status=127/n/a
Jul 03 14:21:56 raspberrypi systemd[1]: iotedge.service: Failed with result 'exit-code'.
Jul 03 14:21:56 raspberrypi systemd[1]: iotedge.service: Service RestartSec=100ms expired, scheduling restart.
Jul 03 14:21:56 raspberrypi systemd[1]: iotedge.service: Scheduled restart job, restart counter is at 1.
Jul 03 14:21:56 raspberrypi systemd[1]: iotedge.socket: Succeeded.
Jul 03 14:21:56 raspberrypi systemd[1]: iotedge.mgmt.socket: Succeeded.
Jul 03 14:21:56 raspberrypi iotedged[798]: /usr/bin/iotedged: error while loading shared libraries: libcrypto.so.1.0.2: cannot open shared object file: No such file or directory
Jul 03 14:21:56 raspberrypi systemd[1]: iotedge.service: Main process exited, code=exited, status=127/n/a
Jul 03 14:21:56 raspberrypi systemd[1]: iotedge.service: Failed with result 'exit-code'.
Jul 03 14:21:56 raspberrypi systemd[1]: iotedge.service: Service RestartSec=100ms expired, scheduling restart.
Jul 03 14:21:56 raspberrypi systemd[1]: iotedge.service: Scheduled restart job, restart counter is at 2.
Jul 03 14:21:56 raspberrypi systemd[1]: iotedge.mgmt.socket: Succeeded.
Jul 03 14:21:56 raspberrypi systemd[1]: iotedge.socket: Succeeded.
Jul 03 14:21:57 raspberrypi iotedged[802]: /usr/bin/iotedged: error while loading shared libraries: libcrypto.so.1.0.2: cannot open shared object file: No such file or directory
Jul 03 14:21:57 raspberrypi systemd[1]: iotedge.service: Main process exited, code=exited, status=127/n/a
Jul 03 14:21:57 raspberrypi systemd[1]: iotedge.service: Failed with result 'exit-code'.
Jul 03 14:21:57 raspberrypi systemd[1]: iotedge.service: Service RestartSec=100ms expired, scheduling restart.
Jul 03 14:21:57 raspberrypi systemd[1]: iotedge.service: Scheduled restart job, restart counter is at 3.
Jul 03 14:21:57 raspberrypi systemd[1]: iotedge.mgmt.socket: Succeeded.
Jul 03 14:21:57 raspberrypi systemd[1]: iotedge.socket: Succeeded.
Jul 03 14:21:57 raspberrypi iotedged[809]: /usr/bin/iotedged: error while loading shared libraries: libcrypto.so.1.0.2: cannot open shared object file: No such file or directory
Jul 03 14:21:57 raspberrypi systemd[1]: iotedge.service: Main process exited, code=exited, status=127/n/a
Jul 03 14:21:57 raspberrypi systemd[1]: iotedge.service: Failed with result 'exit-code'.
Jul 03 14:21:57 raspberrypi systemd[1]: iotedge.service: Service RestartSec=100ms expired, scheduling restart.
Jul 03 14:21:57 raspberrypi systemd[1]: iotedge.service: Scheduled restart job, restart counter is at 4.
Jul 03 14:21:57 raspberrypi systemd[1]: iotedge.mgmt.socket: Succeeded.
Jul 03 14:21:57 raspberrypi systemd[1]: iotedge.socket: Succeeded.
Jul 03 14:21:57 raspberrypi iotedged[823]: /usr/bin/iotedged: error while loading shared libraries: libcrypto.so.1.0.2: cannot open shared object file: No such file or directory
Jul 03 14:21:57 raspberrypi systemd[1]: iotedge.service: Main process exited, code=exited, status=127/n/a
Jul 03 14:21:57 raspberrypi systemd[1]: iotedge.service: Failed with result 'exit-code'.
Jul 03 14:21:57 raspberrypi systemd[1]: iotedge.service: Service RestartSec=100ms expired, scheduling restart.
Jul 03 14:21:57 raspberrypi systemd[1]: iotedge.service: Scheduled restart job, restart counter is at 5.
Jul 03 14:21:57 raspberrypi systemd[1]: iotedge.socket: Succeeded.
Jul 03 14:21:57 raspberrypi systemd[1]: iotedge.mgmt.socket: Succeeded.
Jul 03 14:21:57 raspberrypi systemd[1]: iotedge.service: Start request repeated too quickly.
Jul 03 14:21:57 raspberrypi systemd[1]: iotedge.service: Failed with result 'exit-code'.
Jul 03 14:21:57 raspberrypi systemd[1]: iotedge.mgmt.socket: Failed with result 'service-start-limit-hit'.
Jul 03 14:21:57 raspberrypi systemd[1]: iotedge.socket: Failed with result 'service-start-limit-hit'.

Additional Information

1.0.9 checkedin customer-reported enhancement iotedge

Most helpful comment

It looks like libssl1.0.2 is present in the release version of Buster. I was able to do

sudo apt-get install libssl1.0.2

successfully. I was able to install iotedge after that.

All 11 comments

Hello @nanowireUK

Thank you for bringing this to our attention.

It looks like Raspbian Buster has updated the default version of OpenSSL to 1.1 and has dropped 1.0 libraries entirely - and that means it looks like we need to build new packages to support it. I'll add this task to our backlog.

As a temporary workaround, you can install the 1.0.2 packages from here (armhf binaries):
https://packages.debian.org/stretch/armhf/libssl1.0.2/download
or the Raspbian stretch repo.

I have the exactly same issue. Can you let me know when the new package becomes available?

Thank you!

(Marking as enhancement because Debian 10 + derivatives are not supported at the moment.)

Following... new package would be great, thanks!

Following as well...

It looks like libssl1.0.2 is present in the release version of Buster. I was able to do

sudo apt-get install libssl1.0.2

successfully. I was able to install iotedge after that.

1473 modifies our packaging code in a way that makes it easier to add new distros and arches that have functioning cross compilers in their repos. This includes Debian 10, so that PR adds Debian 10 as well.

If anyone wants to test it out, take that PR and run VERSION=1.0.9 PACKAGE_OS=debian10 PACKAGE_ARCH=aarch64 ./edgelet/build/linux/package.sh from the repo root. You should get ./edgelet/target/hsm/libiothsm-std_1.0.9-1_arm64.deb and ./edgelet/target/aarch64-unknown-linux-gnu/release/iotedge_1.0.9-1_arm64.deb that have been compiled on Debian 10 and link to libssl1.1

Edit: Or VERSION=1.0.9 PACKAGE_OS=debian10 PACKAGE_ARCH=arm32v7 ./edgelet/build/linux/package.sh for an arm32v7 build, which will give you ./edgelet/target/hsm/libiothsm-std_1.0.9-1_armhf.deb and ./edgelet/target/armv7-unknown-linux-gnueabihf/release/iotedge_1.0.9-1_armhf.deb

I ran into this as well, but found that sudo apt-get install libssl1.0.2 works around it.

1473 is now merged, so as mentioned in https://github.com/Azure/iotedge/issues/1408#issuecomment-514924228 you can now build Debian 10 packages for iotedge and libiothsm-std with:

  • PACKAGE_OS=debian10 PACKAGE_ARCH=arm32v7 ./edgelet/build/linux/package.sh, or
  • PACKAGE_OS=debian10 PACKAGE_ARCH=aarch64 ./edgelet/build/linux/package.sh

depending on what distro you're running on your Pi.

The generated binaries will link to openssl 1.1, and more importantly the packages will have a dependency on the libssl1.1 package. So apt will install it automatically if you didn't already have it.

Note that regardless of that script making it easy to build the packages, as of now we haven't decided to officially support Debian 10 / Raspbian Buster as a tier 1 platform.

It looks like libssl1.0.2 is present in the release version of Buster. I was able to do
sudo apt-get install libssl1.0.2
successfully. I was able to install iotedge after that.

Stumbled on the same problem and the above workaround worked.

$ sudo dpkg -i libiothsm-std_1.0.8-2_armhf.deb
$ sudo apt-get install libssl1.0.2
$ sudo dpkg -i iotedge_1.0.8-2_armhf.deb

1.0.9-rc1 has been released.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

nhuurnink picture nhuurnink  路  6Comments

josiahlaivins picture josiahlaivins  路  6Comments

yenseaman picture yenseaman  路  5Comments

alaendle picture alaendle  路  5Comments

mill5james picture mill5james  路  3Comments