Opened 11 years ago

Closed 11 years ago

#88 closed defect (fixed)

debirf's use of udhcpc makes it require the "universe" component on ubuntu

Reported by: Daniel Kahn Gillmor Owned by: jrollins
Priority: major Component: debirf
Keywords: debirf ubuntu Cc:
Sensitive: no


Attempting to run debirf on an ubuntu system:

0 $ DEBIRF_DISTRO=gutsy DEBIRF_MIRROR= debirf make --gpg-keyring=/usr/share/keyrings/ubuntu-archive-keyring.gpg rescue
Loading profile 'rescue'...
debirf: creating debirf root...
I: Retrieving Release
I: Retrieving Release.gpg
I: Checking Release signature
I: Valid Release signature (key id 630239CC130E1A7FD81A27B140976EAF437D05B5)
I: Retrieving Packages
I: Validating Packages
I: Resolving dependencies of required packages...
I: Resolving dependencies of base packages...
I: Found additional base dependencies: libstdc++6 I: Checking component main on
E: Couldn't find these debs: udhcpc
1 $ 

Hrm. Ubuntu's component naming scheme is different from debian's. debian divides its archive into a few components:

all DFSG-free packages with DFSG-free dependencies
packages that are binary-redistributable but otherwise fail to meet DFSG standards for freeness
DFSG-free packages that depend on packages from non-free to work properly.

Ubuntu divides things differently:

all free packages that Canonical claims to support
non-free packages supported by Canonical
community-supported, free packages
community-supported, non-free packages

It looks like udhcpc is in "universe" in ubuntu, and as such isn't being found by debootstrap, which probably only includes "main" and not "universe", by default.

I notice from debootstrap (8) that debootstrap itself provides a --components option. Proper use of this option could probably resolve this issue on ubuntu systems, but i'm not sure what the best way to pass that through to debirf is. Suggestions?

Change History (8)

comment:1 Changed 11 years ago by Daniel Kahn Gillmor

Ross said:

No luck here. I tried adding the --components=universe,main option to the create_bootstrap section of the debirf script. And I mean I tried adding it everywhere in that section. No change.


comment:2 Changed 11 years ago by jrollins

Ross reports that he was able to get the universe component added to debootstrap stage, and therefor get udhcpd installed:

The "--components=main,universe" option works in "create_debootstrap". The --components option needed to be between "include" and "exclude" (looks like I didn't try everywhere afterall...

Thanks, Ross. We'll try to figure out a way to fold this into the next release.

comment:3 Changed 11 years ago by jrollins

I'm not sure what the right solution is here. I feel like this might be more pointing to the need for separate releases, ala my suggestion in #87comment:1. Maybe we can include small patches for the releases for other distros? maintaining separate debs is a pain in the ass, though.

comment:4 Changed 11 years ago by jrollins

I think the simplest way to fix this is to just remove udhcpd from the INCLUDE list, and remove dhcp3-common and dhcp3-client from the EXCLUDE list. This adds a bit of bloat to the debirf image, but it's definitely the easiest way to fix this issue and keep things cross-distro compatible.

comment:5 in reply to:  2 Changed 11 years ago by jrollins

Replying to jrollins:

Ross thinks that the ordering of the component option is maybe not important after all.

comment:6 Changed 11 years ago by Daniel Kahn Gillmor

What's the difference in size between the two DHCP client implementations? Looking at a debian lenny system, it can't be more than ~1MB, since that's the total installed size of the dhcp3 package themselves:

[0 dkg@squeak ~]$ grep-status -Fpackage dhcp3 | egrep '^(Package|Installed-Size)'
Package: dhcp3-client
Installed-Size: 564
Package: dhcp3-common
Installed-Size: 536
[0 dkg@squeak ~]$ 

The other advantage to leaving it alone is that a distro could decide to make a change to the default DHCP client, and debirf would silently adopt the upstream change without extra work on our part.

If getting the size down is really critical (as it could be for the minimal image, we could create a module that tries to purge dhcp3-common and install udhcpd. For distros that don't conveniently allow this replacement, a user could just unlink that module from their profile.

comment:7 Changed 11 years ago by jrollins

Yea, I think it's better to go with the default. It just makes things much simpler, and we weren't saving that much bloat anyway. I'll go ahead and make the change.

comment:8 Changed 11 years ago by jrollins

Resolution: fixed
Status: newclosed

fixed in 0.18-1 [1016]

Note: See TracTickets for help on using tickets.