Forum: CFEngine Help
Subject: Fun fact about aptitude
Author: sauer
Link to topic: https://cfengine.com/forum/read.php?3,26392,26392#msg-26392
Well, this afternoon I had a bad experience with aptitude. I had an existing
Ubuntu machine which I had originally installed from the regular desktop media
- which included the ubuntu-desktop package. Later, it was converted to run
headless, and I didn't need that package - so I removed it. For those
unfamiliar, the "ubuntu-desktop" package basically is just a virtual package
which depends on a bunch of stuff (like, say, the ssh server).
Over the weekend, I Kerberized this network, and of course used CFEngine to
install the neccesary packages, generate and install keytabs for the machines,
etc. I got a working policy which included a promise like:
packages:
"$(package_list)"
package_policy => "add",
package_method => apt,
comment => "Ensure $(this.promiser) is installed";
Looks pretty innoccuous, eh? On this machine, package_list ended up containing
two packages - krb5-user and libpam-krb5. On the test machines, this just adds
the two packages and dependencies as expected. But this machine started having
all sorts of really weird problems, including the ssh server going away. What
happened?
Well, looking through the COPBL, I see that it really wants to use aptitude if
possible. Checking syslog, I saw about four runs of the package promise which
ended with an error code, and then things evened out. In the aptitude log, I
saw that 541 packages were removed (including "libssh", which is what led to
removing the openssh client and server). "WTF?", I thought. Well, ok, I
actually said it aloud, along with a few other terms expressing my disapproval.
Ultimately, I found this interesting config option for aptitude:
Option: Aptitude::Delete-Unused
Default: true
Description: If this option is true, automatically installed packages which are
no longer required will be automatically removed. For more information, see the
section called “Managing automatically installed packages”.
Yep. If you tell aptitude to install a package, by default it also looks for
packages that it might remove. This was a bit of a surprise, as I don't
normally use aptitude for anything but "aptitude search" from the command line.
I'll get a bug report up in a while suggesting that option be set to "false"
in COPBL (at least for the add action), but just FYI, the way it is now can
result in completely unrelated packages being deleted when an "add" is run.
_______________________________________________
Help-cfengine mailing list
[email protected]
https://cfengine.org/mailman/listinfo/help-cfengine