Доступ к Rust с терминала RStudio - PullRequest
0 голосов
/ 18 мая 2018

Это Dockerfile, который я создал для установки Rust в RStudio в проекте Rocker, поддерживаемом Карлом Беттигером и Дирком Эддельбюттелем:

FROM rocker/tidyverse
RUN apt-get update \
    && apt-get install -y wget
ENV RUSTUP_HOME=/usr/local/rustup \
    CARGO_HOME=/usr/local/cargo

RUN set -eux; \
    \
    url="https://static.rust-lang.org/rustup/dist/x86_64-unknown-linux-gnu/rustup-init"; \
    wget "$url"; \
    chmod +x rustup-init; \
    ./rustup-init -y --no-modify-path --default-toolchain stable; \
    rm rustup-init; \
    chmod -R a+w $RUSTUP_HOME $CARGO_HOME;

ENV PATH /usr/local/cargo/bin:$PATH

Образ создается нормально, но когда я запускаю образ с docker run -d -p 8787:8787 dockerimage Я не могу получить доступ к cargo диспетчеру пакетов Rust в терминале RStudio Server.

enter image description here

Что мне не хватает?

1 Ответ

0 голосов
/ 19 мая 2018

Если вы войдете в работающий контейнер, используя

$ docker exec -it <container-name>  bash

, вы увидите что-то вроде этого:

root@58906b77cc2f:/# echo $PATH
/usr/local/cargo/bin:/usr/lib/rstudio-server/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
root@58906b77cc2f:/# which cargo
/usr/local/cargo/bin/cargo
root@58906b77cc2f:/# cargo
Rust's package manager

USAGE:
    cargo [OPTIONS] [SUBCOMMAND]
[...]

Однако сервер RStudio выполняется как пользователь rstudio, итам ситуация иная:

root@58906b77cc2f:/# su - rstudio
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
$ cargo
sh: 2: cargo: not found

Так что либо установите Rust в папку, которая является частью значения по умолчанию PATH, например, используя apt, как предложил Дирк в комментариях.Или сделайте настройки PATH, RUSTUP_HOME и CARGO_HOME применимыми к другим пользователям, например, добавив их в /etc/profile.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...