When biocValid() says to downgrade packages, it means those packages were not installed via biocLite() and maybe they are from the devel version of Bioconductor (or from Github or some other repository besides Bioconductor and CRAN).

This is good advice; packages from devel are not meant to run in the release version of Bioconductor, and vice versa.

graph imports BiocGenerics, so running biocLite("graph") should install BiocGenerics; my guess is you had a "too new" version of BiocGenerics and that biocLite("BiocGenerics") fixed this. So, in a roundabout way you (partially) followed the advice that biocValid() gave.

Actually, my goal was to simply install the graph package, not to use Bioconductor per se. For this reason, I did not want to downgrade packages (which could potentially have side effects). My attempts to use the Bioconductor repository as a CRAN replacement and simply install via install.packages gave the same result. Again, I am unable to replicate the problem elsewhere than on my laptop, and have fixed it there by installing BiocGenerics. I'll just leave the Q here in case someone else stumbles on the same problem.

In that regard, it utterly failed, as it suggested downgrading packages before I had ever installed anything from Bioconductor, including packages I had installed from github via devtools. For example, the 'syuzhet' package.

biocValid() actually reports packages whose version differs from the version in CRAN or Bioc; I guess you've installed syuzhet from a github repository and that the github version is newer than the one in CRAN. This to me makes a lot of sense -- you're using biocValid() because you're having problems with your installation, and this is one way your installation differs from expectation. Your response (no, I don't want to downgrade) also seems completely appropriate.

It remains a mystery why biocValid() apparently didn't say that BiocGenerics was different from expected (or did it?). It also seems most likely that the problem was a too _old_ version of BiocGenerics, and then install.packages / biocLite() should normally have updated it before installing graph. Also, 'too old' is really quite old, the code was added to BiocGenerics in at least Nov 19, 2011. Maybe a more plausible scenario is that the BiocGenerics installation was corrupted in some other way. But I guess your system is back in order now so there is no further way to explore this.

This error occurred on my laptop, running 3.1.3 on Ubuntu 14.04. I am unable to replicate it on 3.1.3 under Ubuntu 12.04, or 3.1.3 under Debian 8 in rocker/r-devel. So there is something idiosyncratic and weird about my laptop.