#1058994 debian-installer: fakeroot is pseudo-required

#1058994#5
Date:
2023-12-19 06:55:42 UTC
From:
To:
Hello Debian-installer team,

Recently the dependency tree of the packages that are required for building the
Debian Installer (using mk-build-deps) has changed, now fakeroot is no longer
installed per default in chroot environments.
However, the 'daily-build' script still has the default value for 'ROOTCMD' as
'fakeroot'.

This issue was seen on Jenkins, where the installer is rebuilt from git for the
sid images (as part of the live image build) [1]

I've built 2 variants of the bookworm image, one with additionally installing
fakeroot in my chroot environment and one with 'ROOTCMD=" "'. Both are
identical, so fakeroot is indeed not required for a proper build.

Can the default value for ROOTCMD be changed to an empty value (and the
corresponding check be removed)? [3]

With kind regards,
Roland Clobus
---
[1]
https://jenkins.debian.net/view/live/job/reproducible_debian_live_build_standard_sid/671/console
P: building the debian-installer
./daily-build: line 117: fakeroot: command not found
E: An unexpected failure occurred, exiting...

[2] /home/roland/git.nobackup/live-build/test/rebuild.sh --configuration
standard --debian-version bookworm --timestamp archive --installer-origin git

[3] https://sources.debian.org/src/debian-
installer/20230607%2Bdeb12u4/build/daily-build/#L52

#1058994#10
Date:
2025-08-29 08:46:07 UTC
From:
To:
Hi Roland,

I have opened a MR to make fakeroot a requirement:

https://salsa.debian.org/installer-team/debian-installer/-/merge_requests/68

This is needed for reproducible builds as the buildinfo file otherwise
does not list fakeroot. See the MR for more explanation. Hope that works
for you.

I have also send a script to do the daily builds in sbuild+unshare to
rt.debian.org #9664.

Cheers Jochen

* Roland Clobus <rclobus@rclobus.nl> [2023-12-19 07:55]:

#1058994#15
Date:
2025-08-29 08:57:13 UTC
From:
To:
Hi,

Jochen Sprickerhof <jspricke@debian.org> (2025-08-29):

Those happened earlier:
 - d495f01afe467d054f6fd93dffc8cc22d00d106d
 - 5f8888f0dfa11fdd577aee209a935161aa3663ff

I'm happy to have a comment around the fakeroot package in Build-Depends but
let's avoid duplicates? :-)


Cheers,

#1058994#20
Date:
2025-08-29 09:21:55 UTC
From:
To:
Hello,

I'm wondering whether the fakeroot package is actually required.
As I wrote in the initial text, I did not need to have fakeroot
available, and could prevent calls to fakeroot by setting the
environment variable ROOTCMD to a space (as an empty value would still
set it to 'fakeroot').

As I understand it, invoking 'chroot' requires being root (it is in
/usr/sbin), so within the chroot-environment one is already root and
therefore does not need fakeroot on top.
But there might be some scenarios, that I'm unaware of, that invoke the
scripts of the installer differently and therefore the package fakeroot
is indeed a requirement.

I'm also wondering whether !68 is still required, given that fakeroot
has been added as a dependency about 2 weeks ago. Is the MR based on
work that started earlier?

With kind regards,
Roland

#1058994#25
Date:
2025-08-29 09:31:44 UTC
From:
To:
Roland Clobus <rclobus@rclobus.nl> (2025-08-29):

I'll let Jochen comment on that, who's apparently more familiar with
those things than I am. Speaking of which, the initial R³ addition
(which is modified by !68) happened by applying a suggestion from Niels.

If you look at timestamps, you'll see there are just a few hours between
my commits and Jochen's, so presumably some work was being staged.


Cheers,

#1058994#30
Date:
2025-08-29 10:16:27 UTC
From:
To:
Hi Cyril,

thanks a lot for the speedy reply!

* Cyril Brulebois <kibi@debian.org> [2025-08-29 10:57]:

Ha, missed that one while rebasing my commit :).

Oh, thanks for cleaning up after my change :).

Agreed and updated the MR.

* Cyril Brulebois <kibi@debian.org> [2025-08-29 11:31]:

build/Makefile used mknod which needs (real) root or fakeroot (that
tracks the faked device files). So when Niels tested setting R³
src:debian-installer did not depend on fakeroot and the package FTBFSed.
The simple solution was to set R³ to binary-targets so dpkg-buildpackage
runs with fakeroot. But actually only build/Makefile needs it so we can
drop the binary-targets again.

I recommend using my patch from the RT ticket to not run the daily
builds with real root, btw.

Yes it is required as currently R³ being binary-targets triggers a
special setup in debrebuild to work around the missing fakeroot in the
buildinfo files. That setup makes build/Makefile not execute fakeroot
and the mknod and build fails. It is also no longer needed to set R³ as
the build works without \o/.

Cheers Jochen

#1058994#35
Date:
2025-08-30 10:50:20 UTC
From:
To:
* Jochen Sprickerhof <jspricke@debian.org> [2025-08-29 12:16]:

I read #1091668 now and added --owner root:0 --group root:0 to tar, as
Niels suggested. I have also adopted a patch from !38 make the mtimes in
the mini.iso reproducible. The only difference are now in the mini.iso
files, though diffoscope says the file content is the same. Happy to get
any pointers there but would be great to get !68 merged already.

Cheers Jochen