ubuntu apt-get 存储库给出错误 gpg:找不到有效的 OpenPGP 数据

ubuntu apt-get repository gives error gpg: no valid OpenPGP data found

我正在尝试在 docker 图像上安装 tesseract 库,但出现错误。

我知道很多人问过同样的问题,我也尝试过很多解决方案,但仍然出错。这是 docker 文件

FROM python:3.7.6
RUN file="$(apt-get update && \
            apt-get install -y apt-utils && \
            apt-get install -y curl && \
            apt-get update && \
            apt-get install -y software-properties-common && \
            apt-get update && \
            apt-key adv --keyserver keyserver.ubuntu.com --recv-keys  A4BCBD87CEF9E52D && \ # this line added after search
            add-apt-repository ppa:alex-p/tesseract-ocr -y )" && echo $file

RUN file = "$(apt-get update  --allow-unauthenticated && \
            apt install tesseract-ocr=4.1.1-1ppa1~xenial1 -y )" && echo "------ New line" && echo $file

输出:

Warning: apt-key output should not be parsed (stdout is not a terminal)
gpg: key A4BCBD87CEF9E52D: public key "Launchpad PPA for Alex_P" imported
gpg: Total number processed: 1
gpg:               imported: 1
gpg: keybox '/tmp/tmpqo2rec69/pubring.gpg' created
gpg: /tmp/tmpqo2rec69/trustdb.gpg: trustdb created
gpg: key A4BCBD87CEF9E52D: public key "Launchpad PPA for Alex_P" imported
gpg: Total number processed: 1
gpg:               imported: 1
Warning: apt-key output should not be parsed (stdout is not a terminal)
gpg: no valid OpenPGP data found.

然后打印一些已安装的库 那么这个错误也是

step : RUN file = "$(apt-get update  --allow-unauthenticated &&        
     apt install tesseract-ocr=4.1.1-1ppa1~xenial1 -y )" && 
echo "------ New line" && echo $file
 ---> Running in 8d364f24dfd9
E: The repository 'http://ppa.launchpad.net/alex-p/tesseract-ocr/ubuntu focal Release' does not have a Release file.
=:  

据我所知,您使用的 Python 3.7.6 的 docker 图像是基于 Debian 10 而不是 Ubuntu 16.04 (xenial)。您尝试添加的存储库 (ppa:alex-p/tesseract-ocr) 用于 Ubuntu (https://launchpad.net/~alex-p/+archive/ubuntu/tesseract-ocr)。因此,尝试使用 Ubuntu 16.04 (xenial) 版本 (4.1.1-1ppa1~xenial1) 安装 tesseract 肯定会失败,因为它是基于 Debian 的映像。

您需要一个 Debian 软件包才能安装 (https://tracker.debian.org/pkg/tesseract)。我尝试使用下面的 Dockerfile 并使用了 tesseract 4.0.0-2 版并且它有效。

FROM python:3.7.6
RUN file="$(apt-get update && \
            apt-get install -y apt-utils && \
            apt-get install -y curl && \
            apt-get update && \
            apt-get install -y software-properties-common && \
            apt-get update && \
            apt install tesseract-ocr=4.0.0-2 -y )" && echo $file

检查创建的图像后,我可以确认确实安装了 tesseract

# docker run -it 37755343ba30 bash
root@fdb06d9bdc4e:/# dpkg -l | grep tesseract
ii  libtesseract4:amd64                4.0.0-2                     amd64        Tesseract OCR library
ii  tesseract-ocr                      4.0.0-2                     amd64        Tesseract command line OCR tool
ii  tesseract-ocr-eng                  1:4.00~git30-7274cfa-1      all          tesseract-ocr language files for English
ii  tesseract-ocr-osd                  1:4.00~git30-7274cfa-1      all          tesseract-ocr language files for script and orientation
root@fdb06d9bdc4e:/# exit

希望这能回答您的问题。

我做了很多搜索,我通过使用 ubuntu 基本映像解决了问题,然后在其上安装了 python 3.7。正如@Amitp 回答所述,python 基本映像基于 debian 而不是 ubuntu,并且 ppa 使用的是 ubuntu

解决方案的 docker 文件

FROM ubuntu:16.04
USER root
RUN file="$(apt-get update && \
            apt-get install -y apt-utils && \
            apt-get install -y curl && \
            apt-get update && \
            apt-get install -y software-properties-common && \
            apt-get update && \
            add-apt-repository ppa:deadsnakes/ppa -y && \
            apt update && \
            apt install -y python3.7 && \
            curl https://bootstrap.pypa.io/get-pip.py | python3.7 &&\
            apt-get update)" && echo $file