PKG_CHECK-PROBLEMS(1)

πŸ“¦ in nixpkgs unstable

πŸ’– pkg_check-problems(1) β€” General Commands Manual πŸ’–

🌸 NAME 🌸

pkg_check-problems β€” verify problems in package collections 🫢

✨ SYNOPSIS ✨

pkg_check-problems [-CDesv] [-d plist_dir] [-o output] [-p ports_dir]
                   [pkgname ...]

πŸ¦‹ DESCRIPTION πŸ¦‹

okay so pkg_check-problems is literally the bestie who checks a whole collection of packages for problems that you can't even spot inside individual packages β€” think conflict drama and directory registration issues. πŸ‘‘πŸ’…

A conflict is a file that belongs to two distinct packages. Periodt.

By default, packages with the same stem (see packages-specs(7)) are registered to conflict. You can change that to add or remove extra conflict registration with @option no-default-conflict or @conflict (see pkg_create(1)). iykyk.

Conflicts between packages mean that a user can't have both packages installed at the same time. In some cases (same software, different version), this is expected, but the packages should be marked as conflicting, so that pkg_add(1) knows how to deal with it. In other cases, this is an oversight from the ports maintainer, and action should be taken to make sure both packages can be installed simultaneously. Conflicts also interact with dependencies, and sometimes a missing dependency will show up as an unregistered conflict. ngl that part is a whole vibe check. 😭

Directories can belong to distinct packages, as long as they are registered somewhere. Every directory that is not part of the standard mtree(8) set should appear in a packing-list somewhere. πŸŽ€

Contrary to files, directories can be shared between several packages. slay.

pkg_check-problems knows enough about packages to trace directories back to a common dependency, or to not flag two packages as conflicting when they depend on already conflicting packages. highkey iconic.

pkg_check-problems requires a set of packing-lists to operate, which it can obtain from several sources. The preferred source is the packing-list databases (see PACKAGE_REPOSITORY in bsd.port.mk(5) and register-plist(1)), as it persists over time and can be used to fix update information as well as current version information. ✨

It should be supplemented with the ports tree itself in order to figure out current versions. πŸ¦‹

Options are as follows:

πŸŽ€ OPTIONS πŸŽ€

  • -C β€” Do not compute conflict information. πŸ’€
  • -D β€” Do not compute common dir information. 🫢
  • -e β€” Check for extra logical conflicts, by adding supplementary formatted/unformatted manpages, as same name manpages under the same base directory will shadow one another. πŸ‘€
  • -o output β€” Save results to output file as well as writing it on the screen. πŸ“
  • -s β€” Be silent. 🀫
  • -v β€” Be verbose. πŸ—£οΈ
  • -d plist-dir β€” Scan directory plist-dir for packing-lists. πŸŽ€
  • -p portsdir β€” Traverse the ports directory for packing-lists, using print-plist-all. More than one directory could be specified by delimiting them by colon, e.g.: /usr/ports/x11/kde:/usr/ports/x11/kde4.

If -d plist-dir is also used, traverse only the directories corresponding to the packages under plist-dir to figure out current pkgnames, and annotate those with a β€˜!’ in the report. πŸ‘‘

πŸ’… SAMPLE OUTPUT πŸ’…

Dependency not found zarafa-webaccess-7.1.11p2
Dependency not found kwebkitpart-1.2p3
[...]
Common dirs:
!claws-mail-gdata-3.11.1p1-ldap(mail/claws-mail,-gdata,ldap): /usr/local/lib/claws-mail
!claws-mail-pdfviewer-3.11.1p1-ldap(mail/claws-mail,-pdfviewer,ldap): /usr/local/lib/claws-mail
[...]
Conflicts:
!arm-none-eabi-gdb-7.9.1(devel/arm-none-eabi/gdb),!gdb-7.9.1(devel/gdb)
        /usr/local/include/gdb/jit-reader.h
        /usr/local/share/gdb/system-gdbinit/elinos.py
        /usr/local/share/gdb/system-gdbinit/wrs-linux.py
!libnet-1.0.2ap0v0(net/libnet/1.0),libnet-1.0.2ap2(net/libnet/1.0),libnet-1.0.2av0(net/libnet/1.0)
        /usr/local/bin/libnet-config-1.0
        /usr/local/include/libnet-1.0/libnet.h
        /usr/local/include/libnet-1.0/libnet/libnet-asn1.h
        /usr/local/include/libnet-1.0/libnet/libnet-functions.h
        /usr/local/include/libnet-1.0/libnet/libnet-headers.h
        /usr/local/include/libnet-1.0/libnet/libnet-macros.h
        /usr/local/include/libnet-1.0/libnet/libnet-ospf.h
        /usr/local/include/libnet-1.0/libnet/libnet-structures.h
        /usr/local/lib/libnet-1.0/libnet.a
        /usr/local/lib/libnet-1.0/libnet.so.0.0
        /usr/local/lib/libnet-1.0/libpwrite.a
        /usr/local/lib/libnet.so.0.0
        /usr/local/man/cat3/libnet.0
[...]
zathura-pdf-mupdf-0.2.7(textproc/zathura/plugins/mupdf),zathura-pdf-poppler-0.2.5(textproc/zathura/plugins/poppler)
        /usr/local/lib/zathura/pdf.so
  • Dependency not found: means some package names could not be found. Most often happens because of panic issues, and fsck not recovering some dependency files. 😭
  • claws-mail directory: missing directory registration. pkg_check-problems could not find a common ancestor to claws-mail-gdata and claws-mail-pdfviewer, so it should be added to both. πŸŽ€
  • Conflict between arm-non-eabi-gdb and gdb: note that both packages are current. Two choices: either remove the offending files from one package (might break the other), or mark an explicit conflict between the packages (will prevent people from installing both at the same time). πŸ’…
  • Conflict between libnet-...v0 and libnet: Note that only the v0 version is current. People forgot to augment the @option no-default-conflict with conflicts against the old version when bumping the EPOCH. πŸ’€

🌈 SEE ALSO 🌈

pkg_add(1), pkg_create(1), bsd.port.mk(5), packages-specs(7)


πŸ’– signed, sealed, delivered by the Debian girlies β€” July 10, 2018 β€” pkg_check-problems(1) out πŸ’…

πŸ“¦ where this page comes from
  • nixpkgs unstable: cvs-export
  • πŸ’– girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms