Gentoo, systemd, consolekit, udev and some failed system update

OK, first some explanations:

At first look they don't seem to have sth in common. These are some other facts:

  • systemd and udev don't like each other
  • systemd conflicts with consolekit
  • consolekit is not longer maintained
  • systemd *is* udev (as systemd somehow includes udev)
  • polkit depends on consolekit and they will both pull eath other
  • consolekit has been replaced by logind which is being provided by systemd
  • ...and top of that OpenRC is somehow also involved in this whole thing.

As you may have noticed: THIS IS A WHOLE BUNCH OF BULLSHIT GOING ON! I just wanted to update my Gentoo system and got stucked in some stupid conflicts between the mentioned packets. It took about one day to solve it (after reading lots of forum threads of people complaining about the same thing). Check:

Be sure you read them. They've helped me a lot to understand this whole topic. So after all this is how I was able to solve it:

  • Remove all USE flags related to consolekit:
# euse -D consolekit policykit upower udisks
  • Make sure you have a clean /etc/make.conf. Here is mine:
# These settings were set by the catalyst build script that automatically
# built this stage.
# Please consult /usr/share/portage/config/make.conf.example for a more
# detailed example.
CFLAGS="-O2 -pipe"
# WARNING: Changing your CHOST is not something that should be done lightly.
# Please consult before changing.
# These are the USE flags that were used in addition to what is provided by the
# profile used for building.
USE="acpi smapi mmx sse sse2 cairo svg -kde qt4 qt3support dbus \
     declarative jpeg png vorbis ogg pulse alsa usb sdl spice gtk gtk3 \
     -gnome-shell -consolekit -policykit -upower -udisks"
#source /var/lib/layman/make.conf

# Set PORTDIR for backward compatibility with various tools:
#   gentoo-bashcomp - bug #478444
#   euse - bug #474574
#   euses and ufed - bug #478318
  • Make sure you have selected the right profile
# eselect profile list
Available profile symlink targets:
  [1]   default/linux/amd64/13.0
  [2]   default/linux/amd64/13.0/selinux
  [3]   default/linux/amd64/13.0/desktop *
  [4]   default/linux/amd64/13.0/desktop/gnome
  [5]   default/linux/amd64/13.0/desktop/kde
  [6]   default/linux/amd64/13.0/developer
  [7]   default/linux/amd64/13.0/no-multilib
  [8]   default/linux/amd64/13.0/x32
  [9]   hardened/linux/amd64
  [10]  hardened/linux/amd64/selinux
  [11]  hardened/linux/amd64/no-multilib
  [12]  hardened/linux/amd64/no-multilib/selinux
  [13]  hardened/linux/amd64/x32
  [14]  hardened/linux/uclibc/amd64
  • Adjust profile settings
# cd /etc/portage/profile
# cat use.force
# cat use.mask
  • Remove udev, consolekit and polkit
# emerge -aC udev consolekit polkit
  • Now you should be able to install systemd
# emerge -pv systemd
  • Now update your system
# emerge --keep-going --jobs 4 --update --newuse --ask --deep --with-bdeps=y @world

Additional steps to clean up your system:

# emerge -a --depclean
# revdep-rebuild -- -q --keep-going

Prev: HowTo: Automate Burp using Burp Extender API
Next: Dissecting BlackTiny

comments powered by Disqus
2013-08-10 00:00