Build fails due to change of Debian Jessie repos

Hi,

tried to build the iso and VMware ova files (crux as well as current branch) within the past two days but came across a lot of challenges.
I’m using Docker to build both and ran into a couple issues with packages and as well as repos:

  1. packages gosu, python3-git and default-libmysqlclient-dev do not exist any longer in jessie-backports - gosu and python3-git can be pulled from Stretch repo, replacement for default-libmysqlclient-dev would be libmariadbclient-dev (also from Stretch, not Jessie).
  2. jessie-backports got archived yesterday or today so the whole repo was moved from deb.debian.org to archive.debian.org.
  3. the latter has an expired PGP key and won’t be renewed so you’d need to tell apt to ignore it - either globally or you append ‘-o Acquire::Check-Valid-Until=false’ to every affected ‘apt-get update’ occurrence.
  4. jessie-updates was removed so you’d need to comment this line in the sources.list or use the stretch-updates repo instead, which could lead to other issues if package versions got pinned.
  5. once the Docker image was built successfully and you start a container you will end up having the same issues with Jessie and the jessie-backports/jessie-updates repos again as debootstrap runs into the same issues of course so you’d need to edit the scripts/live-build-config file and change the boolean in lines 57 and 59 to false (updates and backports).

After those step at least I was able to built the iso image.

Guess one should think about using Stretch as the new base of the build environment and drop Jessie completely.

Hi @gustav,

we are aware of that issue on are working on a solution. Unfortunately I can’t give you an ETA.

1 Like

Great, thank you. If you have any news on this and need others to test it simply drop a line :slight_smile:

The latest commit live-build: final fix for Debian Backports (all good things are three) · vyos/vyos-build@432f35f · GitHub fixed most of the issues so the Docker image can be built without any customizations.

You could also think about providing the Docker image yourself via Docker Hub and automated builds.

Building the ISO image still fails though:

lb config: unrecognized option '--mirror-binary-backports'

–mirror-binary-backports seem only to work with Ubuntu’s live-build packages. Debian has it documented in their manpages but seems it never was implemented - or it was removed again.
Tried live-build packages from Jessie up to Sid and it’s always missing.

I’m finally trying to bring my build up to date as well, so I can hopefully contribute a few improvements in the future. I’m using a clean Ubuntu 18.04 machine and Docker, and am hitting a wall, albeit a different one:

[2019-03-31 04:39:37] lb chroot_install-packages install
P: Begin installing packages (install pass)...
Reading package lists...
Building dependency tree...
Reading state information...
E: Unable to locate package netcat6

I’m noticing that the live-build tools download a base image from http://ftp.debian.org/debian//dists/stretch/main/Contents-amd64.gz. Curious if this is right—should the current branch be on stretch or jessie?

edit: It appears this same issue is making your jenkins unhappy: https://ci.vyos.net/job/vyos-build/build=jessie64devel.vyos.net/1555/console

edit2: the source of this error appears to be what @gustav mentioned above. In Debian the --mirror-binary-backports option was removed by Dropping dedicated backports mirror handling, not needed anymore with the move... (dd15ade8) · Commits · Debian Live Team / live-build · GitLab and never added back. Curious what distro the team is using for official builds.

As the live-build config won’t be written as expected due the fact that it doesn’t recognize --mirror-binary-backports it will simply write a default config which uses the current distribution which is Stretch.
Stretch has no netcat6 package so that’s why you run into this issue. Even if you fix it by commenting the affected line in data/live-build-config/package-lists/vyos-utils.list.chroot it will still fail due to vyos dependencies.

If you run e.g. ‘make prepare’ the last lines actually should be:

P: Updating config tree for a debian/jessie/amd64 system
P: Symlinking hooks…

but you will end with:
lb config: unrecognized option ‘–mirror-binary-backports’

What I did so far to get it to work:

  • Delete line 54 in scripts/live-build-config
  • Delete line 71 in scripts/build-config
  • Set --backports true to --backports false in scripts/live-build-config
  • Set --updates true to --updates false in scripts/live-build-config (also necessary as there is no http://deb.debian.org/debian/dists/jessie-updates any longer)

Yep—I kept at this for a while and got a successful build. I set updates=false and backports=false then added a “jessie.list.build” to data/live-build-config/archives with this contents:

deb http://archive.debian.org/debian/ jessie-backports main
deb-src http://archive.debian.org/debian/ jessie-backports main

I still had to make some extra modifications, mostly adding a --yes --force-yes -o Acquire::Check-Valid-Until=false on any apt calls (for those made through live-build, add a --apt-options to the lb config line in scripts/live-build-config.

Commit live-build: reconfigure build after jessie-backports moved to Debian … · vyos/vyos-build@dda8ec6 · GitHub fixed all of those issues so you should be able to use it as-is without any further modifications.

Big thanks to the devs :beer: