繁体   English   中英

在 docker 文件上安装纱线:gpg:[不知道]:部分长度对于数据包类型 63 无效

[英]Installing yarn on docker file: gpg: [don't know]: partial length invalid for packet type 63

我在安装 Yarn 时遇到了更多麻烦。 在 Docker 文件上安装 yarn global

在我的最后一个问题中,我找到了在首次构建图像但运行失败后要运行的步骤。

Dockerfile

FROM ruby:2.7.2
SHELL ["/bin/bash", "-c"]

RUN apt-get update -qq && \
  apt-get install -y nodejs libvips-tools libsodium-dev

# We need Chromedriver.
# RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \
#   echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list && \
#   apt-get install -y google-chrome-stable && \
#   CHROMEVER=$(google-chrome --product-version | grep -o "[^\.]*\.[^\.]*\.[^\.]*") && \
#   DRIVERVER=$(curl -s "https://chromedriver.storage.googleapis.com/LATEST_RELEASE_$CHROMEVER") && \
#   wget -q --continue -P /chromedriver "http://chromedriver.storage.googleapis.com/$DRIVERVER/chromedriver_linux64.zip" && \
#   unzip /chromedriver/chromedriver* -d /chromedriver

# Install all gems first.
# This hits the warm cache if unchanged so bundling is faster.
COPY Gemfile* /tmp/
WORKDIR /tmp
RUN bundle install

WORKDIR /sapco
COPY . /sapco

RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - # This line fails
RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
RUN apt-get update && apt-get install -y yarn
RUN yarn global add mjml

错误 output 是:

------
#13 0.362 Warning: apt-key output should not be parsed (stdout is not a terminal)
#13 0.377 gpg: [don't know]: partial length invalid for packet type 63
#13 0.377 gpg: read_block: read error: Invalid packet
#13 0.377 gpg: import from '-' failed: Invalid keyring
------

我能够运行,所以我认为这与 gpg 无法正常工作没有太大关系。

RUN curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add ```

对于未来的访问者,如果您的问题类似于Python Steve评论所描述的问题,您可以通过将您的密钥文件转换为 ASCII 文本编码来修复它。

使用file命令检查:

> file gpg_key.asc
gpg_key.asc: Little-endian UTF-16 Unicode text, with CRLF line terminators

使用以下命令更正它:

> iconv -f UTF-16 -t US-ASCII gpg_key.asc -o gpg_key_output.asc

注意:不知何故, -o选项可能不可用。 因此,您可以将上述命令中的-o替换为>符号,表示您要将 output 保存在上述文件中。

如果您重试file命令:

> file gpg_key_output.asc
gpg_key_output.asc: ASCII text, with CRLF line terminators

现在,您可以导入密钥。

我从另一个答案中借用了这个答案。 您可以在此处更详细地查看源答案。


就我而言,这发生在我身上,因为我将我的 gpg 密钥附加到 KeePass 软件中的.kdbx密钥条目。 而且,当我尝试通过从.kdbx存储中检索它们来重用我的密钥时,我遇到了这个问题。 这是确切的错误:

gpg: [don't know]: partial length invalid for packet type 63
gpg: read_block: read error: Invalid packet
gpg: import from 'gpg_key.asc' failed: Invalid keyring
gpg: Total number processed: 0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM