r-universe-org / help

Support and bug tracker for R-universe
https://docs.r-universe.dev/
8 stars 2 forks source link

Bioconductor package locations at bioc.r-universe.dev #415

Open LiNk-NY opened 1 month ago

LiNk-NY commented 1 month ago

Hi Jeroen @jeroen

Thank you for the introduction to the r-universe and for your efforts in including the Bioconductor universe.

Question: Is it possible to configure the path where packages are stored for the Bioc universe?

For BiocManager to work seamlessly with the https://bioc.r-universe.dev and the existing Bioconductor repository, we would have to have a package directory structure that includes Biconductor version and package type, e.g., https://www.bioconductor.org/packages/3.20/bioc/src/contrib/ABSSeq_1.58.0.tar.gz converts to https://bioc.r-universe.dev/packages/3.20/bioc/src/contrib/ABSSeq_1.58.0.tar.gz. The template would look something like https://{BioC_mirror}/packages/{biocVersion}/{pkgType}/src/contrib/{package}_{pkgVersion}.tar.gz

We would also need to be able to configure / limit the R version used for the Bioc universe. Currently for Bioc devel 3.20 packages, only R 4.4.0 is used.

Note that for binary linux packages we use : https://bioconductor.org/packages/3.20/container-binaries/bioconductor_docker/src/contrib/ABSSeq_1.58.0_R_x86_64-pc-linux-gnu.tar.gz with a template: https://{BioC_mirror}/packages/{biocVersion}/container-binaries/{containerPlatform}/src/contrib/{package}_{pkgVersion}.tar.gz

Side note. We have a way to match pkgType to BiocManager repository location but for now we will only work with bioc which maps to BioCsoft in BiocManager::repositories().

Thanks, Marcel

jeroen commented 2 weeks ago

Hey, sorry for the late response.

There are a few options. A quick fix would be to use a separate (sub)domain and add rule in nginx or cloudflare that maps https://yourdomain/packages/3.20/bioc/$path to https://bioc.r-universe.dev/$path.

But perhaps it would be more in the bioconductor spirit to mirror snapshots of the repository? This is also very easy to do, you can use the api tab to create a URL to download snapshots, for example the url below downloads a snapshot of the full repo including 4.4 binaries for win+mac:

https://bioc.r-universe.dev/api/snapshot/zip?types=win,mac&binaries=4.4

So you could have a mirror server somewhere with a cronjob that downloads this snapshot every night and hosts it using any static http server under /packages/3.20/bioc/.

We would also need to be able to configure / limit the R version used for the Bioc universe. Currently for Bioc devel 3.20 packages, only R 4.4.0 is used.

Do you mean the version that we provide binaries for? I don't think we can prevent users with different R versions to try and install packages from bioc.r-universe.dev but IIUC BiocManager automatically chooses a bioc branch based on the R version?