Mancoosi

Thread of posts related to work in the Mancoosi project (see http://www.mancoosi.org)

Entries feed

Thursday, October 30 2014

Saved (yet another time) by an external solver for apt!

Did you know that you can ask apt-get to invoke an external solver for handling the dependency hell that sometimes plagues your upgrades? Well, just now, again, this feature saved my day, and it is just a matter of typing a short option!

Instead of the standard

apt-get install libreoffice

that failed to propose a decent upgrade, as detailed later, I typed

 apt-get --solver aspcud install libreoffice

that returned this pretty good solution

apt-get --solver aspcud install libreoffice
Reading package lists...
Building dependency tree...
Reading state information...
Execute external solver...
The following extra packages will be installed:
  coinor-libcbc3 coinor-libcgl1 coinor-libclp1 coinor-libcoinmp1
  coinor-libcoinutils3 coinor-libosi1 libabw-0.1-1 libcdr-0.1-1
  libe-book-0.1-1 libetonyek-0.1-1 libfreehand-0.1-1 libgltf-0.0-0
  libmspub-0.1-1 libmwaw-0.3-3 libodfgen-0.1-1 liborcus-0.8-0 libpython3.4
  libpython3.4-minimal libpython3.4-stdlib libreoffice-base
  libreoffice-base-core libreoffice-base-drivers libreoffice-calc
  libreoffice-common libreoffice-core libreoffice-draw libreoffice-gtk
  libreoffice-impress libreoffice-java-common libreoffice-math
  libreoffice-style-galaxy libreoffice-style-tango libreoffice-writer
  libvisio-0.1-1 python3-uno python3.4 python3.4-minimal uno-libs3 ure
Suggested packages:
  hyphen-hyphenation-patterns libreoffice-gnome libreoffice-kde
  libreoffice-grammarcheck libreoffice-l10n-4.3 myspell-dictionary unixodbc
  gstreamer1.0-ffmpeg libreoffice-officebean libreoffice-gcj
  libreoffice-report-builder libjtds-java libreoffice-mysql-connector
  libmyodbc libmysql-java libreoffice-sdbc-postgresql odbc-postgresql
  libpg-java libsqliteodbc tdsodbc mdbtools ocl-icd-libopencl1
  libreoffice-style-crystal libreoffice-style-hicontrast
  libreoffice-style-oxygen libreoffice-style-sifr fonts-crosextra-caladea
  fonts-crosextra-carlito python3.4-venv python3.4-doc
The following NEW packages will be installed:
  coinor-libcbc3 coinor-libcgl1 coinor-libclp1 coinor-libcoinmp1
  coinor-libcoinutils3 coinor-libosi1 libabw-0.1-1 libcdr-0.1-1
  libe-book-0.1-1 libetonyek-0.1-1 libfreehand-0.1-1 libgltf-0.0-0
  libmspub-0.1-1 libmwaw-0.3-3 libodfgen-0.1-1 liborcus-0.8-0 libvisio-0.1-1
The following packages will be upgraded:
  libpython3.4 libpython3.4-minimal libpython3.4-stdlib libreoffice
  libreoffice-base libreoffice-base-core libreoffice-base-drivers
  libreoffice-calc libreoffice-common libreoffice-core libreoffice-draw
  libreoffice-gtk libreoffice-impress libreoffice-java-common libreoffice-math
  libreoffice-style-galaxy libreoffice-style-tango libreoffice-writer
  python3-uno python3.4 python3.4-minimal uno-libs3 ure
23 upgraded, 17 newly installed, 0 to remove and 1864 not upgraded.

So, next time you run into trouble, try the external solver, and wait the extra time (maybe 30 seconds)... it may be well worth the wait.

Just make sure you have aspcud and apt-cudf installed for this to work!

Continue reading...

Wednesday, May 21 2014

Static analysis of software component repositories : from Debian to Opam

Component repositories are becoming an essential part of the Free Software landscape, and grow at a steady pace. Ensuring their quality is of paramount importance, and is a difficult task. One natural question to ask when performing quality assurance is the following : what are the components p in a given repository R that cannot be properly installed?. Unfortunately, there can be many reasons why an installation may fail, and some of these will only be detected on the particular environment of the final user, no matter what amount of testing one tries to do beforehand.

But there is a full class of reasons, related to package interdependencies, that can be found by performing a static analysis of repositories, with no testing at all. This static analysis, originally designed for GNU/Linux distributions, is of general interested, and we are now introducing it for the Opam ecosystem.

Continue reading...

Wednesday, March 5 2014

User preferences for dependency solvers: a short survey, and new features added in the latest aspcud solver

A key component of a modular package manager architecture is a solver able to handle dependency problems efficiently, and compute a solution which is aligned with the user preferences. Aspcud is one of the most successful such solvers, and its new release 1.9 version brings some new features to the limelight. Let's take some time to sum up the essential concepts today.

Continue reading...

Monday, May 27 2013

Saved (again) by an external solver for apt!

Did you know that you can ask apt-get to invoke an external solver for handling the dependency hell that sometimes plagues your upgrades? Well, just now, again, this feature saved my day, and it is just a matter of typing a short option!

Instead of the standard

apt-get install fetchmail

that proposed an horrendous upgrade path detailed below, I typed

 apt-get --solver aspcud install fetchmail

that returned this easy solution

apt-get --solver aspcud install fetchmail
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Execute external solver... Done
The following extra packages will be installed:
 libc-dev-bin libc6 libc6:i386 libc6-dbg libc6-dev libc6-i386 libc6-i686:i386 locales
Suggested packages:
 fetchmailconf resolvconf glibc-doc glibc-doc:i386 locales:i386
The following packages will be upgraded:
 fetchmail libc-dev-bin libc6 libc6:i386 libc6-dbg libc6-dev libc6-i386 libc6-i686:i386 locales
9 upgraded, 0 newly installed, 0 to remove and 2776 not upgraded.
Need to get 25.9 MB of archives.
After this operation, 10.7 MB of additional disk space will be used.
Do you want to continue Y/n? Y

Just make sure you have aspcud and apt-cudf installed for this to work!

Continue reading...

Tuesday, December 11 2012

Another successful install thanks to Mancoosi

In december, I attended the wonderful Ocsigen days organised by the Ocsigen team at Irill. For this, I set up a virtual machine installed with Debian testing, that sports a recent version of Debian's apt :

Continue reading...

Thursday, May 24 2012

Using external solvers with apt-get in Wheezy

Thanks to the effort of many wonderful people (see at the end of this post), it is now possible to call an external solver from apt-get, if you use at least version 0.9.5, which will be the case in Wheezy.

It's pretty simple, just install apt-cudf :

apt-get install apt-cudf

but please check that you get version 2.9.16~rc1-1 or later of it!

dpkg -l apt-cudf
======================================
ii  apt-cudf  2.9.16~rc1-1   CUDF solver integration for APT

This package will also install one of the available solvers that support CUDF, for example aspcud.

Then you can simply use the --solver option of apt-get to have the dependency solving delegated to aspcud:

apt-get -s --solver aspcud install totem

On my machine, this gives a solution with these characteristics:

49 upgraded, 47 newly installed, 1 downgraded, 9 to remove and 2551 not upgraded.

Which might be more interesting than what the standard internal solver of apt finds, as it changes and removes quite a few more packages

79 upgraded, 98 newly installed, 15 to remove and 2520 not upgraded.

Continue reading...

Saturday, November 26 2011

Tales from the Mancoosi frontline: experimenting with apt-get from experimental :-)

I wanted to install libreoffice today. To do so, I first tried using apt-get (Version: 0.8.14.1), and it proposes me a solution with the following characteristics:

338 upgraded, 181 newly installed, 81 to remove and 1880 not upgraded.

You can find the full solution, as well as the data to reproduce this upgrade scenario online at the Mancoosi Debian DUDF repository.

I was not satisfied, because I just wanted to upgrade libreoffice, not the whole system!

Continue reading...

Monday, September 5 2011

Visualising (the kernel of) free software repositories

Imagine that you want to find out which packages cannot be installed together in your latest and preferred free software distribution... how would you go about it?

One could try and install together all possible combination of packages, but a free software repository contains several tens of thousands packages, and more than one hundred thousand dependencies and conflicts, so this approach might be interesting only if you really dont know how to best use your account on a Google farm, and you don't care about wasting energy.

One could be a bit smarter, have a look at what has been done in the EDOS and Mancoosi european projects, and program a SAT solver to test these combinations of packages without actually installing them.



Or you could take a completely different approach, and come up with a revolutionary new way of looking at free software repositories.

In a few hours, I am taking a plain to Szeged, to attend the 8th ESEC/FSE conferece, where Jerôme Vouillon is going to show how to extract from free software distributions a co-installability kernel which is much more compact, can be visualised easily, and allows by simple visual inspection to answer this kind of questions in a few seconds.

To give you an example, from the main section of the Ubuntu 10.10 alpha 2 distribution, that contains 7277 packages, one can extract a very simple graph, that easily fits in an A4 page, and which shows all co-installability issues.

Looking at the graph, it is easy to spot immediately a problem with the distribution: you can only install ubuntu-desktop with the pulseaudio audio library, and not with the many other options which are available (like alsa): you can check by yourslef in the picture below

c

If you know Jerôme, you know that there is also some fantastic piece of software around, and you will be eager to try it... don't wait any longer, you can learn more about COINST by just clicking here.

And by the way, Jerôme's COINST tool got the Distinguished Artifact Award, which will presented at the conference.

It happens that the award is sponsored by Microsoft Research, which posted a nice announcement about it, and we can be happy to see Microsoft Research recognising the importance of the research challenges emerging from Free Software.

Saturday, March 19 2011

Tales from the Mancoosi frontline: moving forward with MPM (the Mancoosi package manager prototype)

I wanted to install libreoffice today, on a freshly installed Squeeze/amd64 ... but it turned out to be more interesting than expected.

Continue reading...

Sunday, October 10 2010

Getting mplayer from debian-multimedia.org with apt-mancoosi

I wanted to try the mplayer=2:1.0~rc3++svn20100804-0.1 from the (unofficial) http://www.debian-multimedia.org. Again, I first tried using apt-get (Version: 0.7.25.3), and it proposes me a solution with the following characteristics:

17 upgraded, 21 newly installed, 6 to remove and 648 not upgraded.

You can find the full solution, as well as the data to reproduce this upgrade scenario online at the Mancoosi Debian DUDF repository.

I was not satisfied, because it wanted to remove 6 packages, so I tried aptitude (Version: 0.6.2.1-2), which proposes a solution with these characteristics:

1 packages upgraded, 6 newly installed, 171 to remove and 635 not upgraded.

Here too, you can find the full solution, as well as the data to reproduce this upgrade scenario online at the Mancoosi Debian DUDF repository.

Finally, I resorted to apt-mancoosi (see the Mancoosi software page) which gave me the following solution, which I finally used.

Continue reading...

Using apt-mancoosi to install Mew

I wanted to install mew today. To do so, I first tried using apt-get (Version: 0.7.25.3), and it proposes me a solution with the following characteristics:

1 upgraded, 11 newly installed, 4 to remove and 368 not upgraded.

You can find the full solution, as well as the data to reproduce this upgrade scenario online at the Mancoosi Debian DUDF repository.

I was not satisfied, because mew is just a set of emacs files, so I do not see why I should change a lot of other packages just to get them.

Continue reading...

Thursday, May 13 2010

Tales from the Mancoosi frontline: installing akonadi-kde-resource-googledata

As we have seen in the first post on these issues, upgrading a GNU/Linux machine is not an easy task: this is why Mancoosi is working hard at improving the situation. Here comes another report from the frontline, detailing the epic battle on my machine resulting from the need to install a single new package, akonadi-kde-resource-googledata, to be able to sync my korganizer data with a Google agenda.

Continue reading...

Monday, April 19 2010

How to manage your software upgrades: tales from the Mancoosi frontline

Upgrading software components has become an ubiquitous need: if Mac OS X and Windows users have seen nice, flashy popups proposing "software updates" for years, iPhone users upgrade their full OS every few months and get proposed updates from the AppStore daily.

In the Free Software world, we have been living with sophisticated tools to manage installation, removal and upgrade of software components for more than ten years, and we are used to be more picky and sophisticated in our desiderata than the average user on a proprietary platform: we do no just casually click on the 'OK' button in a popup, even if this kind of GUI gadgets is making its way into GNU/Linux distributions that are more end-user oriented.

According to our goals, we might have in mind precise upgrade policies, like "only get updates of system packages from the stable release finalised last year", or "install this new package, but please, please try not to touch anything else on my machine".

This is why we ended up with a whole wealth of different package managers, that try to offer appealing features for a user base that might range from the casual computer user for the advanced system administrator.

In recent years the growth of the available package base has been so impressive (in the picture above, you can see the evolution of the number of packages in the different Debian releases), that traditional package managers have started to show some serious limitations: algorithms and methodologies that were reasonable for small-scale collections of packages are hitting severe limitations now that the number of available components in a GNU/Linux distribution has passed the 25.000 unit mark.

The Mancoosi project, that I am happy to lead, started in 2008 to address some of these limitations, and the preliminary results coming out after less than two years of work show enough promise to justify a series of posts on the difficulties that we are all facing when managing our GNU/Linux distributions with traditional tools, and on the solutions that Mancoosi may have in store for us.

We start here with some concrete examples of issues faced when trying to install or upgrade a software component on a recent Debian distribution.

Continue reading...