Erreur lors de la tentative de compilation de RStudio

8

J'utilise Raspbian dans un Raspberry Pi 2 Model B

J'ai suivi les directives de la page Web RStudio et également dans cette rubrique https://www.raspberrypi.org/forums/viewtopic.php?f=34&t=55828

sudo su
apt-get install git r-recommended
git clone https://github.com/rstudio/rstudio.git
cd rstudio
./dependencies/linux/install-dependencies-debian
mkdir build
cd build
cmake .. -DRSTUDIO_TARGET=Server -DCMAKE_BUILD_TYPE=Release
make install

Mais en le faisant, cmake .. -DRSTUDIO_TARGET=Server -DCMAKE_BUILD_TYPE=Releasecela me lance cette erreur:

CMake Error at src/cpp/session/CMakeLists.txt:23 (message):
  Dictionaries not found (re-run install-dependencies script to install)


-- Configuring incomplete, errors occurred!
See also "/home/pi/rstudio/build/CMakeFiles/CMakeOutput.log".
See also "/home/pi/rstudio/build/CMakeFiles/CMakeError.log".

J'ai essayé de réinstaller les dépendances mais cela n'a pas aidé

Voici le journal des erreurs:

Determining if the function getpeereid exists failed with the following output:
Change Dir: /home/pi/rstudio/build/CMakeFiles/CMakeTmp

Run Build Command:"/usr/bin/make" "cmTryCompileExec3944045131/fast"
/usr/bin/make -f CMakeFiles/cmTryCompileExec3944045131.dir/build.make CMakeFiles/cmTryCompileExec3944045131.dir/build
make[1]: Entering directory '/home/pi/rstudio/build/CMakeFiles/CMakeTmp'
/usr/bin/cmake -E cmake_progress_report /home/pi/rstudio/build/CMakeFiles/CMakeTmp/CMakeFiles 1
Building C object CMakeFiles/cmTryCompileExec3944045131.dir/CheckFunctionExists.c.o
/usr/bin/cc   -DCHECK_FUNCTION_EXISTS=getpeereid   -o CMakeFiles/cmTryCompileExec3944045131.dir/CheckFunctionExists.c.o   -c /usr/share/cmake-3.0/Modules/CheckFunction$
Linking C executable cmTryCompileExec3944045131
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTryCompileExec3944045131.dir/link.txt --verbose=1
/usr/bin/cc   -DCHECK_FUNCTION_EXISTS=getpeereid    CMakeFiles/cmTryCompileExec3944045131.dir/CheckFunctionExists.c.o  -o cmTryCompileExec3944045131 -rdynamic
CMakeFiles/cmTryCompileExec3944045131.dir/CheckFunctionExists.c.o: In function `main':
CheckFunctionExists.c:(.text+0x14): undefined reference to `getpeereid'
collect2: error: ld returned 1 exit status
CMakeFiles/cmTryCompileExec3944045131.dir/build.make:88: recipe for target 'cmTryCompileExec3944045131' failed
make[1]: *** [cmTryCompileExec3944045131] Error 1
make[1]: Leaving directory '/home/pi/rstudio/build/CMakeFiles/CMakeTmp'
Makefile:118: recipe for target 'cmTryCompileExec3944045131/fast' failed
make: *** [cmTryCompileExec3944045131/fast] Error 2

Savez-vous ce qui pourrait arriver?

EDIT 1:

C'est la sortie de l'exécution ./dependencies/linux/install-dependencies-debian:

root@raspberrypi:/home/pi/rstudio# ./dependencies/linux/install-dependencies-debian
Reading package lists... Done
Building dependency tree
Reading state information... Done
build-essential is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Reading package lists... Done
Building dependency tree
Reading state information... Done
pkg-config is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Reading package lists... Done
Building dependency tree
Reading state information... Done
fakeroot is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Reading package lists... Done
Building dependency tree
Reading state information... Done
cmake is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Reading package lists... Done
Building dependency tree
Reading state information... Done
uuid-dev is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Reading package lists... Done
Building dependency tree
Reading state information... Done
libssl-dev is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Reading package lists... Done
Building dependency tree
Reading state information... Done
libbz2-dev is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Reading package lists... Done
Building dependency tree
Reading state information... Done
zlib1g-dev is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Reading package lists... Done
Building dependency tree
Reading state information... Done
Note, selecting 'libpam0g-dev' instead of 'libpam-dev'
libpam0g-dev is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Reading package lists... Done
Building dependency tree
Reading state information... Done
libxslt1-dev is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Reading package lists... Done
Building dependency tree
Reading state information... Done
libapparmor1 is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Reading package lists... Done
Building dependency tree
Reading state information... Done
apparmor-utils is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Reading package lists... Done
Building dependency tree
Reading state information... Done
libboost-all-dev is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Reading package lists... Done
Building dependency tree
Reading state information... Done
libpango1.0-dev is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package openjdk-6-jdk is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
However the following packages replace it:
  apt

E: Package 'openjdk-6-jdk' has no installation candidate

Il me dit que openjdk-6-jdk est nécessaire mais qu'il n'est pas dans le repos. J'ai installé openjdk-7-jdk manuellement, mais son installation n'a pas fonctionné.

Après cela, j'ai commenté (#) la ligne dans laquelle tente d'installer openjdk-6-jdk. Maintenant, il suit l'installation des packages et ce sont (les dernières lignes) de la sortie:

Reading package lists... Done
Building dependency tree
Reading state information... Done
ant is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Reading package lists... Done
Building dependency tree
Reading state information... Done
unzip is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
./dependencies/linux/install-dependencies-debian: line 58: cd: ../common: No such file or directory

Je suis entré à nouveau dans le fichier install-dependencies-linuxet ce sont les lignes qui échouent:

cd ../common
./install-common
cd ../linux

Mais je ne sais pas ce qui essaie d'installer. Après ces lignes, commencez les lignes d'installation de Qt mais c'est pour la version RStudio Desktop, pas ma version serveur.

EDIT 2:

J'ai découvert en utilisant la commande find / -name install-commonqu'il y avait un répertoire commun sous le répertoire des dépendances. J'ai donc cdédité /dependencies/common/et effectué manuellement un./install-common

root@raspberrypi:/home/pi/rstudio/dependencies/common# ./install-common
--2015-11-21 19:26:41--  https://s3.amazonaws.com/rstudio-buildtools/gin-1.5.zip
Resolving s3.amazonaws.com (s3.amazonaws.com)... 54.231.98.155
Connecting to s3.amazonaws.com (s3.amazonaws.com)|54.231.98.155|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1055663 (1.0M) [application/zip]
Saving to: ‘gin-1.5.zip’

gin-1.5.zip         100%[=====================>]   1.01M   951KB/s   in 1.1s

2015-11-21 19:26:43 (951 KB/s) - ‘gin-1.5.zip’ saved [1055663/1055663]

--2015-11-21 19:26:44--  https://s3.amazonaws.com/rstudio-buildtools/gwt-2.7.0.zip
Resolving s3.amazonaws.com (s3.amazonaws.com)... 54.231.9.24
Connecting to s3.amazonaws.com (s3.amazonaws.com)|54.231.9.24|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 108818328 (104M) [application/zip]
Saving to: ‘gwt-2.7.0.zip’

gwt-2.7.0.zip       100%[=====================>] 103.78M  7.80MB/s   in 20s

2015-11-21 19:27:04 (5.27 MB/s) - ‘gwt-2.7.0.zip’ saved [108818328/108818328]

--2015-11-21 19:27:36--  https://s3.amazonaws.com/rstudio-buildtools/junit-4.9b3.jar
Resolving s3.amazonaws.com (s3.amazonaws.com)... 54.231.49.132
Connecting to s3.amazonaws.com (s3.amazonaws.com)|54.231.49.132|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 247280 (241K) [application/java-archive]
Saving to: ‘junit-4.9b3.jar’

junit-4.9b3.jar     100%[=====================>] 241.48K   246KB/s   in 1.0s

2015-11-21 19:27:38 (246 KB/s) - ‘junit-4.9b3.jar’ saved [247280/247280]

--2015-11-21 19:27:38--  https://s3.amazonaws.com/rstudio-buildtools/selenium-java-2.37.0.zip
Resolving s3.amazonaws.com (s3.amazonaws.com)... 54.231.112.67
Connecting to s3.amazonaws.com (s3.amazonaws.com)|54.231.112.67|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 24625928 (23M) [application/zip]
Saving to: ‘selenium-java-2.37.0.zip’

selenium-java-2.37. 100%[=====================>]  23.48M  2.28MB/s   in 16s

2015-11-21 19:27:55 (1.45 MB/s) - ‘selenium-java-2.37.0.zip’ saved [24625928/24625928]

--2015-11-21 19:28:00--  https://s3.amazonaws.com/rstudio-buildtools/selenium-server-standalone-2.37.0.jar
Resolving s3.amazonaws.com (s3.amazonaws.com)... 54.231.114.92
Connecting to s3.amazonaws.com (s3.amazonaws.com)|54.231.114.92|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 34730734 (33M) [application/x-java-archive]
Saving to: ‘selenium-server-standalone-2.37.0.jar’

selenium-server-sta 100%[=====================>]  33.12M  4.39MB/s   in 8.6s

2015-11-21 19:28:10 (3.84 MB/s) - ‘selenium-server-standalone-2.37.0.jar’ saved [34730734/34730734]

--2015-11-21 19:28:10--  https://s3.amazonaws.com/rstudio-buildtools/chromedriver-mac
Resolving s3.amazonaws.com (s3.amazonaws.com)... 54.231.96.144
Connecting to s3.amazonaws.com (s3.amazonaws.com)|54.231.96.144|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 22034760 (21M) [application/octet-stream]
Saving to: ‘chromedriver-mac’

chromedriver-mac    100%[=====================>]  21.01M  5.39MB/s   in 4.8s

2015-11-21 19:28:15 (4.34 MB/s) - ‘chromedriver-mac’ saved [22034760/22034760]

--2015-11-21 19:28:15--  https://s3.amazonaws.com/rstudio-buildtools/chromedriver-linux
Resolving s3.amazonaws.com (s3.amazonaws.com)... 54.231.97.227
Connecting to s3.amazonaws.com (s3.amazonaws.com)|54.231.97.227|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 19303552 (18M) [application/octet-stream]
Saving to: ‘chromedriver-linux’

chromedriver-linux  100%[=====================>]  18.41M  2.53MB/s   in 9.4s

2015-11-21 19:28:25 (1.95 MB/s) - ‘chromedriver-linux’ saved [19303552/19303552]

--2015-11-21 19:28:25--  https://s3.amazonaws.com/rstudio-buildtools/chromedriver-win.exe
Resolving s3.amazonaws.com (s3.amazonaws.com)... 54.231.13.152
Connecting to s3.amazonaws.com (s3.amazonaws.com)|54.231.13.152|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 6731776 (6.4M) [application/octet-stream]
Saving to: ‘chromedriver-win.exe’

chromedriver-win.ex 100%[=====================>]   6.42M  2.52MB/s   in 2.6s

2015-11-21 19:28:29 (2.52 MB/s) - ‘chromedriver-win.exe’ saved [6731776/6731776]

--2015-11-21 19:28:29--  https://s3.amazonaws.com/rstudio-dictionaries/core-dictionaries.zip
Resolving s3.amazonaws.com (s3.amazonaws.com)... 54.231.10.192
Connecting to s3.amazonaws.com (s3.amazonaws.com)|54.231.10.192|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 876339 (856K) [application/zip]
Saving to: ‘core-dictionaries.zip’

core-dictionaries.z 100%[=====================>] 855.80K  1.00MB/s   in 0.8s

2015-11-21 19:28:31 (1.00 MB/s) - ‘core-dictionaries.zip’ saved [876339/876339]

--2015-11-21 19:28:31--  https://s3.amazonaws.com/rstudio-buildtools/mathjax-23.zip
Resolving s3.amazonaws.com (s3.amazonaws.com)... 54.231.1.152
Connecting to s3.amazonaws.com (s3.amazonaws.com)|54.231.1.152|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1674748 (1.6M) [application/zip]
Saving to: ‘mathjax-23.zip’

mathjax-23.zip      100%[=====================>]   1.60M   578KB/s   in 2.8s

2015-11-21 19:28:35 (578 KB/s) - ‘mathjax-23.zip’ saved [1674748/1674748]

1.50.0 already installed in /opt/rstudio-tools/boost/boost_1_50_0
--2015-11-21 19:28:35--  https://s3.amazonaws.com/rstudio-buildtools/pandoc-1.13.1.zip
Resolving s3.amazonaws.com (s3.amazonaws.com)... 54.231.64.184
Connecting to s3.amazonaws.com (s3.amazonaws.com)|54.231.64.184|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 115697042 (110M) [application/zip]
Saving to: ‘pandoc-1.13.1.zip’

pandoc-1.13.1.zip   100%[=====================>] 110.34M  1.99MB/s   in 44s

2015-11-21 19:29:20 (2.52 MB/s) - ‘pandoc-1.13.1.zip’ saved [115697042/115697042]

cp: cannot stat ‘pandoc-1.13.1/linux/debian/armv7l/pandoc*’: No such file or directory

Et maintenant, quand je refais un cmake, voici la sortie:

root@raspberrypi:/home/pi/rstudio/build# cmake .. -DRSTUDIO_TARGET=Server -DCMAKE_BUILD_TYPE=Release
-- Boost version: 1.50.0
-- Found R: /usr/lib/R
CMake Error at src/cpp/session/CMakeLists.txt:32 (message):
  rsconnect package not found (re-run install-dependencies script to install)


-- Configuring incomplete, errors occurred!
See also "/home/pi/rstudio/build/CMakeFiles/CMakeOutput.log".
See also "/home/pi/rstudio/build/CMakeFiles/CMakeError.log".

Au moins maintenant, il lance une erreur dans une ligne différente!

EDIT 3:

J'ai installé manuellement les dépendances à l'intérieur du install-commonet maintenant la commande cmake fonctionne! Yay!

Maintenant, j'ai effectué un make installmais ça reste bloqué ici:

Buildfile: /home/pi/rstudio/src/gwt/build.xml

ext:
Sergio Fernández
la source
1
Ancienne question (morte) à ce sujet ici ... Quelle sortie avez-vous obtenue de l'installation des dépendances (so apt-get ...and ./dependencies/linux/install-dependencies-debian)?
Wilf
@Wilf Merci beaucoup pour votre commentaire. J'ai édité la question,
Sergio Fernández
@Wilf Et désolé, la sortie de apt-get ...tout s'est bien passée. git is already the newest version. r-recommended is already the newest version.
Sergio Fernández
1
Juste un point taxonomique - pour mémoire, vous avez soit un Raspberry Pi Model B + ou un Raspberry Pi 2 Model B - le second a trois cœurs de processeur supplémentaires (et deux fois la mémoire IIRC) ...
SlySven
Désolé, j'ai écrit Raspberry Pi 2 Model B + en haut de cet article. Je veux dire Raspberry Pi 2 Model B. Maintenant c'est correct, merci.
Sergio Fernández

Réponses:

6

En utilisant quelques conseils de ce fil (merci!), Un autre fil Stack Overflow , une autre installation ARM (sur un Chromebook) et beaucoup d'essais et d'erreurs, j'ai pu obtenir un serveur RStudio v0.99.491 opérationnel sur mon Pi 2.

Sergio, je pense que vous manquez:

  1. Installez manuellement pandoc.

    sudo apt-get install -y pandoc
    
  2. Un nouveau compilateur GWT. Le processus ci-dessous varie en fonction de la configuration de vos répertoires. Fondamentalement, téléchargez le dernier compilateur, décompressez-le et déplacez-le dans le dossier "compilateur".

    cd ~/downloads
    wget http://dl.google.com/closure-compiler/compiler-latest.zip
    unzip compiler-latest.zip
    rm COPYING README.md compiler-latest.zip
    sudo mv compiler.jar /home/pi/downloads/rstudio/src/gwt/tools/compiler/compiler.jar
    
  3. Potentiellement, l'espace SWAP. J'ai eu des résultats mitigés pour le compiler avec et sans SWAP. Ce que je sais, c'est que j'ai utilisé SWAP pour obtenir l'installation de travail que j'ai maintenant.

Pour tous ceux qui ont eu du mal à suivre le processus ci-dessus, j'ai fait de mon mieux pour le compiler. REMARQUE: cela prendra des HEURES à ./install-commonet make install. Je pense qu'il a fallu près de 4,5 heures pour construire make install.

sudo su
apt-get update
apt-get upgrade -y
apt-get install -y git r-recommended
cd /home/pi/downloads/
git clone https://github.com/rstudio/rstudio.git
cd /home/pi/downloads/rstudio/dependencies/common/
./install-common
cd /home/pi/downloads/rstudio/dependencies/linux/
./install-dependencies-debian

#saw java 6 was not installed. installed v7
apt-get install -y openjdk-7-jdk

#tried to make install, got an error about dictionaries not installed and rerun install-dependencies
cd /home/pi/downloads/rstudio/dependencies/common/
./install-common

#tried to make install, hangs at "ext:" so I tried manually installing pandoc, which should have been installed earlier, but apparently was not
apt-get install -y pandoc

#tried to make install, hangs at "ext:" so I tried installing the latest GWT compiler
cd ~/downloads
wget http://dl.google.com/closure-compiler/compiler-latest.zip
unzip compiler-latest.zip
rm COPYING README.md compiler-latest.zip
mv compiler.jar /home/pi/downloads/rstudio/src/gwt/tools/compiler/compiler.jar

#build and install works!
cd /home/pi/downloads/rstudio/
#remove build if exists
rm -r ./build
mkdir build
cmake -DRSTUDIO_TARGET=Server -DCMAKE_BUILD_TYPE=Release
make install

Je dois ajouter qu'il y a quelques étapes supplémentaires pour mettre le serveur en marche, mais c'est là que j'imagine que la plupart des gens étaient bloqués. Voici les prochaines étapes de la création d'ARM de jrowen sur un Chromebook :

# Additional install steps
sudo useradd -r rstudio-server
sudo cp /usr/local/lib/rstudio-server/extras/init.d/debian/rstudio-server /etc/init.d/rstudio-server
sudo chmod +x /etc/init.d/rstudio-server 
sudo ln -f -s /usr/local/lib/rstudio-server/bin/rstudio-server /usr/sbin/rstudio-server
sudo chmod 777 -R /usr/local/lib/R/site-library/

# Setup locale
sudo apt-get install -y locales
sudo DEBIAN_FRONTEND=noninteractive dpkg-reconfigure locales
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
#echo 'export LANG=en_US.UTF-8' >> ~/.bashrc
#echo 'export LANGUAGE=en_US.UTF-8' >> ~/.bashrc

# Clean the system of packages used for building
sudo apt-get autoremove -y cabal-install ghc openjdk-7-jdk pandoc libboost-all-dev
sudo rm -r -f ~/rstudio-$VERS
sudo apt-get autoremove -y

# Start the server
sudo rstudio-server start

# Go to localhost:8787
dhewlett
la source
Bienvenue dans le coin aromatisé Raspberry Pi des communautés Stack Exchange. Cela me semble une réponse décemment écrite!
SlySven
1

3 ans plus tard, sur la base de la réponse de dhewlett, j'ai pu construire RStudio 1.1.463 sur Raspbian Stretch. J'ai tout mis dans une version docker pour une reproductibilité plus facile. Il se décline en plusieurs parties.

Créez d'abord un environnement de construction pour RStudio. Le Dockerfile.build_env ressemble à ceci:

FROM balenalib/raspberrypi3-debian:stretch-build as build_env

ARG VERSION_MAJOR=1
ARG VERSION_MINOR=1
ARG VERSION_PATCH=463
ARG PACKAGE_RELEASE=1
ARG VERSION_TAG=${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}

RUN apt-get update && apt-get upgrade -y && apt-get install -y \
      galternatives \
      git \
      openjdk-8-jdk \
      pandoc \
      pandoc-citeproc \
      python-dev \
      r-recommended

RUN mkdir -p /home/pi/Downloads
WORKDIR /home/pi/Downloads

# Get the RStudio sources. We only download the version of the code we need,
# instead of HEAD. HEAD has dependencies that RaspberryPi3 Debian (v9 Stretch)
# currently doesn't satisfy, e.g. QT >= 5.10.
RUN set -x \
    && wget https://github.com/rstudio/rstudio/archive/v${VERSION_TAG}.tar.gz -O rstudio.tgz \
    && tar xzf rstudio.tgz \
    && rm rstudio.tgz \
    && ln -s rstudio-${VERSION_TAG} rstudio

WORKDIR /home/pi/Downloads/rstudio/dependencies/linux
# We're going to use the system version of the boost library (version
# 1.62.0) instead of installing and building the RStudio version of boost
# (version 1.63.0) which takes several hours of build time.
RUN perl -i -pe 's/(^.*install-boost$)/# \1/s' ../common/install-common
RUN apt-get install libboost-all-dev
# Script installs qt-sdk only for x86 but we need armhf, so skip qt install.
RUN ./install-dependencies-debian --exclude-qt-sdk
# Extra dependencies to build rstudio-desktop: use the system QT libraries instead.
RUN apt-get install -y \
      libqt5opengl5-dev \
      libqt5sensors5-dev \
      libqt5svg5-dev \
      libqt5webkit5-dev \
      libqt5xmlpatterns5-dev \
      qt5-default \
      qt5-style-plugins \
      qtpositioning5-dev \
      qtwebengine5-dev

WORKDIR /home/pi/Downloads/rstudio
# Package building wants to grab QT library files to bundle them with the
# RStudio desktop .deb package. But bundling of system QT doesn't work due
# to path differences and is unnecessary anyway.
RUN sed -i -e 's#\(set(RSTUDIO_BUNDLE_QT\) TRUE#\1 FALSE#' src/cpp/desktop/CMakeLists.txt
# Add the package dependencies to system QT libraries.
RUN sed -i -e 's#\(^.*set(RSTUDIO_DEBIAN_DEPENDS "${RSTUDIO_DEBIAN_DEPENDS}libgstreamer0.10.*$\)#\1\nset(RSTUDIO_DEBIAN_DEPENDS "${RSTUDIO_DEBIAN_DEPENDS}libqt5webchannel5, libqt5webkit5, libqt5positioning5, libqt5sensors5, libqt5svg5, libqt5xml5, libqt5xmlpatterns5, ")#' package/linux/CMakeLists.txt
# Add our own package release (aka. Debian revision number) to the .deb file.
RUN sed -i -e 's#\(^.*\)-\(${PACKAGE_ARCHITECTURE}\)#set(CPACK_DEBIAN_PACKAGE_RELEASE "'${PACKAGE_RELEASE}'")\n\1-${CPACK_DEBIAN_PACKAGE_RELEASE}_\2#' package/linux/CMakeLists.txt

# Constrain gwtc compiler to use a single worker - gwtc is a memory hog and
# running multiple workers is getting too tight with 1 GB RAM + 1 GB swap.
RUN perl -0777 -i -pe 's#(<arg value="-localWorkers"/>\s+<arg value=)"\d+"(/>)#\1"1"\2#s' src/gwt/build.xml

# Change "cmake_policy(SET CMP0020 OLD)" to "cmake_policy(SET CMP0043 OLD)"
# to avoid a build time complaint.
RUN sed -i -e s/CMP0020/CMP0043/g src/cpp/desktop/CMakeLists.txt

# We build in a separate directory.
RUN mkdir build

Et construisez cette image avec:

docker build -t raspberrypi-rstudio-build-env -f Dockerfile.build_env .

Créez ensuite le paquet Debian du serveur RStudio avec Dockerfile.server_deb:

# The compilation, especially gwtc (java), needs a lot of memory so you need
# to add more swap on your RP3 in order for the compile to succeed:
#   * In /etc/dphys-swapfile set CONF_SWAPSIZE=1024 (default is 100)
#   * Then run sudo service dphys-swapfile restart
#   * Once the build is done and you're happy with the result you can set
#     the swap space back to the default 100 MB with:
#     * In /etc/dphys-swapfile set CONF_SWAPSIZE=100
#     * sudo service dphys-swapfile restart

FROM raspberrypi-rstudio-build-env as build_env

ARG VERSION_MAJOR=1
ARG VERSION_MINOR=1
ARG VERSION_PATCH=463
ARG PACKAGE_RELEASE=1
ARG VERSION_TAG=${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}
ARG BUILD_TAG=${VERSION_TAG}-${PACKAGE_RELEASE}

# Build only with parallelism 2 - gwtc is a memory hog. If you still run out
# of memory override this to 1.
ARG BUILD_PARALLELISM=2

WORKDIR /home/pi/Downloads/rstudio/build

RUN set -x \
    && cmake .. \
      -DRSTUDIO_TARGET=Server \
      -DCMAKE_BUILD_TYPE=Release \
      -DRSTUDIO_PACKAGE_BUILD=1 \
      -DRSTUDIO_BOOST_VERSION=1.62.0 \
      -DRSTUDIO_USE_SYSTEM_BOOST=1 \
    && make preinstall -j${BUILD_PARALLELISM}
# Create the deb package. Unfortunately cpack wants to rerun the whole build,
# so we'll work around that by giving it an empty build rule.
# (There really should be a better way to avoid the rebuild.)
RUN set -x \
    && mv Makefile Makefile.orig \
    && echo 'preinstall:' > Makefile \
    && cpack -G DEB \
    && mv Makefile.orig Makefile
# The product of this build is: rstudio-server-${BUILD_TAG}_armhf.deb

# Extract only the finished Debian package and leave it in an empty docker
# image to reduce image size. If you want to capture the package in its
# build environment, build it only to stage --target=build_env
FROM scratch as package

# ARGs need to be redefined in every build stage to be accessible.
ARG VERSION_MAJOR=1
ARG VERSION_MINOR=1
ARG VERSION_PATCH=463
ARG PACKAGE_RELEASE=1
ARG VERSION_TAG=${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}
ARG BUILD_TAG=${VERSION_TAG}-${PACKAGE_RELEASE}

COPY --from=build_env /home/pi/Downloads/rstudio/build/rstudio-server-${BUILD_TAG}_armhf.deb /

Construisez cette image et extrayez le paquet Debian du serveur RStudio:

docker build -t raspberrypi-rstudio-server-deb -f Dockerfile.server_deb .
docker image save raspberrypi-rstudio-server-deb | tar xO --wildcards '*/layer.tar' | tar x

De même pour le paquet Debian RStudio Desktop, vous utiliserez Dockerfile.desktop_deb:

FROM raspberrypi-rstudio-build-env as build_env

ARG VERSION_MAJOR=1
ARG VERSION_MINOR=1
ARG VERSION_PATCH=463
ARG PACKAGE_RELEASE=1
ARG VERSION_TAG=${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}
ARG BUILD_TAG=${VERSION_TAG}-${PACKAGE_RELEASE}

# Build only with parallelism 2 - gwtc is a memory hog. If you still run out
# of memory override this to 1.
ARG BUILD_PARALLELISM=2

WORKDIR /home/pi/Downloads/rstudio/build

RUN set -x \
    && cmake .. \
      -DRSTUDIO_TARGET=Desktop \
      -DCMAKE_BUILD_TYPE=Release \
      -DRSTUDIO_PACKAGE_BUILD=1 \
      -DRSTUDIO_BOOST_VERSION=1.62.0 \
      -DRSTUDIO_USE_SYSTEM_BOOST=1 \
      -DQT_QMAKE_EXECUTABLE=/usr/lib/arm-linux-gnueabihf/qt5/bin/qmake \
    && make preinstall -j${BUILD_PARALLELISM}
# Create the deb package. Unfortunately cpack wants to rerun the whole build,
# so we'll work around that by giving it an empty build rule.
# (There really should be a better way to avoid the rebuild.)
RUN set -x \
    && mv Makefile Makefile.orig \
    && echo 'preinstall:' > Makefile \
    && cpack -G DEB \
    && mv Makefile.orig Makefile
# The product of this build is: rstudio--${BUILD_TAG}_armhf.deb

# Comment out next line for native build.
RUN [ "cross-build-end" ]

# Extract only the finished Debian package and leave it in an empty docker
# image to reduce image size. If you want to capture the package in its
# build environment, build it only to stage --target=build_env
FROM scratch as package

# ARGs need to be redefined in every build stage to be accessible.
ARG VERSION_MAJOR=1
ARG VERSION_MINOR=1
ARG VERSION_PATCH=463
ARG PACKAGE_RELEASE=1
ARG VERSION_TAG=${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}
ARG BUILD_TAG=${VERSION_TAG}-${PACKAGE_RELEASE}

COPY --from=build_env /home/pi/Downloads/rstudio/build/rstudio--${BUILD_TAG}_armhf.deb /

Construisez cette image et extrayez le paquet Debian RStudio Desktop:

docker build -t raspberrypi-rstudio-desktop-deb -f Dockerfile.desktop_deb .
docker image save raspberrypi-rstudio-desktop-deb | tar xO --wildcards '*/layer.tar' | tar x

Enfin, installez les packages .deb avec apt qui récupère également les packages dépendants. Assurez-vous cependant de mettre à jour la liste des packages:

sudo apt-get update
sudo apt install ./rstudio-server-1.1.463-1_armhf.deb
sudo apt install ./rstudio--1.1.463-1_armhf.deb
Artur Klauser
la source