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

I'm having more trouble installing Yarn. Install yarn global on Docker file

In my last question, I found the steps to run after the image is first built but running it fails.

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

The error output is:

------
#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
------

I was able to run so I don't think it's too related to gpg not working.

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


Solution 1:[1]

For future visitors, if your issue is similar to what Python Steve's comment describes, you can fix it by converting your key-file to ASCII text encoding.

Use file command to check this:

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

Use following command to correct it:

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

Note: Somehow, -o option might not be available. So, you can replace -o with > symbol in above command to indicate that you want to save output in the mentioned file.

If you retry the file command:

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

Now, you can import your keys.

I borrowed this answer from another answer. You can see the source answer in more detail here.


In my case, this happened to me because I attached my gpg keys to .kdbx key entry in KeePass software. And, when I tried to reuse my keys by retrieving them from .kdbx storage, I faced this issue. Here's the exact error:

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

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1