ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

The issue seems to be in 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.

ros-indigo-openni-camera needs to be smarter about how it handles conflicting packages to avoid having libopenni0 install libopenni-sensor-pointclouds0 instead of libopenni-sensor-primesense.

Just try installing ros-indigo-openni-camera on Ubuntu 14.04 to duplicate the issue.

The issue seems to be in 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.

ros-indigo-openni-camera needs The reason apt can't resolve this is that the libopenni-sensor-primesense packages don'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 smarter about how it handles conflicting packages to avoid having libopenni0 install libopenni-sensor-pointclouds0 instead of libopenni-sensor-primesense.

Just try installing ros-indigo-openni-camera a bug in the conflict list for both the libopenni-sensor backends on Ubuntu 14.04 to duplicate the issue.

14.04. Apt itself is working fine.

You can see others reporting the same issue at http://askubuntu.com/questions/502903/resolve-unmet-dependencies and at https://github.com/ros/rosdistro/issues/3986.

The issue seems to be in related to the ros-indigo-openni-camera package.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 don't 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 backends 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/resolve-unmet-dependencies and at https://github.com/ros/rosdistro/issues/3986.