【问题标题】:How to install libparquet-dev on Docker so I can use R's {arrow}?如何在 Docker 上安装 libparquet-dev 以便我可以使用 R 的 {arrow}?
【发布时间】:2019-11-13 03:57:45
【问题描述】:

我的 docker 镜像基于 https://hub.docker.com/r/rocker/tidyverse/dockerfile

所以我尝试将以下行添加到 docker 文件中以尝试安装 libparquet-dev,这是使用 R 中的 Arrow 所必需的。

RUN apt-get update -qq && apt-get -y --no-install-recommends install \ libparquet-dev 抱怨E: Unable to locate package libparquet-dev,所以我尝试关注this guide并添加以下行

RUN apt update && \
        apt install -y -V apt-transport-https gnupg lsb-release wget && \
        wget -O /usr/share/keyrings/apache-arrow-keyring.gpg https://dl.bintray.com/apache/arrow/$(lsb_release --id --short | tr 'A-Z' 'a-z')/apache-arrow-keyring.gpg && \
        sudo tee /etc/apt/sources.list.d/apache-arrow.list <<APT_LINE \
        deb [arch=amd64 signed-by=/usr/share/keyrings/apache-arrow-keyring.gpg] https://dl.bintray.com/apache/arrow/$(lsb_release --id --short | tr 'A-Z' 'a-z')/ $(lsb_release --codename --short) main \
        deb-src [signed-by=/usr/share/keyrings/apache-arrow-keyring.gpg] https://dl.bintray.com/apache/arrow/$(lsb_release --id --short | tr 'A-Z' 'a-z')/ $(lsb_release --codename --short) main \
        APT_LINE  && \
        apt update && \
        apt install -y -V libarrow-dev && \
        apt install -y -V libarrow-glib-dev && \ 
        apt install -y -V libarrow-flight-dev && \
        apt install -y -V libplasma-dev && \
        apt install -y -V libplasma-glib-dev && \
        apt install -y -V libgandiva-dev && \
        apt install -y -V libgandiva-glib-dev && \
        apt install -y -V libparquet-dev  && \
        apt install -y -V libparquet-glib-dev

这是现在抱怨的

2019-11-13 03:56:56 (116 KB/s) - ‘/usr/share/keyrings/apache-arrow-keyring.gpg’ saved [44156/44156]

tee: 'signed-by=/usr/share/keyrings/apache-arrow-keyring.gpg]': No such file or directory
tee: 'https://dl.bintray.com/apache/arrow/debian/': No such file or directory
tee: '[signed-by=/usr/share/keyrings/apache-arrow-keyring.gpg]': No such file or directory
tee: 'https://dl.bintray.com/apache/arrow/debian/': No such file or directory

那么如何在 Docker 上安装libparquet-dev

编辑 将上述内容放入 .sh 文件中,然后运行它而不是将它们放入 RUN 命令中似乎有帮助,但我现在又遇到了另一个错误

The following packages have unmet dependencies:
 libplasma-dev : Depends: libarrow-cuda-dev (= 0.15.1-1) but it is not going to be installed
                 Depends: libplasma15 (= 0.15.1-1) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

【问题讨论】:

    标签: r docker parquet apache-arrow


    【解决方案1】:

    首先,这是错误的 Docker 语法

    1. 将指令放入 .sh 文件中,然后运行该文件。

    2. 将安装缩短到下面,这样您就只安装libparquet-dev 而不是所有其他的

    apt update
    apt install -y -V apt-transport-https curl gnupg lsb-release
    tee /etc/apt/sources.list.d/backports.list <<APT_LINE
    deb http://deb.debian.org/debian $(lsb_release --codename --short)-backports main
    APT_LINE
    curl --output /usr/share/keyrings/apache-arrow-keyring.gpg https://dl.bintray.com/apache/arrow/$(lsb_release --id --short | tr 'A-Z' 'a-z')/apache-arrow-keyring.gpg
    tee /etc/apt/sources.list.d/apache-arrow.list <<APT_LINE
    deb [arch=amd64 signed-by=/usr/share/keyrings/apache-arrow-keyring.gpg] https://dl.bintray.com/apache/arrow/$(lsb_release --id --short | tr 'A-Z' 'a-z')/ $(lsb_release --codename --short) main
    deb-src [signed-by=/usr/share/keyrings/apache-arrow-keyring.gpg] https://dl.bintray.com/apache/arrow/$(lsb_release --id --short | tr 'A-Z' 'a-z')/ $(lsb_release --codename --short) main
    APT_LINE
    curl https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add -
    tee /etc/apt/sources.list.d/llvm.list <<APT_LINE
    deb http://apt.llvm.org/$(lsb_release --codename --short)/ llvm-toolchain-$(lsb_release --codename --short)-7 main
    deb-src http://apt.llvm.org/$(lsb_release --codename --short)/ llvm-toolchain-$(lsb_release --codename --short)-7 main
    APT_LINE
    apt update
    apt install -y -V libparquet-dev
    
    1. 最终的 Dockerfile 应该是这样的,并且注意到 {arrow} 的安装应该在 libparquet-dev 的安装之后进行,因为我们需要从源代码安装 {arrow},而从源代码安装时需要有 libparquet-dev
    FROM rocker/tidyverse
    
    COPY create-parquet.sh create-parquet.sh
    
    RUN chmod +x ./create-parquet.sh
    
    RUN ./create-parquet.sh
    
    RUN install2.r --error \
        --deps TRUE \
        disk.frame \
        arrow
    
    RUN R -e "arrow::install_arrow()"
    
    CMD ["R"]
    

    【讨论】:

      猜你喜欢
      • 2010-11-07
      • 1970-01-01
      • 2021-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-02
      • 1970-01-01
      • 2021-05-10
      相关资源
      最近更新 更多