Lintian is a Debian package checker. It can be used to check binary and source
packages for compliance with the Debian policy and for other common packaging
errors.
Lintian uses an archive directory, called laboratory, in which it stores
information about the packages it examines. It can keep this information
between multiple invocations in order to avoid repeating expensive
data-collection operations. It's also possible to check the complete Debian
archive for bugs -- in a timely manner.
1.2 The intention of Lintian
Packaging has become complicated--not because dpkg is complicated (indeed,
dpkg-deb is very simple to use) but because of the high requirements of our
policy. If a developer releases a new package, she has to consider hundreds of
guidelines to make the package `policy compliant.'
All parts of our policy have been introduced by the same procedure: Some
developer has a good idea how to make packages more `unique' with respect to a
certain aspect--then the idea is discussed and a policy proposal is prepared.
If we have a consensus about the policy change, it's introduced in our manuals.
Therefore, our policy is not designed to make life harder for the
maintainers! The intention is to make Debian the best Linux distribution out
there. With this in mind, lots of policy changes are discussed on the mailing
lists each week.
But changing the policy is only a small part of the story: Just having some
statement included in the manual does not make Debian any better. What's
needed is for that policy to become `real life,' i.e., it's
implemented in our packages. And this is where Lintian comes in:
Lintian checks packages and reports possible policy violations. (Of course,
not everything can be checked mechanically -- but a lot of things can and this
is what Lintian is for.)
Thus, Lintian has the following goals:
To give us some impression of the `gap' between theory (written policy) and
praxis (current state of implementation).
From the results of the first two Lintian checks I implemented, I see that
there is a big need to make this gap smaller. Introducing more policy aspects
is worthless unless they are implemented. We first should fix packages to
comply with current policy before searching for new ways to make policy more
detailed. (Of course, there are also important policy changes that need to be
introduced -- but this is not what's meant here.)
To make us re-think about certain aspects of our policy.
For example, it could turn out that some ideas that once sounded great in
theory are hard to implement in all our packages -- in which case we should
rework this aspect of policy.
To show us where to concentrate our efforts in order to make Debian a
higher quality distribution.
Most release requirements will be implemented through policy. Lintian reports
provide an easy way to compare all our packages against policy and
keep track of the fixing process by watching bug reports. Note, that all this
can be done automatically.
To make us avoid making the same mistakes all over again.
Being humans, it's natural for us to make errors. Since we all have the
ability to learn from our mistakes, this is actually no big problem. Once an
important bug is discovered, a Lintian check could be written to check for
exactly this bug. This will prevent the bug from appearing in any future
revisions of any of our packages.
1.3 Design issues
There are three fields of application for Lintian:
one person could use Lintian to check the whole Debian archive and reports
bugs,
each maintainer runs Lintian over her packages before uploading them,
dinstall checks packages which are uploaded to master before they are installed
in the archive.
The authors of Lintian decided to use a very modular design to achieve the
following goals:
flexibility: Lintian can be used to check single packages or the whole archive
and to report and keep track of bug reports, etc.
completeness: Lintian will eventually include checks for (nearly) everything
that can be checked mechanically.
uptodateness: Lintian will be updated whenever policy is changed.
performance: Lintian should make it possible to check single packages within
seconds or check the full archive within a few hours.
1.4 Disclaimer
Here is a list of important notes on how to use Lintian:
Lintian is not finished yet and will probably never be. Please don't use
Lintian as a reference for Debian policy. Lintian might miss a lot of policy
violations while it might also report some violations by mistake. If in doubt,
please check out the policy manuals.
The Debian policy gives the maintainers a lot of freedom. In most cases, the
guidelines included in the manuals allow exceptions. Thus, if Lintian reports
a policy violation on a package and you think this is such an exception (or if
you think Lintian has a bug itself) please contact the authors of Lintian about
this. There is an `override' file which tells Lintian about policy exceptions.
Please DO NOT use Lintian to file bug reports (neither single ones nor mass bug
reports). This is done by the authors of Lintian already and duplication of
efforts and bug reports should be avoided! If you think a certain bug is
`critical', and should be reported/fixed immediately, please contact the
maintainer of the corresponding package and/or the Lintian maintainers.
Any feedback about Lintian is welcomed! Please send your comments to the
lintian maintainers lintian-maint@debian.org.