Bootstrapping old linux distros
Hello, tools like singularity (https://github.com/hpcng/github) can be used to create containers of older distributions, like sle12 or centos-7. With tumbleweed this is not possible any more, as the rpm binary from tumbleweed can't create a rpmdb in bdb format and the rpm binaries from sle12 or centos-7 can't open a rpmdb with the ndb format created during the bootstrap process. Also backporting the rpmdb from ndb to bdb seems to be impossible as the dump formats for the databases differ. A solution to this problem could be to to have an additional rpm_bdb binary in tumbleweed, which only is used for bootstrapping older linux distros. Is this sensible? kind regards, Christian -- Christian Goll CGoll@suse.com SUSE Software Solutions Germany GmbH Maxfeldstr. 5 90409 Nürnberg Germany (HRB 36809, AG Nürnberg) Geschäftsführer: Felix Imendörffer -- Christian Goll CGoll@suse.com SUSE Software Solutions Germany GmbH Maxfeldstr. 5 90409 Nürnberg Germany (HRB 36809, AG Nürnberg) Geschäftsführer: Felix Imendörffer
On 20. Oct 2021, at 17:27, Christian Goll
wrote: Hello, tools like singularity (https://github.com/hpcng/github) can be used to create containers of older distributions, like sle12 or centos-7. With tumbleweed this is not possible any more, as the rpm binary from tumbleweed can't create a rpmdb in bdb format and the rpm binaries from sle12 or centos-7 can't open a rpmdb with the ndb format created during the bootstrap process. Also backporting the rpmdb from ndb to bdb seems to be impossible as the dump formats for the databases differ. A solution to this problem could be to to have an additional rpm_bdb binary in tumbleweed, which only is used for bootstrapping older linux distros. Is this sensible?
kind regards, Christian --
Wouldn’t a cooler solution be to have such an older rpm binary in a sle12 container? Alias rpm_bdb to some suitable “podman exec …. rpm” command and away you go Don’t see why we’d want to plumb such old junk into Tumbleweed for this use case
Hi! On 10/20/21 17:26, Christian Goll wrote:
tools like singularity (https://github.com/hpcng/github) can be used to create containers of older distributions, like sle12 or centos-7.
What I'm missing in openSUSE, is the possibility to cross-bootstrap. In Debian, we have a script called rebootstrap [1] and it allows to bootstrap Debian for any supported from x86_64 completely from source. It bootstraps Debian for a number of architectures on a regular basis via Jenkins [2]. Adrian
[1] https://wiki.debian.org/HelmutGrohne/rebootstrap [2] https://jenkins.debian.net/view/rebootstrap/
On 10/20/21 6:32 PM, John Paul Adrian Glaubitz wrote:
Hi!
On 10/20/21 17:26, Christian Goll wrote:
tools like singularity (https://github.com/hpcng/github) can be used to create containers of older distributions, like sle12 or centos-7. What I'm missing in openSUSE, is the possibility to cross-bootstrap. In Debian, we have a script called rebootstrap [1] and it allows to bootstrap Debian for any supported from x86_64 completely from source.
Yeah. Something similar would be fantastic! Bastille (a FreeBSD jail management system) also uses it to create Ubuntu Linux jails under FreeBSD. I did a dirty hack to install openSUSE, but that's really a hack, and not something elegant: https://peter.czanik.hu/posts/opensuse_in_bastille/ Peter
On 10/20/21 18:48, Peter Czanik wrote:
On 10/20/21 17:26, Christian Goll wrote:
tools like singularity (https://github.com/hpcng/github) can be used to create containers of older distributions, like sle12 or centos-7. What I'm missing in openSUSE, is the possibility to cross-bootstrap. In Debian, we have a script called rebootstrap [1] and it allows to bootstrap Debian for any supported from x86_64 completely from source.
Yeah. Something similar would be fantastic! Bastille (a FreeBSD jail management system) also uses it to create Ubuntu Linux jails under FreeBSD. I did a dirty hack to install openSUSE, but that's really a hack, and not something elegant:
OK, but that's not building any packages from source if I'm seeing this correctly. rebootstrap is really about building a cross-toolchain first, then building the whole set of base packages for a distribution. It's far from perfect in Debian, but it's already extremely useful and helps spotting toolchain bugs very early on. Adrian
On Wednesday 2021-10-20 17:26, Christian Goll wrote:
Hello, tools like singularity (https://github.com/hpcng/github) can be used to create containers of older distributions, like sle12 or centos-7. With tumbleweed this is not possible any more, as the rpm binary from tumbleweed can't create a rpmdb in bdb format and the rpm binaries from sle12 or centos-7 can't open a rpmdb with the ndb format created during the bootstrap process. Also backporting the rpmdb from ndb to bdb seems to be impossible as the dump formats for the databases differ. A solution to this problem could be to to have an additional rpm_bdb binary in tumbleweed, which only is used for bootstrapping older linux distros. Is this sensible?
Not so much. To bootstrap old distros, one can (and perhaps should) just unpack the old rpms (specifically rpm.rpm & glibc etc.), then use that in a chroot to initialize the rpmdb. 'lo and behold, I did that not too long ago (an attempt was made). https://github.com/rpm-software-management/rpm/issues/1762
On Wed, Oct 20, 2021 at 3:37 PM Jan Engelhardt
Not so much. To bootstrap old distros, one can (and perhaps should) just unpack the old rpms (specifically rpm.rpm & glibc etc.), then use that in a chroot to initialize the rpmdb.
Yes, that is correct as far as my knowledge goes, what is being done here is doomed to fail in another step anyways.
Jan Engelhardt wrote:
On Wednesday 2021-10-20 17:26, Christian Goll wrote:
Hello, tools like singularity (https://github.com/hpcng/github) can be used to create containers of older distributions, like sle12 or centos-7. With tumbleweed this is not possible any more, as the rpm binary from tumbleweed can't create a rpmdb in bdb format and the rpm binaries from sle12 or centos-7 can't open a rpmdb with the ndb format created during the bootstrap process. Also backporting the rpmdb from ndb to bdb seems to be impossible as the dump formats for the databases differ. A solution to this problem could be to to have an additional rpm_bdb binary in tumbleweed, which only is used for bootstrapping older linux distros. Is this sensible?
Not so much. To bootstrap old distros, one can (and perhaps should) just unpack the old rpms (specifically rpm.rpm & glibc etc.), then use that > in a chroot to initialize the rpmdb.
Exactly. That's what the build script does to be able to build packages for random distros. You can take a look at the "Preinstall" lines in /usr/lib/build/configs/ to see which packages are needed for the distribution you want to handle. cu Ludwig -- (o_ Ludwig Nussel //\ V_/_ http://www.suse.com/ SUSE Software Solutions Germany GmbH, GF: Felix Imendörffer HRB 36809 (AG Nürnberg)
participants (7)
-
Christian Goll
-
Cristian Rodríguez
-
Jan Engelhardt
-
John Paul Adrian Glaubitz
-
Ludwig Nussel
-
Peter Czanik
-
Richard Brown