Ask Your Question
0

libopenni-sensor-primesense0 conflict

asked 2014-09-26 17:22:27 -0500

Dave Coleman gravatar image

We've run into a debian packages conflict on Ubuntu 14.04 with Indigo the past week, concerning libopenni-sensor-primesense0 package and the libopenni-sensor-pointclouds0 package. We worked around it by forcing the install of the /etc/openni/GlobalDefaults.ini from libopenni-sensor-primesense0, but there's definitely an upstream conflict between libopenni-sensor-primesense0 package and the libopenni-sensor-pointclouds0 package that needs to be resolved.

We did some digging and it looks like the /etc/openni/GlobalDefaults.ini file one of those packages installs has windows-based line endings while the other has the correct Unix line endings. Thus they conflict when you try to install both. Getting ROS setup on 14.04 is going to cause pain for anyone until that gets resolved.

(reposted from an email by Andy Sayler)

edit retag flag offensive close merge delete

2 Answers

Sort by ยป oldest newest most voted
2

answered 2014-09-26 18:11:48 -0500

tfoote gravatar image

updated 2014-10-01 18:06:27 -0500

Update: This should be fixed by removing the masking package version from the PCL ppa: https://github.com/ros/rosdistro/issu...

Those two libraries do conflict on purpose. They both provide the same functionality, "libopenni_sensor" and conflict with other providers of "libopenni_sensor"

I don't believe you're supposed to be able to install them side by side.

Edit: It's not just that one file. That one file is just the first conflicting file.

If you install ros-indigo-openni-camera it does seem to lock up as described by @asayler That is a bad failure of apt

To recover you can do:

 apt-get -o Dpkg::Options::="--force-overwrite" -f install

Where you'll see that the two packages completely clobber each other.

Unpacking libopenni-sensor-primesense0 (5.1.0.41-3+trusty1) ...
dpkg: warning: overriding problem because --force enabled:
dpkg: warning: trying to overwrite '/etc/openni/GlobalDefaults.ini', which is also in package libopenni-sensor-pointclouds0 5.1.0.41.1-1
dpkg: warning: overriding problem because --force enabled:
dpkg: warning: trying to overwrite '/usr/lib/libXnDeviceSensorV2.so.0', which is also in package libopenni-sensor-pointclouds0 5.1.0.41.1-1
dpkg: warning: overriding problem because --force enabled:
dpkg: warning: trying to overwrite '/usr/lib/libXnDeviceFile.so.0', which is also in package libopenni-sensor-pointclouds0 5.1.0.41.1-1
dpkg: warning: overriding problem because --force enabled:
dpkg: warning: trying to overwrite '/usr/lib/libXnFormats.so.0', which is also in package libopenni-sensor-pointclouds0 5.1.0.41.1-1
dpkg: warning: overriding problem because --force enabled:
dpkg: warning: trying to overwrite '/usr/lib/libXnDDK.so.0', which is also in package libopenni-sensor-pointclouds0 5.1.0.41.1-1
dpkg: warning: overriding problem because --force enabled:
dpkg: warning: trying to overwrite '/usr/lib/libXnCore.so.0', which is also in package libopenni-sensor-pointclouds0 5.1.0.41.1-1
dpkg: warning: overriding problem because --force enabled:
dpkg: warning: trying to overwrite '/usr/lib/libopenni-sensor-primesense0/XnSensorServer', which is also in package libopenni-sensor-pointclouds0 5.1.0.41.1-1
Setting up libssl1.0.0:amd64 (1.0.1f-1ubuntu2.5) ...

And it will continue installing.

I retried with --no-install--recommends and it worked installed successfully.

This is probably worth filing upstream as a bug for libopenni developers to possibly remove the recommends. As the ros package can't do much more than declare it's dependencies, which are correct.

It's also a bug in apt that it doesn't catch the declared conflict.

Another work around is to install libopenni-sensor-primesense0 before or explicitly:

root@4529e16a9555:/# sudo apt-get install libopenni-sensor-primesense0 ros-indigo-openni-camera
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  libopenni-dev libopenni-sensor-primesense-dev libopenni0 openni-utils
Suggested packages:
  openni-doc
The following NEW packages will be installed:
  libopenni-dev libopenni-sensor-primesense-dev libopenni-sensor-primesense0 libopenni0 openni-utils ros-indigo-openni-camera
0 upgraded, 6 newly installed, 0 to remove and 41 not upgraded.
Need to get 1161 kB of archives.
After this operation, 6668 kB of additional disk space will be used.
Do you want to continue? [Y/n] n ...
(more)
edit flag offensive delete link more

Comments

That may be the case, but surely there is a way to define this in the package metadata which doesn't break apt-get. Also, windows line endings in one of the two doesn't make any sense.

mmonaco gravatar image mmonaco  ( 2014-09-26 18:22:33 -0500 )edit

apt-get is not broken, it's correctly refusing to install the two things declared as conflicting. This is an Ubuntu/Debian level package. If you want you can file tickets against libopenni on launchpad, but these packages seem to be clearly defined as conflicting.

tfoote gravatar image tfoote  ( 2014-09-26 18:52:43 -0500 )edit

@asayler why do we need both debs? Are they both in ros-indigo-desktop-full? If it is because of Baxter packages, I'd say the Baxter packages are just broken.

Dave Coleman gravatar image Dave Coleman  ( 2014-09-26 22:50:11 -0500 )edit

ros-indigo-desktop-full installs fine. The issue occurs when installing ros-indigo-openni-launch, which installs ros-indigo-openni-camera, which triggers the error above. ros-indigo-openni-launch was requested by Mike for 3302, I assume to satisfy your build directions on github.

asayler gravatar image asayler  ( 2014-09-26 23:13:36 -0500 )edit

Both are not required. ros-indigo-openni-camera will work fine as long as you explicitly ask for libopenni-sensor-primesense0 as well. apt is resolving the first of the ORd recommendations if unspecified, despite libopenni-sensor-primesense0 being required by upstream dependencies and conflicting.

tfoote gravatar image tfoote  ( 2014-09-29 00:14:00 -0500 )edit
0

answered 2014-09-26 19:05:08 -0500

asayler gravatar image

updated 2014-09-29 00:09:24 -0500

The issue seems to be related to the ros-indigo-openni-camera package:

    $ apt-cache depends ros-indigo-openni-camera
    ros-indigo-openni-camera
      Depends: libboost-system1.54.0
      Depends: libboost-thread1.54.0
      Depends: libc6
      Depends: libconsole-bridge0.2
      Depends: libgcc1
      Depends: liblog4cxx10
      Depends: libopenni0
      Depends: libstdc++6
      Depends: libusb-1.0-0
      Depends: liblog4cxx10-dev
      Depends: libopenni-dev
      Depends: libopenni-sensor-primesense-dev
      Depends: libusb-1.0-0-dev
      Depends: ros-indigo-camera-info-manager
      Depends: ros-indigo-dynamic-reconfigure
      Depends: ros-indigo-image-transport
      Depends: ros-indigo-nodelet
      Depends: ros-indigo-roscpp
      Depends: ros-indigo-sensor-msgs
      Conflicts: ros-indigo-openni-camera:i386

As you can see that package depends on both libopenni-dev (which depends on libopenni0) as well as libopenni-sensor-primesense-dev. But libopenni0 lists both libopenni-sensor-primesense and libopenni-sensor-pointclouds0 as recommended packages (one or the other), installing libopenni-sensor-pointclouds0 as the default. This leads to the conflict.

The reason apt can't resolve this is that the libopenni-sensor-primesense packages doesn't list the corresponding libopenni-sensor-pointclouds packages as conflicts

$ apt-cache depends libopenni-sensor-primesense0
libopenni-sensor-primesense0
  Depends: libc6
  Depends: libgcc1
  Depends: libjpeg8
  Depends: libopenni0
  Depends: libstdc++6
  Depends: openni-utils
  Conflicts: libopenni-sensor-primesense0:i386
$ apt-cache depends libopenni-sensor-primesense-dev
libopenni-sensor-primesense-dev
  Depends: libopenni-sensor-primesense0
  Conflicts: libopenni-sensor-primesense-dev:i386

Likewise, the libopenni-sensor-pointclouds packages only list libopenni-sensor as a conflict, not libopenni-sensor-primesense-dev:

$ apt-cache depends libopenni-sensor-pointclouds0
libopenni-sensor-pointclouds0
  Depends: libc6
  Depends: libgcc1
  Depends: libjpeg8
  Depends: libopenni0
  Depends: libstdc++6
  Depends: openni-utils
  Conflicts: <libopenni-sensor>
  Conflicts: <libopenni-sensor:i386>
  Replaces: <libopenni-sensor>
    libopenni-sensor-pointclouds0
  Replaces: <libopenni-sensor:i386>
    libopenni-sensor-pointclouds0:i386
  Conflicts: libopenni-sensor-pointclouds0:i386
$ apt-cache depends libopenni-sensor-pointclouds-dev 
libopenni-sensor-pointclouds-dev
  Depends: libopenni-sensor-pointclouds0
  Conflicts: <libopenni-sensor-dev>
  Conflicts: <libopenni-sensor-dev:i386>
  Replaces: <libopenni-sensor-dev>
    libopenni-sensor-pointclouds-dev
  Replaces: <libopenni-sensor-dev:i386>
    libopenni-sensor-pointclouds-dev:i386
  Conflicts: libopenni-sensor-pointclouds-dev:i386

Thus, the two package don't actually conflict as far as apt is concerned, which is why apt doesn't realize there is an issue until it goes to try to overwrite the existing files at runtime.

Thus, this seems to be a bug in the conflict list for both the libopenni-sensor backend packages on Ubuntu 14.04. Apt itself is working fine.

You can see others reporting the same issue at http://askubuntu.com/questions/502903... and at https://github.com/ros/rosdistro/issu... .

edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

2 followers

Stats

Asked: 2014-09-26 17:22:27 -0500

Seen: 1,112 times

Last updated: Oct 01 '14