Errore durante il tentativo di compilare RStudio


8

Sto usando Raspbian in un Raspberry Pi 2 modello B

Ho seguito le linee guida nella pagina Web di RStudio e anche in questo argomento 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

Ma quando lo faccio cmake .. -DRSTUDIO_TARGET=Server -DCMAKE_BUILD_TYPE=Releasemi getta questo errore:

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".

Ho provato a reinstallare le dipendenze ma non è stato d'aiuto

Questo è il registro degli errori:

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

Sai cosa potrebbe succedere?

MODIFICA 1:

Questo è l'output di esecuzione ./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

Mi dice che openjdk-6-jdk è necessario ma non è nei repository. Ho installato manualmente openjdk-7-jdk, ma l'installazione non ha funzionato.

Dopo averlo fatto, ho commentato (#) la riga in cui tenta di installare openjdk-6-jdk. Ora segue l'installazione dei pacchetti e queste sono (le ultime righe) dell'output:

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

Ho inserito di nuovo nel file install-dependencies-linuxe queste sono le righe che falliscono:

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

Ma non so cosa stia cercando di installare. Dopo queste righe, inizia le linee di installazione di Qt ma è per la versione di RStudio Desktop, non per la versione del mio server.

MODIFICA 2:

Ho scoperto usando il comando find / -name install-commonche c'era una directory comune nella directory delle dipendenze. Quindi sono stato cded /dependencies/common/eseguito manualmente a./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

E ora quando eseguo di nuovo un cmake questo è l'output:

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".

Almeno ora genera un errore in una riga diversa!

EDIT 3:

Ho installato manualmente le dipendenze all'interno install-commone ora funziona il comando cmake! Sìì!

Ora ho eseguito un make installma si blocca qui:

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

ext:

1
Vecchia domanda (morta) su di essa qui ... Quale output hai ottenuto dall'installazione delle dipendenze (così apt-get ...e ./dependencies/linux/install-dependencies-debian)?
Wilf,

@Wilf Grazie mille per il tuo commento. Ho modificato la domanda,
Sergio Fernández,

@Wilf E scusate, l'output è apt-get ...andato tutto bene. git is already the newest version. r-recommended is already the newest version.
Sergio Fernández,

1
Solo un punto tassonomico - per la cronaca hai un Raspberry Pi Model B + o un Raspberry Pi 2 Model B - il secondo ha altri tre core del processore (e il doppio della memoria IIRC) ...
SlySven

Mi dispiace, ho scritto Raspberry Pi 2 Model B + nella parte superiore di questo post. Voglio dire Raspberry Pi 2 Modello B. Ora è corretto, grazie.
Sergio Fernández,

Risposte:


6

Utilizzando alcuni suggerimenti da questo thread (grazie!), Un altro thread Stack Overflow , un'altra installazione ARM (su un Chromebook) e un sacco di tentativi ed errori, sono stato in grado di ottenere un RStudio Server v0.99.491 attivo e funzionante sul mio Pi 2.

Sergio, quello che penso ti manchi è:

  1. Installa manualmente pandoc.

    sudo apt-get install -y pandoc
    
  2. Un nuovo compilatore GWT. Il processo di seguito varia in base alla configurazione delle directory. Fondamentalmente, scarica l'ultimo compilatore, decomprimilo e spostalo nella cartella "compilatore".

    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. Potenzialmente, spazio SWAP. Ho avuto risultati contrastanti per farlo compilare con e senza SWAP. Quello che so è che ho usato SWAP per ottenere l'installazione funzionante che ho ora.

Per chiunque abbia avuto difficoltà a seguire il processo sopra ho fatto del mio meglio per compilarlo. NOTA: ci vorranno ORE a ./install-commone make install. Penso che ci siano voluti quasi 4,5 ore per la costruzione 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

Dovrei aggiungere che ci sono alcuni passaggi in più per mettere in funzione il server, ma è qui che immagino che molte persone fossero bloccate. Ecco i prossimi passi della build ARM di jrowen su 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

Benvenuti nell'angolo aromatizzato Raspberry Pi delle community di Stack Exchange. Questa mi sembra una risposta decentemente scritta!
SlySven,

1

3 anni dopo, sulla base della risposta di dhewlett, sono stato in grado di costruire RStudio 1.1.463 su Raspbian Stretch. Ho inserito tutto in una finestra mobile per una più facile riproducibilità. È disponibile in più parti.

Innanzitutto creare un ambiente di compilazione per RStudio. Dockerfile.build_env è simile al seguente:

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

E costruisci quell'immagine con:

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

Quindi compilare il pacchetto Debian di RStudio Server con 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 /

Crea quell'immagine ed estrai il pacchetto Debian di RStudio Server:

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

Analogamente per il pacchetto Debian Desktop RStudio utilizzerai 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 /

Crea quell'immagine ed estrai il pacchetto Debian Desktop di RStudio:

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

Infine, installa i pacchetti .deb con apt che estrae anche i pacchetti dipendenti. Assicurati di aggiornare prima l'elenco dei pacchetti però:

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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.