Balena Push SSLLib failing

For some reason, I’m not able to install curl due to a libssl1.1 error on ARM64 targets. Any ideas on how to resolve this?

Dockerfile

FROM ubuntu:bionic
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y --no-install-recommends apt-utils
RUN apt-get install -y curl

Error

[main] Err:1 http://ports.ubuntu.com/ubuntu-ports bionic-updates/main arm64 libssl1.1 arm64 1.1.1-1ubuntu2.1~18.04.5
[main] 404 Not Found [IP: 91.189.88.150 80]
[main] Err:2 http://ports.ubuntu.com/ubuntu-ports bionic-updates/main arm64 openssl arm64 1.1.1-1ubuntu2.1~18.04.5
[main] 404 Not Found [IP: 91.189.88.150 80]
[main] Fetched 2553 kB in 1s (2806 kB/s)
[main] E: Failed to fetch http://ports.ubuntu.com/ubuntu-ports/pool/main/o/openssl/libssl1.1_1.1.1-1ubuntu2.1~18.04.5_arm64.deb 404 Not Found [IP: 91.189.88.150 80]

Hi, several questions:

  1. Is it the first time you are pushing to the device?
  2. Have you tried running apt-get update --fix-missing?

No we’ve pushed to this device before with this exact dockerfile.

Adding the apt-get update --fix-missing command to the dockerfile initially does fix this problem, but can you help me understand why?

Thanks!

Hey @keenanbedrock, I don’t think this is related to apt-get update --fix-missing.

I just built the Dockerfile both using docker and by pushing it into a Raspberry Pi with balena CLI and both times it worked fine without adding apt-get update --fix-missing.

Going back to the original error you had (the 404) my guess is that your development machine was not able to connect to ubuntu servers to grab the packages (or if you were pushing with balena CLI, it was our builders that were not able) due to temporary network problems.

As a side note, if you are working with balenaCloud I suggest the usage of our base images which come with a lot of nice features. For example, you could use install_package in your Dockerfile which is a utility to install packages abstracting away the specifics of the underlying package managers (and adding useful flags, cleanup and retries).

For example your Dockerfile could look like this:

FROM balenalib/raspberrypi3-ubuntu:bionic

RUN install_packages apt-utils curl

Hey there! Yes we were using the balena-cli so it was running on your servers.

And no I don’t think it was a temporary network outage, I can replicate it quite easily if I remove the --fix-missing, this stops working, but adding fixes the problem this morning still.

Can I ask what device type you are pushing to?

I just retried your original dockerfile without the --fix-missing and it works fine in the scenarios I tried.

Checking the man page for apt-get it looks like the flag --fix-missing will ignore missing packages and fail silently. So even if it’s working for you, make sure that the packages you need were installed correctly

It’s an ARM64 Jetson Tx2

And yes I’ve confirmed that the packages we need we indeed installed correctly.

Ok, then by the looks of it the libssl package must not be available for the TX2 on that distribution. In fact if you try to manually download it via the link ( http://ports.ubuntu.com/ubuntu-ports/pool/main/o/openssl/libssl1.1_1.1.1-1ubuntu2.1~18.04.5_arm64.deb ) you’ll also get a 404. Adding the --fix-missing will allow the command to fail silently and continue building the image. Since you are not using that library this won’t be a problem.