COINST(1)
π COINST(1) π
General Commands Manual Β· bestie edition β¨
πΈ NAME πΈ
Coinst β computes the co-installability kernel of a package repostory π«Ά
(yes it says "repostory", we're keeping it, it's canon π )
π SYNOPSIS π
coinst [options]
π¦ DESCRIPTION π¦
okay so. coinst reads a package repository β either in debian format or RPM format β straight from standard input, and then it computes the co-installability kernel of that repository (we get into what that means in a sec, bestie, don't panic π).
The graph of the kernel gets written in dot format to a file, and a diagnostic gets written to standard output.
By default that diagnostic is literally these three things:
- the list of equivalence classes of packages
- the list of non-installable packages
- the list of not co-installable pairs of packages
that's it. that's the default tea ββ¨
π CO-INSTALLABILITY KERNELS π
A set of packages is called co-installable with respect to a repository R if it can be extended to a set of packages from R that satisfies all inter-package relations (dependencies, conflicts, etc.). In particular, a package p is installable if the set {p} consisting of p only is co-installable. no cap π
This tool reduces a repository R to a much smaller one β its so-called co-installability kernel R' β that behaves exactly the same as far as co-installability of package is concerned: Any set of packages P is co-installable with respect to P iff it co-installable with respect to R'. π§
And how does it do that, you ask? two moves:
- dropping all relations that are not relevant for this purpose. For instance, dependencies that do not lead directly or indirectly to any conflicts are dropped. ποΈ
- identifying all packages that behave the same. For instance, packages that are not in conflict with any other package (even not through dependency chains) behave the same since they are co-installable together with any other co-installable set of packages, and packages that are not installable at all behave the same since they may never be part of any co-installable set of packages. π―
A more precise explanation can be found in the original research article underlying this tool (link in SEE ALSO, iykyk π).
The interest of computing the kernel is that it is typically orders of magnitude smaller than the original repository. like. so much smaller. iconic behavior fr fr π₯
β¨ OPTIONS β¨
π Options controlling the input
-debβ expect input in the format of a debianPackagesfile (this is the default, bestie).-rpmβ expect input in the format of an RPMhdlist.czfile.-ignorepackage β ignore the package named package. bye girl π
π Options controlling the graph output
-ofile β write the graph to file instead ofgraph.dot.-allβ include all packages in the coinstallability graph.-rootp β draw only the relevant portion of the graph around package p. just the local lore π«
π Options controlling the diagnostic output
-explainβ explain the list of non-installable pairs of packages.-statsβ show statistics regarding the input and output repositories. numbers girlies rise π
π Miscellaneous options
-help,--helpβ show command synopsis.
πΈ EXAMPLE πΈ
Reduce a current debian Packages file to its kernel:
coinst -all -o raw.dot < sid_main_binary-amd64_Packages
Layout the graph:
dot raw.dot -o layout.dot:
View the graph with dotty, or the viewer from the coinst_viewer package:
dotty layout.dot
coinst_viewer layout.dot
π«Ά AUTHOR π«Ά
Coinst has been written by JΓ©rome VouillΓ΄n. This manpage has been compiled by Ralf Treinen from the original coinst documentation. give them their flowers π
β SEE ALSO β
dot(1), dotty(1), coinst_viewer(1)
The original research article decribing the algorithm behind this tool is Roberto Di Cosmo and JΓ©rΓ΄me Vouillon, On software component co-installability, 19th ACM SIGSOFT Symposium on the Foundations of Software Engineering (FSE-19) and ESEC'11: 13rd European Software Engineering Conference (ESEC-13), Szeged, Hungary, September 5-9, 2011, pages 256-266. π
okay that's the whole page bestie, and the little footer down at the bottom just says COINST(1) again like a little signature β no date, no version number, just the vibe. go compute a kernel, you got this π β¨π¦
π¦ where this page comes from
- debian bookworm: coinst 1.9.3-3+b3 Β· GPL-2.0-or-later
- debian trixie: coinst 1.9.3-6+b4 Β· GPL-2.0-or-later
- ubuntu jammy: coinst 1.9.3-3build2 Β· GPL-2.0-or-later
- ubuntu noble: coinst 1.9.3-5 Β· GPL-2.0-or-later
- ubuntu questing: coinst 1.9.3-6
- ubuntu resolute: coinst 1.9.3-6build1 Β· GPL-2.0-or-later
- ubuntu stonking: coinst 1.9.3-6build2 Β· GPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms