Re: pkgbase checksums

From: Baptiste Daroussin <bapt_at_FreeBSD.org>
Date: Mon, 17 Jan 2022 15:20:44 UTC
On Mon, Jan 17, 2022 at 04:17:46PM +0100, Rosenke wrote:
> On 17.01.22 16:12, Rosenke wrote:
> > On 13.01.22 13:57, Baptiste Daroussin wrote:
> > > On Thu, Jan 13, 2022 at 11:33:55AM +0100, Stefan Esser wrote:
> > > > Am 13.01.22 um 10:36 schrieb Henrik Rosenke:
> > > > > Hello,
> > > > > 
> > > > > what is the correct way to handle pkg checksum mismatches in
> > > > > pkgbase? (pkg
> > > > > check -sa)
> > > > > For example after installing bash or editing /etc/hosts
> > > > > there are checksum
> > > > > mismatches:
> > > > > 
> > > > >      FreeBSD-clibs-12.2.s20220105232846: checksum mismatch
> > > > > for /etc/hosts
> > > > >      FreeBSD-clibs-12.2.s20220105232846: checksum mismatch
> > > > > for /etc/shells
> > > > > 
> > > > > I workaround this after setting up the jail by executing pkg
> > > > > check -r but this
> > > > > doesnt seem right to me. Also this doesnt handle
> > > > > modifications made afterwards.
> > > > > In normal pkgs we got the ability to provide a default and
> > > > > modify this, for
> > > > > this files no checksums are stored from what i know.
> > > > I'm not a pkgbase user, but I'd think that this could be fixed
> > > > by using @sample to have e.g. /etc/hosts.sample with a checksum,
> > > > which is copied to /etc/hosts if that file does not exist during
> > > > installation.
> > > > 
> > > > This logic works great for ports, but had the disadvantage of
> > > > doubling the number of files in /etc that are installed that way,
> > > > since the .sample file will have to stay as part of the installed
> > > > pkgbase package and may occasionally be updated.
> > > > 
> > > > That would also allow a special version of etcupdate to detect
> > > > changed .sample files and to perform a 3-way merge on the installed
> > > > files as is possible when building from source.
> > > > 
> > > > Regards, STefan
> > > We have @config for base were pkg will do a 3 way merge, just those
> > > files are
> > > probably not marked as @config and should.
> > > 
> > > (@config is native while @sample is external and define only in the
> > > ports tree)
> > > 
> > > if they are marked as such, then it means we have a bug in pkg
> > > checksum as it
> > > should not check the checksum of the files marked @config
> > > 
> > > Best regards,
> > > Bapt
> > I tried it again with pkg 1.17.5 and FreeBSD 12.3 packages but got the
> > same Error. The @config section is included in the packages:
> > pkg info -R FreeBSD-clibs
> > config: [
> >     "/etc/nsswitch.conf",
> >     "/etc/libmap.conf",
> >     "/etc/hosts",
> >     "/etc/protocols",
> >     "/etc/netconfig",
> >     "/etc/hosts.equiv",
> >     "/etc/rpc",
> >     "/etc/mac.conf",
> >     "/etc/shells",
> >     "/etc/networks"
> > ]
> > 
> > In total these are now 9 cheksum mismatches in the pkgbase jail:
> > === root@dsssrvt4j1 (pts/2) ~ 19(3) -> pkg check -sa
> > Checking all packages:   1%
> > FreeBSD-clibs-12.2.s20220114103031: checksum mismatch for /etc/hosts
> > FreeBSD-clibs-12.2.s20220114103031: checksum mismatch for /etc/shells
> > Checking all packages:  78%
> > FreeBSD-runtime-12.2.s20220114103031: checksum mismatch for /.profile
> > FreeBSD-runtime-12.2.s20220114103031: checksum mismatch for
> > /etc/locate.rc
> > FreeBSD-runtime-12.2.s20220114103031: checksum mismatch for
> > /etc/login.conf
> > FreeBSD-runtime-12.2.s20220114103031: checksum mismatch for
> > /etc/sysctl.conf
> > FreeBSD-runtime-12.2.s20220114103031: checksum mismatch for
> > /etc/syslog.conf
> > FreeBSD-runtime-12.2.s20220114103031: checksum mismatch for /etc/ttys
> > FreeBSD-runtime-12.2.s20220114103031: checksum mismatch for
> > /root/.profile
> > Checking all packages: 100%
> > 
> Whoops,  copied the wrong output:
> === root@dsssrvt4j1 (pts/1) ~ 1(3) -> pkg check -sa
> Checking all packages:   1%
> FreeBSD-clibs-12.3.s20220117084939: checksum mismatch for /etc/hosts
> FreeBSD-clibs-12.3.s20220117084939: checksum mismatch for /etc/shells
> Checking all packages:  78%
> FreeBSD-runtime-12.3.s20220117084939: checksum mismatch for /etc/locate.rc
> FreeBSD-runtime-12.3.s20220117084939: checksum mismatch for /etc/login.conf
> FreeBSD-runtime-12.3.s20220117084939: checksum mismatch for /etc/motd
> FreeBSD-runtime-12.3.s20220117084939: checksum mismatch for /etc/sysctl.conf
> FreeBSD-runtime-12.3.s20220117084939: checksum mismatch for /etc/syslog.conf
> FreeBSD-runtime-12.3.s20220117084939: checksum mismatch for /etc/ttys
> Checking all packages: 100%
> 

Here we are ;), the bug is on my side then :D, we pkg devs (I said we because
maybe manu will be faster than me on this) will dive in the code and fix.

Best regards
Bapt