guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Installing some packages results in "incomplete deployment"


From: Chris Marusich
Subject: Installing some packages results in "incomplete deployment"
Date: Sat, 02 Dec 2017 01:50:04 -0800

Hi,

Some Guix packages exist which are not intended to be installed into a
user's profile.  For example, android-udev-rules's description says:

    _Simply installing this package will not have any effect._ It is
    meant to be passed to the `udev' service.

Still other packages do not work if they are installed by themselves.
For example, xscreensaver (and other screen lockers [1]) does not work
if you just install it into your profile; you need to add an instance of
the screen-locker-service-type to your operating system declaration to
ensure that xscreensaver gets installed as a setuid-root program.  Even
after you do this, to be able to configure xscreensaver using the
xscreensaver-demo program, you ALSO need to remember to install
xscreensaver either into the system profile or into your user profile.

Is there anything we can do about this situation?  One of the benefits
of the purely functional software deployment model is that it can be
used to guarantee complete deployment (i.e., no missing dependencies).
However, in this case, installing packages like android-udev-rules or
xscreensaver by themselves will result in incomplete deployment.

Can we do better?  There is a lot of state that exists outside of the
store which cannot be managed using the purely functional software
deployment model alone.  For example, the bootloader is one of these
things.  Whether or not your SSH daemon is currently running is another
piece of state that falls into this category.  The database of a MySQL
server is another.  And so on.

To the extent that this kind of system state exists outside of the the
functional software deployment model, I think it's probably fair to ask
users to manage it themselves.  In the case of xscreensaver, this means
that it's probably reasonable to ask a user to remember to take two
separate actions (reconfigure the system with a screen locker service
that uses xscreensaver, and also install the xscreensaver into a
profile).  However, I still think there are some things we might be able
to do to reduce confusion and make it harder to make mistakes.  Here are
some ideas:

* Document packages like these - like android-udev-rules already does.

* Don't display these packages by default in tools like "guix package
  --search" (but maybe provide an option for displaying them if needed).

* Don't export packages like these as public variables - hide them in
  appropriate services.  For example, instead of requiring a user to
  install both a service of the screen-locker-service-type configured to
  use xscreensaver and also the xscreensaver package, modify the
  screen-locker-service-type so that it automatically installs the
  package into the system profile by extending the profile-service-type.
  In short, make it impossible to install an xscreensaver screen locker
  service incorrectly.

What do you think?

Footnotes: 
[1]  https://debbugs.gnu.org/cgi/bugreport.cgi?bug=27083

-- 
Chris



reply via email to

[Prev in Thread] Current Thread [Next in Thread]