31

enter image description hereenter image description hereThe looping of Evolution factories slow the system to sudden and lengthy halts. When I access the System Monitor I can stop the individual processes that cause the problem. These processes are as follows;

evolution-source-registry

notably, evolution-addressbook-factory

Once evolution-addressbook-factory is stopped the processes are eventually replaced by similarly named processes, but the looping stops. When I connect to Thunderbird it slows substantially. Initially I used evolution mail when running Ubuntu 12.10 but removed it and have been using Thunderbird.

My laptop specs are:
Ubuntu 13.04 32-bit
2.0 GHz (dual core, both cores at 2.0 GHz)
1GB RAM After carrying out the recommended procedures for complete removal I recieved a cache read error after removing evolution from the package manager entirely. Re-downloading the packages in the package manager enabled email recognition and produced the error seen in the screenshot.

1

9 Answers 9

36

Removing is too messy (because a lot of other packages depend on it even if they don't use its functionality), but disabling is relatively straightforward.

Ideally this should be done using dpkg-divert (but that has a problem with diverting to the same file), to not confuse apt/dpkg when you upgrade your system.

cd /usr/share/dbus-1/services
# This part create a copy of your original files
sudo cp org.gnome.evolution.dataserver.AddressBook.service org.gnome.evolution.dataserver.AddressBook.service.backup
sudo cp org.gnome.evolution.dataserver.Calendar.service org.gnome.evolution.dataserver.Calendar.service.backup
sudo cp org.gnome.evolution.dataserver.Sources.service org.gnome.evolution.dataserver.Sources.service.backup
sudo cp org.gnome.evolution.dataserver.UserPrompter.service org.gnome.evolution.dataserver.UserPrompter.service.backup

# This part does the trick
sudo ln -snf /dev/null org.gnome.evolution.dataserver.AddressBook.service
sudo ln -snf /dev/null org.gnome.evolution.dataserver.Calendar.service
sudo ln -snf /dev/null org.gnome.evolution.dataserver.Sources.service
sudo ln -snf /dev/null org.gnome.evolution.dataserver.UserPrompter.service

If we just delete the file or use any empty file the next update/upgrade will put them back. So we're using a symlink to an empty file (/dev/null is a special empty file, it stays empty even if you write something into it).

Here you find an article about what /dev/null is.

6
  • 1
    Fantastic solution, now my ubuntu with unity takes 700-800MB RAM after login. Thank you! Apr 29, 2016 at 17:40
  • Perfect. I would add to make copies with an extension like: backup.
    – Marlord
    Jun 8, 2017 at 23:08
  • removing the org.gnome.evolution.dataserver.UserPrompter.service broke the keychain function for ssh public key login with password protected keys in 18.04 with the gnome desktop for me. I cp'd the backup file back into place, logged out and back in and it fixed ssh. YMMV Feb 22, 2019 at 3:56
  • Does this disable all the sync functionality also? I'm using geary and I think that uses the same sync features. I want it to work, I just don't want the evolution application to keep showing up in my app launcher.
    – DAB
    Dec 2, 2021 at 15:51
  • 1
    @DAB I would assume yes. (But I've never heard of geary.) These commands prevent the actual background services from "on demand" starting. (Plus, since likely they are designed to be run in a DBus context they won't be started any other way either.) To hide app launcher icons I'd look at .desktop files (which had a property to hide apps, maybe that still works) or at menulibre.
    – PAStheLoD
    Dec 2, 2021 at 23:13
17

To remove Evolution, just press Ctrl+Alt+T on your keyboard to open Terminal. When it opens, run the command(s) below:

sudo apt-get --purge remove evolution evolution-exchange evolution-plugins evolution-common evolution-webcal

The above command will not remove evolution-data-server, evolution-data-server-common

I would recommend that you use Synaptic Package Manager to completely remove Evolution. Just search for it, and mark it for complete removal.

Also just to be sure, after removing do:

sudo rm /usr/share/indicators/messages/applications/evolution

Now keep in mind that removing evolution, will also remove gnome panel. to install just do:

sudo apt-get install gnome-panel
9
  • yeah, I thought that it worked but they came back. Opening the mail client seems to trigger them
    – lightning
    Jul 4, 2013 at 2:33
  • Did you try the synaptic way? If you don't have it installed, you can do that by: sudo apt-get install synaptic
    – Mitch
    Jul 4, 2013 at 6:37
  • yup I tried it a couple of times.
    – lightning
    Jul 4, 2013 at 18:36
  • now I cant get the battery to charge.... this may be the end
    – lightning
    Jul 5, 2013 at 1:58
  • 2
    Uninstalling evolution will uninstall Gnome because you know this is one piece of Bloat that it is not ready to part with. We need to find away to separate the two.
    – Rolf
    Feb 27, 2019 at 10:18
10

With Ubuntu 18.04 (and probably 16.04) you can't get rid of Evolution without getting rid of GNOME, so your best bet is to disable it.

Building on PAStheLoD's answer and its comments, I wrote a script to disable the evolution services and to inform dpkg/apt of the changes so they aren't wiped out on upgrades. Hopefully, this will help those of you who, like me, script your system setup just in case you need to reinstall.

I tested this on Ubuntu 18.04.1 LTS.

#!/bin/bash

##
## Disables the Evolution mail program's services by moving the services files
## to another directory.
##
## This must be run as root.
##

SERVICES_HOME="/usr/share/dbus-1/services"
DISABLED_DIR="$SERVICES_HOME/disabled"


exitOnError()
{
    local errorCode=$1
    local errorMessage="$2"

    echo "$errorMessage"
    exit $errorCode
}


main()
{
    # Make sure that we are running as root and that the services directory didn't change!
    if ! [ $(id -u) = 0 ]; then
        exitOnError -1 "Script must be run as root or sudo.  Exiting..."
    fi

    if [ ! -d "$SERVICES_HOME" ]; then
        exitOnError -2 "Services directory $SERVICES_HOME does not exist.  Exiting..."
    fi

    mkdir -p "$DISABLED_DIR"

    find "$SERVICES_HOME" -maxdepth 1 -type f -name "org.gnome.evolution.dataserver.*" ! -name "*.bak" -printf "%f\0" | while IFS= read -r -d $'\0' servicename; do
        # Tell dpkg/apt to update the file in DISABLED_DIR instead of the one in SERVICES_HOME
        dpkg-divert --quiet --divert "$DISABLED_DIR/$servicename" --rename --add "$SERVICES_HOME/$servicename" || exitOnError -3 "Unable to divert service $servicename."

        ln -snf /dev/null  "$SERVICES_HOME/$servicename"
        echo "Disabled service $servicename"
    done

    echo "All evolution services have been disabled.  Please restart for changes to take effect."
}

main

To undo this, run the following:

sudo rm /usr/share/dbus-1/services/org.gnome.evolution.dataserver.*
sudo dpkg-divert --rename --remove /usr/share/dbus-1/services/org.gnome.evolution.dataserver.AddressBook.service
sudo dpkg-divert --rename --remove /usr/share/dbus-1/services/org.gnome.evolution.dataserver.Calendar.service
sudo dpkg-divert --rename --remove /usr/share/dbus-1/services/org.gnome.evolution.dataserver.Sources.service
sudo dpkg-divert --rename --remove /usr/share/dbus-1/services/org.gnome.evolution.dataserver.UserPrompter.service
sudo rmdir /usr/share/dbus-1/services/disabled
1
5

None of the above helped me, as e-addressbook-factory was continuing to run and take 99% of CPU even after the purge command. The executable lives in /usr/lib/evolution:

-rwxr-xr-x 1 root root 10544 Jul 30  2013 camel-index-control-1.2
-rwxr-sr-x 1 root mail 14664 Jul 30  2013 camel-lock-helper-1.2
-rwxr-xr-x 1 root root 27760 Jul 30  2013 e-addressbook-factory
-rwxr-xr-x 1 root root 31984 Jul 30  2013 e-calendar-factory

As a last resort I moved the folder out of the way with this:

sudo mv /usr/lib/evolution /usr/lib/evolution-fu

And now it has stopped running.

1
  • Even after purge the executable still in this folder. All from evolution-data-server and it cannot be removed without remove essential packages. Your workaround works! Thanks! May 14, 2018 at 1:42
2

on Ubuntu 19.04 to stop evolution:

#!/bin/bash
chmod -x /usr/libexec/evolution-addressbook-factory
chmod -x /usr/libexec/evolution-calendar-factory
chmod -x /usr/libexec/evolution-data-server/evolution-alarm-notify
chmod -x /usr/libexec/evolution-source-registry
2
apt install gnome-session && apt purge evolution && apt autoremove
  1. part will only mark gnome-session as manually installed, so it doesn't get removed by 3rd part (gnome-core depends on gnome-session)
  2. part will remove evolution (gnome-core depends on evolution, so gnome-core will be removed as well)
  3. part will purge all packages which the system considers as not needed (without step 1 this would have removed gnome-session as well)
1

If you want to disable this stupid useless evolution process do this:

for i in /usr/libexec/evoluti*; do sudo mv $i "$i.useless"; done

This command will append a ".useless" to the binary files which make them not exists, I can guarantee you that useless stupid think will never start again.

4
  • 1
    The echo in backticks is just a buggy complication. You want for i in /usr/libexec/evoluti*; do... but more fundamentally you should not be messing with stuff in /usr/libexec; just uninstall the package if you don't want it.
    – tripleee
    Feb 6, 2020 at 13:33
  • You cant uninstall the package, if you do gnome-shell will be removed completely. if you install gnome-shell again that stupid package will be installed as a dependency! Feb 6, 2020 at 21:16
  • Messing with /usr is still not the way to go. There are ways to keep gnome-shell installed and remove Evolution; the existing answers should help you figure it out.
    – tripleee
    Feb 7, 2020 at 6:44
  • In fedora I didn't find how to do that with dnf, but my system running without any problems. systemctl is-system-running returns running and systemctl --failed returns 0, and I saved 90mb of memory. Feb 7, 2020 at 10:32
0

Combining multiple answers here together into a common shell script:

https://github.com/mcandre/dotfiles/blob/master/evolution-services

1
  • Can you add a bit more info? What does the script do? How do you run it? Apr 10, 2021 at 6:26
-2

apt-get has a --purge option to completly remove a package.

In a terminal :

sudo apt-get remove --purge evolution
sudo apt-get autoclean

The autoclean option will make a clean in the package stocked on your system. So if you have multiple versions of a package apt-get will only keep the last one.

2
  • it seems that the processes I mentioned are still running. evolution-addressbook-factory seems to be the one causing the trouble
    – lightning
    Jul 3, 2013 at 2:48
  • --purge is different from --remove only in that also removes the config files in /etc. Those config files do not seem to be the problem. The term 'completely remove' is misleading - files in /home will never be removed by either --purge nor --remove. In most circumstances, --remove is quite sufficient.
    – user535733
    Aug 5, 2014 at 10:36

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .