Presentation by Maelick Claes of a paper at the Mining Software Repositories (MSR 2015) conference. Joint work with Tom Mens, Roberto Di Cosmo and Jerome Vouillon.
Abstract: Users and developers of software distributions are often confronted with installation problems due to conflicting packages. A prototypical example of this are the Linux distributions such as Debian. Conflicts between packages have been studied under different points of view in the literature, in particular for the Debian operating system, but little is known about how these package conflicts evolve over time. We present an extensive analysis of the evolution of package incompatibilities, spanning a decade of the life of the Debian stable and testing distributions for its most popular architecture, i386. Using the technique of survival analysis, this empirical study sheds some light on the origin and evolution of package incompatibilities, and provides the basis for building indicators that may be used to improve the quality of package-based distributions.
A Historical Analysis of Debian Package Incompatibilities
1. A Historical Analysis of Debian Package
Incompatibilities
Ma¨elick Claes, Tom Mens, Roberto Di Cosmo, J´erˆome Vouillon
MSR - 17th May 2015
2. Introduction Empirical analysis Conclusion
GNU/Linux distribution since 1993
Well known for its stability
deb packages and package manager APT
Three different distributions: stable, testing and unstable
Claes, Mens, Di Cosmo, Vouillon A Historical Analysis of Debian Package Incompatibilities MSR 2015 2 / 10
3. Introduction Empirical analysis Conclusion
control files
Debian packages defined by a Debian Control File (DCF) containing
among other meta-data
Dependencies with other packages
Conflicts with other packages
Providing a virtual package
Example
Package: xul-ext-adblock-plus
Source: adblock-plus
Version: 2.1-1+deb7u1
Installed-Size: 2487
Maintainer: Dmitry E. Oboukhov <unera@debian.org>
Architecture: all
Replaces: adblock-plus (<< 1.1.1-2)
Provides: adblock-plus, iceape-adblock-plus,
icedove-adblock-plus, iceweasel-adblock-plus
Depends: iceweasel (>= 8.0) | icedove (>= 8.0) | iceape (>= 2.5)
Conflicts: mozilla-firefox-adblock
Breaks: adblock-plus (<< 1.1.1-2), iceape (>> 2.13 a1+),
iceape (<< 2.5), icedove (<< 8.0), iceweasel (<< 8.0)
[...]
Claes, Mens, Di Cosmo, Vouillon A Historical Analysis of Debian Package Incompatibilities MSR 2015 3 / 10
4. Introduction Empirical analysis Conclusion
Declared conflicts and strong conflicts
Warning: conflicts propagate into strong conflicts!
We call declared conflicts the conflicts declared inside DCF
But all packages depending on xul-ext-adblock-plus will be
incompatible with all packages depending on mozilla-firefox-adblock!
These incompatibilities are called strong conflicts
Data analysis
Analysis of strong conflicts in snapshots of all DCF
From 12th March 2005 to 4th May 2015
Stable and testing distributions for i386 architecture
From 15k packages in 2005 to 43k packages
> 100 Go of compressed raw data, > 1 To of compressed processed
data.
Claes, Mens, Di Cosmo, Vouillon A Historical Analysis of Debian Package Incompatibilities MSR 2015 4 / 10
5. Introduction Empirical analysis Conclusion
How to track down all incompatibilities?
Directly on the dependency graph? Too difficult!
a
b f
v
c d
#
e
#
g
h
Claes, Mens, Di Cosmo, Vouillon A Historical Analysis of Debian Package Incompatibilities MSR 2015 5 / 10
6. Introduction Empirical analysis Conclusion
How to track down all incompatibilities?
Directly on the dependency graph? Too difficult!
a
b f
v
c d
#
e
#
g
h
Using the coinst tool, we can manage it
coinst output:
c d a,e,f
Claes, Mens, Di Cosmo, Vouillon A Historical Analysis of Debian Package Incompatibilities MSR 2015 5 / 10
7. Introduction Empirical analysis Conclusion
Survival analysis
Kaplan Meier estimator and curve: gives the probability that an event
takes at least n units of time to occur
Number of years before all conflicts get removed from a strong
conflicting package
0 2 4 6 8 10
0.00.20.40.60.81.0
After package introduction
Upon package introduction
Claes, Mens, Di Cosmo, Vouillon A Historical Analysis of Debian Package Incompatibilities MSR 2015 6 / 10
8. Introduction Empirical analysis Conclusion
Survival analysis
Time before a strong conflict is introducted in a package
The longer a package stays without conflict, the less likely one will
appear
0 2 4 6 8 10
0.00.20.40.60.81.0
Claes, Mens, Di Cosmo, Vouillon A Historical Analysis of Debian Package Incompatibilities MSR 2015 7 / 10
9. Introduction Empirical analysis Conclusion
Detecting new issues
Trend breaks Main root cause (manually identified) Tool able to detect Relevance
+4379/-4201 updated x11-common conflicts with videogen comigrate medium
+2364/-2371 new libgdk-pixbuf* conflicts with libgtk2.0-0 this paper medium
+1658 new liboss-salsa-asound2 conflicts with all alsa tools this paper minor
+1279/-809 reinstallable cdebconf conflicts with debconf this paper serious
+1268/-1270 updated initscripts conflicts with sysklogd comigrate serious
+1188/-2442 updated python conflicts with ppmtofb challenged minor
+1025/-1282 updated initscripts conflicts with selinux-policy-default comigrate serious
+859/-1126 new libopenblas-base conflicts with libatlas3gf-* this paper medium
+763 updated libsdl1.2debian conflicts with liboss-salsa-asound2 comigrate minor
+758/-756 updated netbase conflicts with ifupdown comigrate serious
+727 new libopenmpi1.6 conflicts with libopenmpi1.3 comigrate medium
same less conflicts with man comigrate serious
+706/-732 updated libldap-2.4-2 conflicts with libldap2 comigrate minor
+682/-1074 updated libpam-modules conflicts with libpam-umask comigrate minor
+633/-577 updated initscripts conflicts with bootchart comigrate minor
+632 new package libgif4 conflicts with libungif4g this paper minor
+536/-558 new packages libhttp-* conflicts with libwww-perl this paper medium
Claes, Mens, Di Cosmo, Vouillon A Historical Analysis of Debian Package Incompatibilities MSR 2015 8 / 10
10. Introduction Empirical analysis Conclusion
Conclusion
While conflicts are declared for design reasons, they can break a lot of
packages because of mistakes spreading through dependencies
Such incompatibilities are generally detected and solved quickly
thanks both to the work done by the community but also because of
the existence of support tools
Based on a historical analysis and trend breaks we can find problems
not detected by existing tools! (i.e. we can build new tools or
improve current ones)
Claes, Mens, Di Cosmo, Vouillon A Historical Analysis of Debian Package Incompatibilities MSR 2015 9 / 10
11. Introduction Empirical analysis Conclusion
Thanks for your attention
Presentation slides
http://maelick.net/presentations/msr2015
Replicate our study
https://github.com/ecos-umons/DebianCoinstEvol
Questions?
Claes, Mens, Di Cosmo, Vouillon A Historical Analysis of Debian Package Incompatibilities MSR 2015 10 / 10