Neurodebian PTB not working on Ubuntu 18.04

A new Linux machine we recently purchased came with Ubuntu 18.04, so I figured I'd go ahead and try it out. 


However, installing PTB from the NeuroDebian distribution failed with unmet dependencies:

The following packages have unmet dependencies:

 matlab-psychtoolbox-3-nonfree : Depends: psychtoolbox-3-lib (>= 3.0.14.20171008-1~ndall.dfsg) but it is not going to be installed

                                 Depends: psychtoolbox-3-common (>= 3.0.14.20171008-1~ndall.dfsg) but it is not going to be installed

                                 Recommends: libfreenect0.1 but it is not installable

                                 Recommends: libopenal1 but it is not going to be installed

E: Unable to correct problems, you have held broken packages.


This happened in spite of using the up-to-date Ubuntu 18.04 repositories & keys provided from the neurodebian website.


Tried hacky workarounds by manually installing freenect metapackage (sudo apt install freenect), and libopenal1 (sudo apt install libopenal1).

This dealt with the openal issue, but not libfreenect0.1 (...the freenect metapackage for 18.04 appears to include libfreenect0.5).


This brought up the question "Why NeuroDebian anyway?"

Presumably its nice that it takes care of dependent packages on Linux, but what those packages actually are is totally opaque (on purpose?), and in instances like this, it can prevent installation all together even though I have no interest in using a Microsoft Kinect.


The opaqueness of the contents also makes understanding different package versions impossible. What is the difference in actual content of matlab-psychtoolbox-3 vs matlab-psychtoolbox-3-nonfree ?  ...why does octave-psychtoolbox-3-nonfree seem to include a more complete version of the Eyelink toolbox?


Clicking through the rabbit hole of neurodebian pages reveals lots of broken links, and [very confusingly] the most recent commit history is from back in 2012....


With the move to github, does it not make more sense to just source PTB from there?

That way:

• users can decide what directory they want /Psychtoolbox installed (neurodebian puts it in /usr/share/psychtoolbox-3, but doesn't actually tell you that)

• local file changes can be easily discovered (git status), reverted (git checkout), or submitted

• users have more granular control of PTB updates (i.e. won't accidentally piggyback on more general invocations of "sudo apt upgrade")


I admittedly know nothing about debian package management, and don't mean to imply lack of appreciation for time spent by those who do manage the neurodebian system. Just that it's use & documentation are so opaque that I can't tell what actual utility it provides.


Thanks,

Thad

The root of the problem is that the nonfree packages depend on outdated versions of the main packages. The nonfree depends on 3.0.14.20171008.dfsg1-1~ndall, but the newest main packages use 3.0.14.20171008.dfsg1-1~nd17.10+1+nd18.04+1. This is an oversight by the NeuroDebian repo maintainer, and this very thing has happened before. The fix is to drop a message on the NeuroDebian mailing list and it'll get fixed promptly.

You can view/download the nonfree .deb packages manually here. The nonfree packages mostly have mex files.

Now with that out of the way: I agree with the thrust of your comment. Personally, we fork PTB on GitHub and pull from there. This way we can tag a version of PTB that is stable for our needs and forget about it. Then, we compile the mex files locally. I use a modified version of Mario's linuxmakeit*.m scripts along with libraries/headers from the vendors themselves (Eyelink and Datapixx in our case) to build the mex files.
XXXIn PSYCHTOOLBOX@yahoogroups.com, <zack_lb@...> wrote :

The root of the problem is that the nonfree packages depend on outdated versions of the main packages. The nonfree depends on 3.0.14.20171008.dfsg1-1~ndall, but the newest main packages use 3.0.14.20171008.dfsg1-1~nd17.10+1+nd18.04+1. This is an oversight by the NeuroDebian repo maintainer, and this very thing has happened before. The fix is to drop a message on the NeuroDebian mailing list and it'll get fixed promptly.

-> I've told Yaroslav about the problem reported here, so if there is any, it should get fixed soon. However, when i upgraded my laptop to 18.04-LTS last week, both the octave and matlab ptb updated without any problems, so i don't know if there is actually a problem and this wasn't caused by something specific to that machine, maybe some previous botched software upgrade, some network outage, whatever. Or maybe it was fixed earlier.

You can view/download the nonfree .deb packages manually here. The nonfree packages mostly have mex files.

-> The nonfree packages have the Eyelink and Datapixx mex files, the Eyelink one for legal reasons, the Datapixx one for no strong reason, except it saves the Neurodebian maintainer a bit of time.

Now with that out of the way: I agree with the thrust of your comment. Personally, we fork PTB on GitHub and pull from there. This way we can tag a version of PTB that is stable for our needs and forget about it. Then, we

-> Makes sense, but would create huge downloads for each local copy by default. Probably not, what most labs want.

compile the mex files locally. I use a modified version of Mario's linuxmakeit*.m scripts along with libraries/headers from the vendors themselves (Eyelink and Datapixx in our case) to build the mex files.

-> But that's something only few labs can do, lacking the necessary skills for basic compiler operation. However, good to know there's somebody in the community who could take over the job of bulding mex files if needed.

-mario
XXXIn PSYCHTOOLBOX@yahoogroups.com, <tbc.class@...> wrote :

A new Linux machine we recently purchased came with Ubuntu 18.04, so I figured I'd go ahead and try it out. 


However, installing PTB from the NeuroDebian distribution failed with unmet dependencies:

The following packages have unmet dependencies:

 matlab-psychtoolbox-3-nonfree : Depends: psychtoolbox-3-lib (>= 3.0.14.20171008-1~ndall.dfsg) but it is not going to be installed

                                 Depends: psychtoolbox-3-common (>= 3.0.14.20171008-1~ndall.dfsg) but it is not going to be installed

                                 Recommends: libfreenect0.1 but it is not installable

                                 Recommends: libopenal1 but it is not going to be installed

E: Unable to correct problems, you have held broken packages.


This happened in spite of using the up-to-date Ubuntu 18.04 repositories & keys provided from the neurodebian website.


Tried hacky workarounds by manually installing freenect metapackage (sudo apt install freenect), and libopenal1 (sudo apt install libopenal1).

This dealt with the openal issue, but not libfreenect0.1 (...the freenect metapackage for 18.04 appears to include libfreenect0.5).


-> None of this was reproducible when i upgraded last week, so apparently it is fixed, or was some problem local to your machine or network.


This brought up the question "Why NeuroDebian anyway?"

Presumably its nice that it takes care of dependent packages on Linux, but what those packages actually are is totally opaque (on purpose?), and in instances like this, it can prevent installation all together even though I have no interest in using a Microsoft Kinect.


-> Your package manager will tell you what was installed where, but yes, you need to learn how to use it if you want to use it. My experience is that NeuroDebian worked pretty reliable over the years. I assume the bumpy part is when some brand-new OS release comes out and maybe some mistakes happen there. Ubuntu 18.04 is only a month old by now, that's not much time for somebody who has to maintain possibly hundreds of packages and still tries to have an actual scientist job and some real life outside the lab. I haven't even managed to run my full testing cycle for the final system yet, although things seem to be fine at least on my laptop, and the core components that are important to us were tested by myself already months ahead in isolation.


I'm happy NeuroDebian exists. It provides an extra layer of quality control, which spotted bugs in the past. It makes life for myself easier - even though i use PTB from git for obvious reasons, i don't have to track down all packages i need for developing and testing, ND takes care of that on Linux. If i hate tracking down dependencies manually, i assume most average users would also appreciate not having to deal with those and being able to just click an install button. Also ND provides custom optimized builds of all mex files at least for octave. For that you have to know that there isn't anything in Octave's or Matlab's design or documentation that guarantees that mex files build on one version work on other versions. The reason this so far mostly works with PTB from us is only a mixture of dirty hacks from myself and equal amounts of dumb luck. ND does it the right way for octave. The Matlab version however is identical to what we ship, due to Matlab's proprietary nature making it difficult on technical and legel levels to do it properly. Strictly speaking, PTB's Matlab mex files are only guaranteed to work with exactly the Matlab version i have for building and testing (R2012a atm.) it working on every other version is just dumb luck. And failures caused by Matlab bugs and going unnoticed for quite a while are one of the symptoms of not having extra quality control and proper builds.


The opaqueness of the contents also makes understanding different package versions impossible. What is the difference in actual content of matlab-psychtoolbox-3 vs matlab-psychtoolbox-3-nonfree ?  ...why does octave-psychtoolbox-3-nonfree seem to include a more complete version of the Eyelink toolbox?


-> You have an interesting definition of "impossible". The package descriptions on NeuroDebian's website describe quite exactly what the purpose and content of each package is, e.g., http://neuro.debian.net/pkgs/octave-psychtoolbox-3-nonfree.html#pkg-octave-psychtoolbox-3


In this case, because the Eyelink toolbox requires proprietary runtime libraries from SR-Research, which can not be part of the OS and can not be supported or fixed by open-source developers in case of problems -- the classic problem of proprietary software. In Debian, such stuff is usually separated out into extra packages.


Clicking through the rabbit hole of neurodebian pages reveals lots of broken links, and [very confusingly] the most recent commit history is from back in 2012....


-> Then report it to NeuroDebian. There's a "Report Bug" button right to the "Install" button of each package, and other feedback channels on the website. Like much of the software that neuroscience depends on, NeuroDebian is a volunteer effort by people who sacrifice lots of their time and sometimes career by trying to make some corner of science less awful. Thank you notes or other support for such people would be nice, but polite bug reports also go a long way. One large problem of the neuroscience community wrt. to computer software imho is that it mostly consists of consumers & often complainers, not producers of software, and of too few people giving at least appropriate feedback through the appropriate channels set up for it. Not picking on you here, btw. But you know how to give feedback here, so you should be able to do the same thing on ND.


With the move to github, does it not make more sense to just source PTB from there?

That way:

• users can decide what directory they want /Psychtoolbox installed (neurodebian puts it in /usr/share/psychtoolbox-3, but doesn't actually tell you that)


-> The package manager or a "which" statement in Octave/Matlab does.


• local file changes can be easily discovered (git status), reverted (git checkout), or submitted

• users have more granular control of PTB updates (i.e. won't accidentally piggyback on more general invocations of "sudo apt upgrade")


-> Sure, and nobody prevents you from installing from GitHub directly. That doesn't mean it's the right thing for everybody, especially not the large fraction of users which can't even read a paragraph of text with installation instructions. I certainly don't want to hand-hold people through the use of git. According to your past posts, i'd put you probably into the upper 1% of our users when it comes to understanding of computers. A large fraction of users is already challenged with typing DownloadPsychtoolbox or readin most basic intro material. i doubt git would make that easier. Download size is also much larger with the full repo downloaded, dependencies need to be manually tracked...


I admittedly know nothing about debian package management, and don't mean to imply lack of appreciation for time spent by those who do manage the neurodebian system. Just that it's use & documentation are so opaque that I can't tell what actual utility it provides.


-> I'm pretty sure NeuroDebian has info material on why they think you can benefit from it. As nothing is perfect they are probably open to suggestions, feedback and actual help to improve things. They even have info stands on some big neuroscience conferences afaik.


One of our many problems is that the docu is always somewhat behind, also on the psychtoolbox webpage, which doesn't exactly help. That's the sad reality of having way too few (~1) and way too overworked/overloaded people to maintain a project this size. ND provides a bit of redundancy here at least on the download & install side if users use their support channels.


-mario


Thanks,

Thad

Just a very small point regarding using git, you can create shallow clones which do not have the large history of a full clone and thus are quick to install and keep up to date...

git clone --depth 1 https://github.com/repo/repo.git