[R-sig-Debian] pinning of binary r-cran-* packages from c2d4u / r2u on Ubuntu 22.04
Thomas Petzoldt
thom@@@petzo|dt @end|ng |rom tu-dre@den@de
Wed Aug 9 18:58:13 CEST 2023
Am 09.08.2023 um 18:17 schrieb Dirk Eddelbuettel:
>
> Hi Thomas,
>
> Thanks a lot for bringing this over from r-package-devel!
And thanks for the quick help from my side!
> As for your question, "there is a lot of meat on these bones" and I really
> think we should discuss this here.
>
> Quick comments inline, more recap at the bottom.
>
> On 9 August 2023 at 17:29, Thomas Petzoldt wrote:
> | Hi,
> |
> | I am running a couple of shiny servers with several apps that are based
> | around own CRAN packages. It worked stable for years, but due to the
> | growing number of packages, the compile time for regular manual package
> | installation and updates became inconvenient.
> |
> | Therefore, I have been very happy to use pre-compiled packages from the
> | c2d4u repository -- and from now on testing r2u following a hint from
> | Dirk Edelbuettel. @Dirk: installation worked like a charm.
>
> Glad to hear!
Indeed. Just updated 58 packages and all apps continued working.
> It also generally works flawlessly (and repeatedly) for myself and others in
> many context involving many packages. Per the logs, we have shipped over 6.5
> million packages in the ~ 15 months it has been up and generally do more than
> 10k each day now.
>
> | The downside is, that the r-cran-* binaries are being installed
> | automatically, together with the system update. So experienced repeated
> | cases that crashed some of the shiny apps. The main reason with c2d4u
> | were conflicts between the binary packages and other packages installed
> | from sources. This may be less relevant with r2u, but in the interest of
> | reproducibility and stability, I would prefer conservative manual updates.
>
> Yes. If and when that happens, it is a bug!
Not necessarily. Breaking code can also be due to an incompatible
feature update. We know that R has both, conservative and less
conservative universes of packages ;-) Security is another issue.
> The correct (but laborious way) is to file and report them.
Hmm, depends. I am happy to contribute bug reports, but need evidence
that it's a bug and not a feature - or configuration issue on my side.
> I think the overall issue here is the mix and match from 'distro' packages,
> and added packages. Given the complete coverage, I prefer r2u for
> consistency. Which is why it is pinned higher at 700.
Agreed, so I applied the r2u pinning as descibed on your page.
> But one can have issue if because of ("semi-random") package renmaing /
> versioning / use of epoch [a leading version digit overriding] the distro
> wins.
>
> Eg we had a recent issue for r2u when following the Debian and the R 4.3.*
> catchup, several packages (all around the graphics API that needed a rebuilt)
> got force-rebuilt and ended up with, say, 1.2.3-2 beating 1.2.3-1.c2u2204.1.
> So I quickly rebuilt that dozen. It was more of an issue for jammy (22.04)
> than focal as the (distro) focal packages are generally way behind what CRAN
> and hence r2u has.
>
> The only really reliable way to fix this is by reporting the bugs the old
> school way so that r2u can take care of it. I would need help from users and
> that is why I am asking for it here.
>
> | My question: what is best practise, to disallow automatic updates for
> | all (or part of) r-cran-* packages? Uncommenting the complete package
> | source in the apt/sources.list.d/cd4u...list file? Fiddling around with
> | /etc/apt/preferences ?
> |
> | The ideal approach would be to put a plain textfile of all installed
> | r-cran packages somewhere to the system, where packages that are to be
> | upgraded (or oppositely: pinned) are just commented or outcommented.
>
> I mentioned in the initial short reply on the other list I can see several
> options (now up to four)
>
> 1) use dpkg to put packages on 'hold'. They will not be touched or
> updated. Reliable, manual, tedious for many. See 'man dpkg'.
This (or same with apt-mark) is probably the easiest: Write a shell (or
R) script iterating over a text file of packages. Should work similar to
a traditional "install.packsges()"-script if almost all packages are
from r2u and only a few directly from Github.
> 2) look into 'apt pinning' via preferences and its wiki page at
> https://wiki.debian.org/AptConfiguration etc This may work, I have not had
> the patience to work the details out.
Same to me.
> But there are other value beyond the
> '500 to 900' default range. This may work, and be quite elegant.
>
> 3) as you hint, just 'hide' the sources.list for r2u or c2d4u but it still
> risks updates from the distro versions :-/ Maybe 'easiest yet worst'.
Good point. This is what I have been afraid of.
> 4) maybe go the other way use eg the Rocker Project container for shiny and
> run you sacred production in a shielded setting? This sounds like more work,
> but it may be better. If it works for you depends.
Yes, I' just discussed a switch to docker with my colleague during
lunch. Maybe the university will install a central Shiny service in the
future or we buy the service ... For now, I am still happy with my very
simplistic solution with one VM running a load balancing Apache proxy
and one or more other VMs with multiple shiny server instances (the free
version). It has its limitations, but is a pragmatic setting for
research projects and university courses.
> Let's keep at this and see if we can make something 'already pretty good'
> even better!
All right, I'll stay tuned and give feedback.
>
> Cheers, Dirk
>
Thanks a lot,
Thomas
More information about the R-SIG-Debian
mailing list