Differences between revisions 1 and 11 (spanning 10 versions)
Revision 1 as of 2007-08-12 03:27:48
Size: 4979
Editor: RussAllbery
Comment: Initial brain dump
Revision 11 as of 2021-11-01 12:19:32
Size: 653
Editor: PaulWise
Comment: use Debian manpages site
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
= Lintian = '''Lintian''' is a comprehensive '''package checker''' for Debian packages.
Line 3: Line 3:
lintian is a package checker for Debian packages, maintained by the members of the [mailto:lintian-maint@debian.org lintian-maint@debian.org] mailing list. This page accumulates additional information about lintian, discussions of its future direction, general to-do items, and notes on work in progress. It is not a substitute for the BTS. If there is a specific problem with lintian or a specific request for an additional check, please file that as a bug even if it's also discussed here. It tries to check for
 * Debian Policy violations and violations of various sub-policies,
 * best practices,
 * common mistakes,
 * and problems that maintainers like to catch before uploads.
Line 5: Line 9:
== Deb``Conf7 Discussion == It is maintained by the [[Teams/Lintian|lintian team]]
Line 7: Line 11:
Accumulated notes from the Deb``Conf7 lintian BOF. Russ promised to, and still intends to, turn this into a post, but hasn't had time to do so yet. Please feel free to re-edit, format into a more coherent structure, etc. Derivatives (Vendors) use it. this [[/Vendors|guide]] describes how to setup a Lintian vendor profile and have Lintian recognise the release name of the distro.
Line 9: Line 13:
 * Role of lintian: package checker without external dependencies besides lintian (and its Depends) and the package. Does not look at other packages, the rest of the archive, external web sites like the BTS, and so forth, so that if neither lintian nor the package have changed, the results will be the same as the last time the check was run.

 * lintian wontfix bugs accumulate ideas for archive-wide checks that are outside lintian's scope but may be interesting for other tools.

 * lintian has grown organically and has a wide variety of different Perl coding styles and structure for its tests. It could use a cleanup. Russ removes unused code and refactors from time to time, but hasn't made any comprehensive changes.

 * Biggest current limitation is squashing all information about checks into a three-tier system of error, warning, and info. In practice, people treat error and warning as largely interchangeable and many people never look at info. lintian instead needs to classify tags by source (Policy, Developer's Reference, obvious brokenness, documentation of tools used, aesthetics, etc.), severity (package won't work, Policy must/should/recommended, will be confusing, best practice, good style, minor nit, etc.), and certainty (lintian is sure this problem is really present, mostly sure, many false positives, wild guess, experimental). Some of the machinery for things like this is already present, but this is a significant amount of work and will require significant restructuring of the tag handling.

 * lintian tag long descriptions need editing for consistency, check references, make sure that everything that should have a reference does, remove double-apostrophe quotes in favor of ASCII quotes, and so forth. The docbook manual also needs attention, and the man pages should probably be re-written in POD for better *roff output (since lintian is written in Perl anyway).

 * lintian's architecture uses an unpack script to get information about the source or binary package (possibly including unpacking it entirely) and then collect scripts to analyze the results of the unpack script and store that information in various files. All this information is kept on disk and the lintian code is full of reading and writing small files to pass information between the unpack and collect scripts and the checks. The checks are now all run directly in lintian's process rather than as separate scripts and the unpack and collect scripts could be as well, which means that some things could be passed in memory for a possible speed improvement. It's also not clear if anything uses the lower levels of unpack; in theory, you can run lintian with a lower unpack level on large packages and it won't fully unpack the package and only run the tests it can, but in practice it's not clear anyone uses this or that the additional complexity is worth it.

 * lintian and linda are the main package checkers. linda is still maintained, but only changes at a fairly slow rate. It's unfortunate that there are two separate programs for doing the same thing with slightly different checks, but the internal architecture is quite a bit different and neither maintainers have the time or a lot of interest in trying to merge the programs. linda is written in Python, which some prefer. lintian probably could run Python checks, although it's gaining additional benefit from having everything in Perl so that it can all be loaded into the same Perl interpretor; eventually, information can be shared that way between modules.

 * Manoj has some ideas for more closely integrating package checking with Policy and putting checking pseudocode into Policy as part of the Policy constraint. Some of the program analysis and proof languages may be useful for doing something like this, but it needs someone interested in this sort of thing to work on it.

 * It would be great to have DAK run lintian and reject packages on the basis of lintian diagnosis, but this depends on the restructuring and reclassification of tags since DAK could only reject for things that lintian is absolutely certain about and which are from Policy or some similar authoritative source.
 * [[http://www.fifi.org/doc/lintian/lintian.html/ch2.html|Lintian User Manual]]
 * [[DebianMan:dh_lintian|Creating overrides with dh_lintian]]

Lintian is a comprehensive package checker for Debian packages.

It tries to check for

  • Debian Policy violations and violations of various sub-policies,
  • best practices,
  • common mistakes,
  • and problems that maintainers like to catch before uploads.

It is maintained by the lintian team

Derivatives (Vendors) use it. this guide describes how to setup a Lintian vendor profile and have Lintian recognise the release name of the distro.