What is the effort required to be able to support a limited scope of linux-binary packages? By "limited scope", I mean a specific targeted linux distro and R-version combination.
As an example, I can devtools::build(..., binary=TRUE), and it will create a package (with already-compiled libraries when there is cpp code to compile) named something like mypkg_1.2.3_R_x86_64-pc-linux-gnu.tar.gz. What is not told in that filename is that it is compiled on ubuntu-24.04 using R-4.4. The embedded DESCRIPTION file reflects
Built: R 4.4.3; x86_64-pc-linux-gnu; 2025-05-23 20:29:52 UTC; unix
I can update that package into my local repo, update the PACKAGES using tools::write_PACKAGES(), and I can see in the top-level PACKAGES that the packages are found and listed with
Path: bin/x86_64-pc-linux-gnu-library/contrib/4.4
What I don't know (in the PACKAGES format) is if they are tagged as being binary somehow. (I cannot find a reference for PACKAGES's structure.) It is not served when requested, though.
Part of the complexity of serving to multiple distros is matching dependency libraries and compilers and several other things. I don't want to address any of that, since my case is to support linux-binary packages for the only linux environment that has access to my locally-served R repo.
I know that part of it is technically feasible, since p3m.dev does it (while adding the need for an HTTP user-agent string to specify the os/distro details). They have a successful business model with binary packages. I am not trying to reproduce (or compete with) the much larger scale and coverage that P3M supports.
What is the effort required to be able to support a limited scope of linux-binary packages? By "limited scope", I mean a specific targeted linux distro and R-version combination.
As an example, I can
devtools::build(..., binary=TRUE), and it will create a package (with already-compiled libraries when there is cpp code to compile) named something likemypkg_1.2.3_R_x86_64-pc-linux-gnu.tar.gz. What is not told in that filename is that it is compiled on ubuntu-24.04 using R-4.4. The embeddedDESCRIPTIONfile reflectsI can update that package into my local repo, update the
PACKAGESusingtools::write_PACKAGES(), and I can see in the top-levelPACKAGESthat the packages are found and listed withWhat I don't know (in the
PACKAGESformat) is if they are tagged as being binary somehow. (I cannot find a reference forPACKAGES's structure.) It is not served when requested, though.Part of the complexity of serving to multiple distros is matching dependency libraries and compilers and several other things. I don't want to address any of that, since my case is to support linux-binary packages for the only linux environment that has access to my locally-served R repo.
I know that part of it is technically feasible, since p3m.dev does it (while adding the need for an HTTP user-agent string to specify the os/distro details). They have a successful business model with binary packages. I am not trying to reproduce (or compete with) the much larger scale and coverage that P3M supports.