freebsd-dev/tools/pkgbase
Ed Maste 2a3bd08708 pkgbase: hide duplicate METALOG directory warnings under verbose
Creating directories multiple times is an inherent side effect of the
way installation is done.  Hide warnings from duplicate directory
entries (with identical metadata) under metalog_reader's verbose mode.

Duplicate file entries are always reported.  They currently generate
warnings but will be switched to errors once the few instances currently
in the tree are fixed.

PR:		244596, 271178
Reviewed by:	kevans
Sponsored By:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D39898
2023-05-01 15:22:36 -04:00
..
metalog_reader.lua pkgbase: hide duplicate METALOG directory warnings under verbose 2023-05-01 15:22:36 -04:00
README.md Update pkgbase metalog tool README to match installed filename 2022-11-18 15:11:52 -05:00

metalog_reader.lua is a script that reads METALOG file created by pkgbase (make packages) and generates reports about the installed system and issues

the script accepts an mtree file in a format that's returned by mtree -c | mtree -C

synopsis:

metalog_reader.lua [-h] [-a | -c | -p [-count] [-size] [-f...]] [-W...] [-v] metalog-path

options:

  • -a prints all scan results. this is the default option if no option is provided.
  • -c lints the file and gives warnings/errors, including duplication and conflicting metadata
    • -Wcheck-notagdir entries with dir type and no tags will be also included the first time they appear (1)
  • -p list all package names found in the file as exactly specified by tags=package=...
    • -count display the number of files of the package
    • -size display the size of the package
    • -fsetgid only include packages with setgid files
    • -fsetuid only include packages with setuid files
    • -fsetid only include packages with setgid or setuid files
  • -v verbose mode
  • -h help page

some examples:

  • metalog_reader.lua -a METALOG prints all scan results described below. this is the default option
  • metalog_reader.lua -c METALOG only prints errors and warnings found in the file
  • metalog_reader.lua -c -Wcheck-notagdir METALOG prints errors and warnings found in the file, including directories with no tags
  • metalog_reader.lua -p METALOG only prints all the package names found in the file
  • metalog_reader.lua -p -count -size METALOG prints all the package names, followed by number of files, followed by total size
  • metalog_reader.lua -p -size -fsetid METALOG prints packages that has either setuid/setgid files, followed by the total size
  • metalog_reader.lua -p -fsetuid -fsetgid METALOG prints packages that has both setuid and setgid files (if more than one filters are specified, they are composed using logic and)
  • metalog_reader.lua -p -count -size -fsetuid METALOG prints packages that has setuid files, followed by number of files and total size

(1) if we have two entries

./bin type=dir uname=root gname=wheel mode=0755
./bin type=dir uname=root gname=wheel mode=0755 tags=...

by default, this is not warned. if the option is enabled, this will be warned as the second line sufficiently covers the first line.