[R] How Can I Build a Standalone Binary

Jeff Newmiller jdnewm|| @end|ng |rom dcn@d@v|@@c@@u@
Mon Aug 10 21:05:50 CEST 2020


I specifically said that there are approaches that apply container technology to user software... I generally cannot tell whether software I am running on Ubuntu is a snap container or a native binary. Windows Store offers a similar experience. Your goal of targeting multiple platforms is complicating this discussion though... I don't plan to follow you down that rabbit hole. This forum is about the R language.

On August 10, 2020 10:37:57 AM PDT, "Knecht, Logan" <lknecht using fredhutch.org> wrote:
>I am an expert user for Docker. Unfortunately this is not a use case
>that will work with Docker.
>
>The goal is to provide a self-contained artifact as a solution so that
>no effort needs to be put into the environment configuration.
>
>If Docker was used, the users would need to download docker and figure
>out how to run the docker image I build.
>
>That is a solution, but it does not fit the deliverable requirements
>I'm shooting for.
>
>Logan
>
>2020/08/07 午後4:37 に、"Jeff Newmiller" <jdnewmil using dcn.davis.ca.us>
>を書き込みました:
>
>While I have not attempted to apply this to Shiny apps on the desktop,
>layered container technology (e.g. Docker) is being rolled out for
>desktop app distribution on Linux (snap, flatpak) and Windows (Open
>Packaging Conventions), with which complex filesystem structures can be
>managed in isolated runtime environments. The hardest part is working
>out how the container will interact with the world... which I don't
>know the details of but it is clearly in the realm of "feasible".
>
>On August 7, 2020 2:23:48 PM PDT, Duncan Murdoch
><murdoch.duncan using gmail.com> wrote:
>    >I don't think it's feasible to do what you want.  At a very basic
>    >level, 
>>R assumes it has files distributed across a file system (mostly below 
>>the R.home() directory).  Faking that in a single standalone
>executable
>    >
>    >may be possible but wouldn't be easy.
>    >
>    >If running a server isn't possible, then I'd suggest you work on 
>>automating a regular R installation, and put the things you want to
>run
>    >
>    >into scripts that make use of it.  Two steps instead of one.
>    >
>    >Duncan Murdoch
>    >
>    >
>    >
>    >On 07/08/2020 5:10 p.m., Knecht, Logan wrote:
>>> Unfortunately, that is not a solution due to the constraints of file
>    >sizes associated with the run time operations as well as specific
>    >execution workflows.
>    >> 
>>> I need to make this a packaged distributable and the only blocker
>for
>    >it at the moment is not being able to successfully bundle R as a
>    >standalone binary.
>    >> 
>    >> Warm Regards,
>    >> 
>    >> Logan Knecht
>    >> 
>    >> 2020/08/07 午前4:50 に、"Duncan Murdoch" <murdoch.duncan using gmail.com>
>    >を書き込みました:
>    >> 
>  >>      Wouldn't it be easier to set up a Shiny host system, and just
>    >give your
>    >>      collaborators a URL to the Shiny app running there?
>    >> 
>    >>      Duncan Murdoch
>    >> 
>    >> 
>    >>      On 06/08/2020 5:32 p.m., Knecht, Logan wrote:
>    >>      > Hello all,
>    >>      >
>    >>      > ===== The short version =====
>    >>      >
>>>      > I am trying to build a standalone version for R so that I can
>>bundle and package a self-hosted environment for a shiny app. There
>are
>    >reasons for this decision, but it will only distract from the
>    >discussion.
>    >>      >
>    >>      > The inspiration for this comes from here:
>    >>      >
>>https://urldefense.proofpoint.com/v2/url?u=https-3A__www.youtube.com_watch-3Fv-3DARrbbviGvjc&d=DwIDaQ&c=eRAMFD45gAfqt84VtBcfhQ&r=yLJd2IoXkBkWMIBcuv1k7wCSdpKnUqiEZDh_EJHHU08&m=6GL5xCevUT873KGyFsJhVe44s-QATomA_BHxDVctiOA&s=yHknXdnol-gw1NqdlK0Md_dn9jW_NU6DlTZJ0aoKnxc&e=
>    >>      > and here
>    >>      >
>>https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_dirkschumacher_r-2Dshiny-2Delectron&d=DwIDaQ&c=eRAMFD45gAfqt84VtBcfhQ&r=yLJd2IoXkBkWMIBcuv1k7wCSdpKnUqiEZDh_EJHHU08&m=6GL5xCevUT873KGyFsJhVe44s-QATomA_BHxDVctiOA&s=iCgG_D3ngLrfXykUszOieQIRiwj5prEN3c0gFb8V_1g&e=
>    >>      >
>    >>      > I have tried these solutions, to no avail as I repeatedly
> >encounter issues with the process. Some issues have been difficulties
>    >importing libraries after repeating their steps, others have been
>    >issues with missing dynamic libraries that aren't available when I
>    >build from source.
>    >>      >
>    >>      > ===== Questions =====
>    >>      >
>    >>      > -   How is the R binary at this link created?
>    >>      >      -   Link:
>>https://urldefense.proofpoint.com/v2/url?u=https-3A__cloud.r-2Dproject.org_bin_macosx_R-2D4.0.2.pkg&d=DwIDaQ&c=eRAMFD45gAfqt84VtBcfhQ&r=yLJd2IoXkBkWMIBcuv1k7wCSdpKnUqiEZDh_EJHHU08&m=6GL5xCevUT873KGyFsJhVe44s-QATomA_BHxDVctiOA&s=pUj6yAcIF2zy9KcB7dXJD4ezIwluDIhuc3UN05ZcIs4&e=
>    >>      > -   How do I include `libgfortran.5.dylib`
>    >>      >      -   This distributable, when configured shows a file
>    >called `libgfortran.5.dylib`
>>>      >      -   As of this writing, my solution fails because this
>is
>    >missing when I run the self-hosted R
>    >>      > -   Is there any guidance on how to build a self-hosted R
>    >executable for each operating system?
>    >>      >      -   OSX
>    >>      >      -   Linux
>    >>      >      -   Windows
>    >>      >
>    >>      > ===== The long version =====
>    >>      >
>    >>      > ----- The Goal -----
>    >>      >
>   >>      > Create a self hosted version of R that runs independent of
>    >each system so that I can package and build shiny apps to be
>>distributed to collaborators in order to evangelize our new
>statistical
>    >method.
>    >>      >
>    >>      > ----- The Impetus -----
>    >>      >
>    >>      > It is too distracting and too much work to get our
>>collaborators to configure their environments just to try our
>statiscal
>    >methods we have been creating.
>    >>      >
>  >>      > We have a shiny app built around the statistical methods to
> >simplify the interface for interaction. Now we want to package it for
>    >easy consumption.
>    >>      >
>    >>      > It should be as simple as downloading an application and
>    >running it.
>    >>      >
>    >>      > ----- The Current Progress -----
>    >>      >
>    >>      > I have a repo here that is an electron application
>    >>      >
>    >>      >
>>https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_FredHutch_FAUST-5FNextflow-5FDesktop_tree_research_create-5Fr-5F4-5F0-5F2-5Fbuild-2Ddev&d=DwIDaQ&c=eRAMFD45gAfqt84VtBcfhQ&r=yLJd2IoXkBkWMIBcuv1k7wCSdpKnUqiEZDh_EJHHU08&m=6GL5xCevUT873KGyFsJhVe44s-QATomA_BHxDVctiOA&s=c_SfZuM1kBF7onYsTkktR5K6DyeLHO_iJU_8tn7XJE4&e=
>    >>      >
>    >>      > I can bundle these resources without issues
>    >>      >
>    >>      > -   Java
>    >>      > -   Nextflow
>    >>      > -   Our Shiny App
>    >>      >
>    >>      > ----- Process -----
>    >>      > The only missing piece is `R`
>    >>      >
>    >>      > I have a set of environment variables here:
>    >>      >
>>https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_FredHutch_FAUST-5FNextflow-5FDesktop_blob_research_create-5Fr-5F4-5F0-5F2-5Fbuild-2Ddev_electron-5Ffaust-5Fnextflow-5Fdesktop_app_binaries_r_build-5Fenvironment-5Fvariables.env&d=DwIDaQ&c=eRAMFD45gAfqt84VtBcfhQ&r=yLJd2IoXkBkWMIBcuv1k7wCSdpKnUqiEZDh_EJHHU08&m=6GL5xCevUT873KGyFsJhVe44s-QATomA_BHxDVctiOA&s=asCEqMQrRxIP9twZSG53oZmV8uK2PnP9iv2nqxw18xc&e=
>    >>      >
>>>      > I `source` the env variables and then I run this script here:
>    >>      >
>>`https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_FredHutch_FAUST-5FNextflow-5FDesktop_blob_research_create-5Fr-5F4-5F0-5F2-5Fbuild-2Ddev_electron-5Ffaust-5Fnextflow-5Fdesktop_app_binaries_r_download-5Fr-5Fosx.sh&d=DwIDaQ&c=eRAMFD45gAfqt84VtBcfhQ&r=yLJd2IoXkBkWMIBcuv1k7wCSdpKnUqiEZDh_EJHHU08&m=6GL5xCevUT873KGyFsJhVe44s-QATomA_BHxDVctiOA&s=6J4zNQoHoBCICudLqtBbiLk1xpStNSpsrtsnb6-O0Ak&e=
>    >`
>    >>      >
>   >>      > I then use the downloaded `R` to install dependencies with
>    >these scripts:
>    >>      >
>    >>      > -  
>>https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_FredHutch_FAUST-5FNextflow-5FDesktop_blob_research_create-5Fr-5F4-5F0-5F2-5Fbuild-2Ddev_electron-5Ffaust-5Fnextflow-5Fdesktop_app_binaries_r_install-5Fr-5Fdependencies.r&d=DwIDaQ&c=eRAMFD45gAfqt84VtBcfhQ&r=yLJd2IoXkBkWMIBcuv1k7wCSdpKnUqiEZDh_EJHHU08&m=6GL5xCevUT873KGyFsJhVe44s-QATomA_BHxDVctiOA&s=irTsih9Pq4R_rzV_6-eF0cAEAGTYbERYDRjnpy-hrgk&e=
>    >>      > -  
>>https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_FredHutch_FAUST-5FNextflow-5FDesktop_blob_research_create-5Fr-5F4-5F0-5F2-5Fbuild-2Ddev_electron-5Ffaust-5Fnextflow-5Fdesktop_app_binaries_r_install-5Fr-5Fcran-5Fdependencies.r&d=DwIDaQ&c=eRAMFD45gAfqt84VtBcfhQ&r=yLJd2IoXkBkWMIBcuv1k7wCSdpKnUqiEZDh_EJHHU08&m=6GL5xCevUT873KGyFsJhVe44s-QATomA_BHxDVctiOA&s=T9dVoi8UTeY8nd4o5ykO4Mzx4jFBpRy5YNUTFaZVbJs&e=
>    >>      > -  
>>https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_FredHutch_FAUST-5FNextflow-5FDesktop_blob_research_create-5Fr-5F4-5F0-5F2-5Fbuild-2Ddev_electron-5Ffaust-5Fnextflow-5Fdesktop_app_binaries_r_install-5Fr-5Fbiocmanager-5Fdependencies.r&d=DwIDaQ&c=eRAMFD45gAfqt84VtBcfhQ&r=yLJd2IoXkBkWMIBcuv1k7wCSdpKnUqiEZDh_EJHHU08&m=6GL5xCevUT873KGyFsJhVe44s-QATomA_BHxDVctiOA&s=AA7yI29L7ET5-HAfUlzguKp28j8N7755H6pCNA4m6uU&e=
>    >>      >
>>>      > And then voilà! It works. Well. It works on my local machine.
>>I can run the development build, I can package the build, I can run
>the
>    >release after installing it. Everything works.
>    >>      >
>>>      > Except when I bring it over to a separate computer it doesn't
>  >work because it states that it can't find `libgfortran.5.dylib`. See
>    >the attached screen shot.
>    >>      >
>    >>      > ===== The Plea For Guidance =====
>    >>      >
>  >>      > I would love any help to figure out how to achieve this. We
>>are very close to somethng tangibly interesting and it's very
>deflating
>   >to be blocked because `R` does not have a distributable that can be
>    >bundled.
>    >>      >
>    >>      > Any guidance or suggestions are greatly appreciated!
>    >>      >
>    >>      > Warm Regards,
>    >>      >
>    >>      > Logan Knecht
>    >>      >
>    >>      > 	[[alternative HTML version deleted]]
>    >>      >
>    >>      > ______________________________________________
>>>      > R-help using r-project.org mailing list -- To UNSUBSCRIBE and more,
>    >see
>    >>      >
>>https://urldefense.proofpoint.com/v2/url?u=https-3A__stat.ethz.ch_mailman_listinfo_r-2Dhelp&d=DwIDaQ&c=eRAMFD45gAfqt84VtBcfhQ&r=yLJd2IoXkBkWMIBcuv1k7wCSdpKnUqiEZDh_EJHHU08&m=6GL5xCevUT873KGyFsJhVe44s-QATomA_BHxDVctiOA&s=rXWnxYtLId2lxALBHyFwuyXWU-yTHljjCyH-AZ4alpc&e=
>    >>      > PLEASE do read the posting guide
>>https://urldefense.proofpoint.com/v2/url?u=http-3A__www.R-2Dproject.org_posting-2Dguide.html&d=DwIDaQ&c=eRAMFD45gAfqt84VtBcfhQ&r=yLJd2IoXkBkWMIBcuv1k7wCSdpKnUqiEZDh_EJHHU08&m=6GL5xCevUT873KGyFsJhVe44s-QATomA_BHxDVctiOA&s=RlRm34djv4feVOhSjRGeswgJsw13nHd02YTERiDBxng&e=
> >>      > and provide commented, minimal, self-contained, reproducible
>    >code.
>    >>      >
>    >> 
>    >>
>    >
>    >______________________________________________
>    >R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
>>https://urldefense.proofpoint.com/v2/url?u=https-3A__stat.ethz.ch_mailman_listinfo_r-2Dhelp&d=DwIFaQ&c=eRAMFD45gAfqt84VtBcfhQ&r=yLJd2IoXkBkWMIBcuv1k7wCSdpKnUqiEZDh_EJHHU08&m=-_rGGkN8eOYj8ZX-qUh967_-8HiKdgWtKdCqcJcwwUE&s=Edz5G4Mxqrv8jUU1i-etY2hmLRGE6fTtUsuO1meaE80&e=
>
>    >PLEASE do read the posting guide
>>https://urldefense.proofpoint.com/v2/url?u=http-3A__www.R-2Dproject.org_posting-2Dguide.html&d=DwIFaQ&c=eRAMFD45gAfqt84VtBcfhQ&r=yLJd2IoXkBkWMIBcuv1k7wCSdpKnUqiEZDh_EJHHU08&m=-_rGGkN8eOYj8ZX-qUh967_-8HiKdgWtKdCqcJcwwUE&s=wT-y_1LicEh73lA1bSAIHIhxzmmQR1otfvU_-ddVnw4&e=
>
>    >and provide commented, minimal, self-contained, reproducible code.
>
>    -- 
>    Sent from my phone. Please excuse my brevity.

-- 
Sent from my phone. Please excuse my brevity.



More information about the R-help mailing list