Far too many dependencies for boinc-manager

Bug #1250652 reported by Ken Sharp
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
boinc (Debian)
New
Unknown
boinc (Ubuntu)
Fix Released
Undecided
Unassigned

Bug Description

I want boinc-manager to control remote clients, but the dependencies are ridiculous.

The install also bring boinc-client, which I do not want, and even bluez: I have no idea why I would need Bluetooth support for the BOINC Manager!

$ sudo apt-get install boinc-manager
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
  bluez bluez-alsa:i386 boinc-client glib-networking:i386 gstreamer0.10-plugins-base:i386 gstreamer0.10-plugins-good:i386 gstreamer0.10-x:i386 gtk2-engines:i386 gtk2-engines-murrine:i386 gtk2-engines-oxygen:i386 gtk2-engines-pixbuf:i386 gvfs:i386 gvfs-libs:i386 ia32-libs ia32-libs-multiarch:i386 ibus-gtk:i386 libaa1:i386 libacl1:i386 libaio1:i386 libao-common libao4:i386 libatk1.0-0:i386 libattr1:i386 libaudio2:i386 libaudiofile1:i386 libavc1394-0:i386 libbz2-1.0:i386 libcaca0:i386 libcairo-gobject2:i386 libcairo2:i386 libcanberra-gtk-module:i386 libcanberra-gtk0:i386 libcanberra0:i386 libcap2:i386 libcdparanoia0:i386 libcroco3:i386 libcupsimage2:i386 libcurl3:i386 libdatrie1:i386 libdbus-glib-1-2:i386 libdv4:i386 libesd0:i386 libgail-common:i386 libgail18:i386 libgconf-2-4:i386 libgdbm3:i386 libgdk-pixbuf2.0-0:i386 libgettextpo0:i386 libgnome-keyring0:i386 libgomp1:i386 libgtk2.0-0:i386 libgudev-1.0-0:i386 libibus-1.0-0:i386 libidn11:i386 libiec61883-0:i386 libjasper1:i386 liblcms1:i386 libmad0:i386 libmikmod2:i386 libmng1:i386 libmysqlclient18:i386 libncursesw5:i386 libnspr4:i386 libnss3:i386 libodbc1:i386 libpango1.0-0:i386 libpixman-1-0:i386 libproxy1:i386 libpulse-mainloop-glib0:i386 libpulsedsp:i386 libqt4-dbus:i386 libqt4-declarative:i386 libqt4-designer:i386 libqt4-network:i386 libqt4-opengl:i386 libqt4-qt3support:i386 libqt4-script:i386 libqt4-scripttools:i386 libqt4-sql:i386 libqt4-sql-mysql:i386 libqt4-svg:i386 libqt4-test:i386 libqt4-xml:i386 libqt4-xmlpatterns:i386 libqtcore4:i386 libqtgui4:i386 libqtwebkit4:i386 libraw1394-11:i386 librsvg2-2:i386 librsvg2-common:i386 librtmp0:i386 libsdl-image1.2:i386 libsdl-mixer1.2:i386 libsdl-net1.2:i386 libsdl-ttf2.0-0:i386 libsdl1.2debian:i386 libshout3:i386 libslang2:i386 libsoup-gnome2.4-1:i386 libsoup2.4-1:i386 libspeex1:i386 libssl0.9.8:i386 libstdc++5:i386 libtag1-vanilla:i386 libtag1c2a:i386 libtdb1:i386 libthai0:i386 libtheora0:i386 libudev0:i386 libunistring0:i386 libvisual-0.4-0:i386 libvisual-0.4-plugins:i386 libvorbisfile3:i386 libwavpack1:i386 libwxbase2.8-0 libwxgtk2.8-0 libxaw7:i386 libxcb-render0:i386 libxcb-shm0:i386 libxft2:i386 libxmu6:i386 libxp6:i386 libxss1:i386 libxtst6:i386 libxv1:i386 mysql-common odbcinst1debian2:i386 xaw3dg:i386
Suggested packages:
  boinc-app-seti libcuda1 libcuda1-ia32 murrine-themes:i386 kde-config-gtk-style:i386 libpam-ldap:i386 libpam-winbind:i386 libnss-ldap:i386 libroar1:i386 libsndio0:i386 roaraudio-server:i386 nas:i386 libcanberra-pulse:i386 libdv-bin:i386 pulseaudio-esound-compat:i386 gnome-keyring:i386 libjasper-runtime:i386 liblcms-utils:i386 libmyodbc:i386 odbc-postgresql:i386 tdsodbc:i386 unixodbc-bin:i386 ttf-baekmuk:i386 ttf-arphic-gbsn00lp:i386 ttf-arphic-bsmi00lp:i386 ttf-arphic-gkai00mp:i386 ttf-arphic-bkai00mp:i386 libqt4-declarative-folderlistmodel:i386 libqt4-declarative-gestures:i386 libqt4-declarative-particles:i386 libqt4-declarative-shaders:i386 qt4-qmlviewer:i386 libqt4-dev:i386 qt4-qtconfig:i386 libraw1394-doc:i386 librsvg2-bin:i386 speex:i386 libgnomeprintui2.2-0
Recommended packages:
  ia32-libs-gtk
The following NEW packages will be installed
  bluez bluez-alsa:i386 boinc-client boinc-manager glib-networking:i386 gstreamer0.10-plugins-base:i386 gstreamer0.10-plugins-good:i386 gstreamer0.10-x:i386 gtk2-engines:i386 gtk2-engines-murrine:i386 gtk2-engines-oxygen:i386 gtk2-engines-pixbuf:i386 gvfs:i386 gvfs-libs:i386 ia32-libs ia32-libs-multiarch:i386 ibus-gtk:i386 libaa1:i386 libacl1:i386 libaio1:i386 libao-common libao4:i386 libatk1.0-0:i386 libattr1:i386 libaudio2:i386 libaudiofile1:i386 libavc1394-0:i386 libbz2-1.0:i386 libcaca0:i386 libcairo-gobject2:i386 libcairo2:i386 libcanberra-gtk-module:i386 libcanberra-gtk0:i386 libcanberra0:i386 libcap2:i386 libcdparanoia0:i386 libcroco3:i386 libcupsimage2:i386 libcurl3:i386 libdatrie1:i386 libdbus-glib-1-2:i386 libdv4:i386 libesd0:i386 libgail-common:i386 libgail18:i386 libgconf-2-4:i386 libgdbm3:i386 libgdk-pixbuf2.0-0:i386 libgettextpo0:i386 libgnome-keyring0:i386 libgomp1:i386 libgtk2.0-0:i386 libgudev-1.0-0:i386 libibus-1.0-0:i386 libidn11:i386 libiec61883-0:i386 libjasper1:i386 liblcms1:i386 libmad0:i386 libmikmod2:i386 libmng1:i386 libmysqlclient18:i386 libncursesw5:i386 libnspr4:i386 libnss3:i386 libodbc1:i386 libpango1.0-0:i386 libpixman-1-0:i386 libproxy1:i386 libpulse-mainloop-glib0:i386 libpulsedsp:i386 libqt4-dbus:i386 libqt4-declarative:i386 libqt4-designer:i386 libqt4-network:i386 libqt4-opengl:i386 libqt4-qt3support:i386 libqt4-script:i386 libqt4-scripttools:i386 libqt4-sql:i386 libqt4-sql-mysql:i386 libqt4-svg:i386 libqt4-test:i386 libqt4-xml:i386 libqt4-xmlpatterns:i386 libqtcore4:i386 libqtgui4:i386 libqtwebkit4:i386 libraw1394-11:i386 librsvg2-2:i386 librsvg2-common:i386 librtmp0:i386 libsdl-image1.2:i386 libsdl-mixer1.2:i386 libsdl-net1.2:i386 libsdl-ttf2.0-0:i386 libsdl1.2debian:i386 libshout3:i386 libslang2:i386 libsoup-gnome2.4-1:i386 libsoup2.4-1:i386 libspeex1:i386 libssl0.9.8:i386 libstdc++5:i386 libtag1-vanilla:i386 libtag1c2a:i386 libtdb1:i386 libthai0:i386 libtheora0:i386 libudev0:i386 libunistring0:i386 libvisual-0.4-0:i386 libvisual-0.4-plugins:i386 libvorbisfile3:i386 libwavpack1:i386 libwxbase2.8-0 libwxgtk2.8-0 libxaw7:i386 libxcb-render0:i386 libxcb-shm0:i386 libxft2:i386 libxmu6:i386 libxp6:i386 libxss1:i386 libxtst6:i386 libxv1:i386 mysql-common odbcinst1debian2:i386 xaw3dg:i386
0 upgraded, 129 newly installed, 0 to remove and 8 not upgraded.
Need to get 47.2 MB of archives.
After this operation, 159 MB of additional disk space will be used.

ProblemType: Bug
DistroRelease: Ubuntu 12.04
Package: boinc-manager 7.0.27+dfsg-5ubuntu0.12.04.1
ProcVersionSignature: Ubuntu 3.8.0-32.47~precise1-generic 3.8.13.10
Uname: Linux 3.8.0-32-generic x86_64
NonfreeKernelModules: wl
ApportVersion: 2.0.1-0ubuntu17.6
Architecture: amd64
Date: Tue Nov 12 22:21:53 2013
InstallationMedia: Ubuntu 12.04.3 LTS "Precise Pangolin" - Release amd64 (20130820.1)
MarkForUpload: True
ProcEnviron:
 LANGUAGE=en_GB:en
 TERM=xterm
 PATH=(custom, no user)
 LANG=en_GB.UTF-8
 SHELL=/bin/bash
SourcePackage: boinc
UpgradeStatus: No upgrade log present (probably fresh install)

Revision history for this message
Ken Sharp (kennybobs) wrote :
description: updated
Revision history for this message
Ken Sharp (kennybobs) wrote :

Debian Testing has nowhere near as many dependencies.

Revision history for this message
Ken Sharp (kennybobs) wrote :
Revision history for this message
Gianfranco Costamagna (costamagnagianfranco) wrote :

Probably becase you already have ia32-libs installed

Revision history for this message
Ken Sharp (kennybobs) wrote :

How does having ia32-libs installed make boinc-manager dependent on Bluetooth?

Revision history for this message
MestreLion (mestrelion) wrote :

@Ken: ia32-libs is the one that depends on bluetooth, not boinc. And most of that huge list is pulled by ia32-libs. Boinc unfortunatly depends on ia32-libs because many projects do not have native 64 bits programs for Linux.

The only thing that can be done is what the mentioned debian bug 730332 suggests: to decouple boinc-manager and boinc-client. The manager dependency on client could theorically be solved (tho this is a corner case use scenario), but the client dependecy on ia32-libs unfortunatly can not in the forseable future, unless all boinc projects provide native 64 bits programs for linux.

Revision history for this message
MestreLion (mestrelion) wrote :

Upon further inspection, I was wrong: boinc-manager does NOT depend on boinc-client, it only *recommends* it, which IMHO is a sensible choice. So by default it does pull boinc-client, but you can configure apt not to install recommends, or you can simply remove boinc-client afterwards.

And similarly boinc-client does NOT depend on ia32-libs, it also only recommends it. If you don't install it you simply won't be able to run some projects that wraps 32 bits executables.

So I guess both this and debian 730332 bugs are somewhat "already fixed", unless a package recommendation is not satisfatory.

References:
http://packages.ubuntu.com/trusty/boinc-client
http://packages.ubuntu.com/trusty/boinc-manager

(Also note that on Ubuntu Saucy 13.10 onwards the ia32-libs package does not even exist, thanks to multiarch, and all the other dependencies are installed by default in any ubuntu install. So boinc-manager and boinc-client will not pull any extra packages)

Revision history for this message
Gianfranco Costamagna (costamagnagianfranco) wrote :

yes, this is somewhat fixed, anyway I cannot install the manager "alone", I suspect because it depends from libboinc7 and libboinc7 depends on the client?
locutus@gianfranco-Latitude-E5520:~/branches/boinc (master) $ sudo apt-get install boinc-manager
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
  boinc-client libboinc7
Suggested packages:
  libcuda1 libcuda1-ia32
Recommended packages:
  ia32-libs ia32-libs-gtk
The following NEW packages will be installed:
  boinc-client boinc-manager libboinc7
0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
Need to get 2348 kB of archives.
After this operation, 6995 kB of additional disk space will be used.
Do you want to continue [Y/n]?

Revision history for this message
Ken Sharp (kennybobs) wrote :

Ah, I was not aware install-recommends was a default option. Installing with --no-install-recommends dramatically improves the situation. This is not obvious, sadly, and wastes resources. Suggests may be better as you're not really likely to ask for boinc-manager alone unless you want boinc-manager alone.

Unfortunately there does appear to be an odd error that is solved by install boinc-client:

When launching BOINC Manager from the Gnome menu it produces an error that it is unable to find /var/lib/boinc-client, which of course does not exist unless boinc-client is also installed. Launching from the terminal does not produce this error.

This is solved by removing the Path= variable from the .desktop file (and logging out/in).

[Desktop Entry]
Type=Application
Version=1.0
Exec=/usr/bin/boincmgr
Path=/var/lib/boinc-client
Icon=boincmgr-32
Categories=System;Monitor;GTK;
Name=BOINC Manager
GenericName=BOINC monitor and control utility
GenericName[cs]=Monitorovací a ovládací nástroj pro BOINC
GenericName[de]=BOINC Überwachungs- und Kontrollprogramm
GenericName[pt]=Monitorização BOINC e utilitário de controlo
Comment=Configure or monitor a BOINC core client
Comment[cs]=Monitoruje a nastavuje klienta BOINC
Comment[de]=BOINC Basis Client konfigurieren oder überwachen
Comment[pt]=Configurar ou monitorizar o cliente básico do BOINC

HOWEVER:

This exists so that boincmgr can connect to the client automatically.

A better solution was a simple:
mkdir /var/lib/boinc-client
Then boincmgr does not complain.

Unless there is some intelligence that the menu system can use to ignore the Path= if the directory does not exist, then it might be worth adding an empty /var/lib/boinc-client to the boinc-manager package to avoid this error.

Revision history for this message
Ken Sharp (kennybobs) wrote :

In reply to comment #8

I don't see boinc-client as a dependency when using --no-install-recommends in Precise.

$ sudo apt-get install --no-install-recommends boinc-manager/precise-updates
Reading package lists... Done
Building dependency tree
Reading state information... Done
Selected version '7.0.27+dfsg-5ubuntu0.12.04.1' (Ubuntu:12.04/precise-updates [amd64]) for 'boinc-manager'
Recommended packages:
  boinc-client
The following NEW packages will be installed
  boinc-manager

Revision history for this message
Ken Sharp (kennybobs) wrote :

The bug activity of this log says I added the bug link, but it wasn't there... it is now (hopefully).

Revision history for this message
Gianfranco Costamagna (costamagnagianfranco) wrote :

@Ken wonderful!

I was aware of debian and the default install recommends, but I wasn't aware of the same behaviour in ubuntu (and I was pretty sure it was different)

anyway,
 "mkdir /var/lib/boinc-client"

this can be achieved by adding a debian/boinc-manager.dirs afaics.

I'll upload a patch in my ppa shortly

Revision history for this message
Gianfranco Costamagna (costamagnagianfranco) wrote :
Revision history for this message
Ken Sharp (kennybobs) wrote :

Version: 7.2.33+dfsg-2~precise1

Sorry it took so long, had left-over menu entries that I needed to hunt down and purge.

After installing the boinc-manager it works without an error, but during the subsequent install of boinc-client a warning is printed:

adduser: Warning: The home directory `/var/lib/boinc-client' does not belong to the user you are currently creating.

drwxr-xr-x 2 root root 4.0K Nov 28 11:30 boinc-client/

User:group needs to be boinc:boinc rather than root:root. The boinc-client install does correct this but it should be boinc:boinc to start with to avoid the warning.

In comment 9 I said: "This exists so that boincmgr can connect to the client automatically."
I can't seem to get this to work at all now, in any package, so I don't really know how to test that at the moment.

And to further complicate the issue:
When purging boinc-client alone you are asked if you want to delete /var/lib/boinc-client. Doing this will remove all the downloaded BOINC projects and so on but it will also recreate this bug. Not doing so could leave a lot of disk space in use. But I think this will be such a rare-use case it can probably be ignored for now. If someone complains then it's something that can be looked at a later point in time.

Revision history for this message
Gianfranco Costamagna (costamagnagianfranco) wrote :

mmm this issue is more complicated than the thoughts, fixing this kind of issues is something that can create more and more other bugs.

I don't honestly know if we should go on fixing this bug at this point.

Maybe a init script also for the manager can fix this, or a postinst, but I prefer to wait for somebody else took the problem.

Revision history for this message
Ken Sharp (kennybobs) wrote :

The problem (and many other problems) all stem from the requirement to separate BOINC directories.

Simply adding /var/lib/boinc-client for boinc-manager is enough as I see it, it just need to be set for boinc:boinc. Everything else is unlikely to occur and will probably go away in time, as things change.

Revision history for this message
Gianfranco Costamagna (costamagnagianfranco) wrote :

do you mind providing a patch? I'm not sure how should be a boinc-manager.postinst file

Revision history for this message
Ken Sharp (kennybobs) wrote :

I've never done anything with .debs so it could take me a while to look into it, but I will do. If someone beats me to it though: go ahead! :-)

Changed in boinc (Debian):
status: Unknown → New
Revision history for this message
Gianfranco Costamagna (costamagnagianfranco) wrote :

I think this issue (the original bug) will be fixed in the next boinc upload since I removed ia32-libs from the dependencies (it has been dropped in debian/ubuntu)

Revision history for this message
Ken Sharp (kennybobs) wrote :

But is that not because Debian have fixed multiarch? It will never be fixed in Precise.

Revision history for this message
MestreLion (mestrelion) wrote :

@Ken: ordinary bugs are always fixed in source, so they only affect the development, next-to-be release (currently Trusty). This particular bug was already fixed in Saucy (13.10), because ia32-libs was dropped there.

Only critical bugs warrant an SRU to be backported to, say, Precise. And this is not the case with this bug. Actually, this is not a bug at all, since you can easily not pull boinc-client or ia32-libs by installing boinc-manager with --no-install-recommends.

IMHO, this should be closed as "Fix Released" (since it is "fixed" from Saucy onwards), or even "Invalid", since recommended packages are optional.

@LocutusOfBorg: libboinc7 does not depend on boinc-client, in any Ubuntu release.

I think the only real bug is that boincmgr (the executable, not the package) needs to be run in the boinc-client data dir (/var/lib/boinc-client), and that dir does not exist if boinc-client was not installed. Creating a dummy one at install time (via .dirs or postinst) is not so simple: it requires boinc:boinc perms, a user/group that is only created by boinc-client. Also I'm not sure what would happen if later someone install boinc-client: 2 packages that both create (and thus "own") the same dir and user? How would apt deal with it?

So the best solution would be for boincmgr source code not to depend on datadir at all. It could check its existence and, if not found, assume a "clientless, remote-only" usage and act accordingly. This would be outside the scope of *this* but, but it fits debian's http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=730332

Revision history for this message
Gianfranco Costamagna (costamagnagianfranco) wrote :

Yes, for me is a won't fix this bug, and the too many dependencies is "fix released".

Feel anyway free to report upstream.

Changed in boinc (Ubuntu):
status: New → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.