[BUG] Dockerfile cannot find gpgv which causes install script to fail
marytal opened this issue · 4 comments
Describe the bug
Running install script: RUN curl -Ls --tlsv1.2 --proto "=https" --retry 3 https://cli.doppler.com/install.sh | sh
in Dockerfile
To Reproduce
Run the above install script in a Dockerfile with gnupg installed on the docker image:
RUN yum update -y && \
yum install -y gnupg && \
yum clean all
RUN curl -Ls --tlsv1.2 --proto "=https" --retry 3 https://cli.doppler.com/install.sh | sh
Expected behavior
Install successfully
Actual behavior
RUN command -v gpg
works fine but RUN command -v gpgv
doesn't work. It appears that we cannot install gpgv independently (see here) so it should work when gnupg is installed.
Fails with error: "ERROR: Unable to find gpg binary for signature verification"
Started failing when this was merged: #449
Screenshots
N/A
Desktop (please complete the following information):
Dockerfile linux/amd64 amazonlinux:2023
CLI Version:
N/A
Additional context
N/A
Any help appreciated!
@marytal The problem here is that amazonlinux:2023
comes with the gnupg2-minimal
package installed (this is also what it tries installing when you run yum install gnupg
). gpgv
comes in the full gnupg2
package. If you run sudo yum install --allowerasing gnupg2
on the container, you should end up with the required binaries.
As a quick follow-up, keep in mind that you can also install via package manager by following the installation instructions on the RedHat/CentOS tab of our CLI installation docs.
Also, to elaborate a bit on why we changed from gpg
to gpgv
in #449 – the reason for that is newer versions of gnupg
are defaulting to using keyboxd
for key storage. When keyboxd
is enabled, the --no-default-keyring
and --keyring
flags are ignored by the gpg
command. This broke signature verification in our installer. The standard gnupg
package that we have as a dependency requirement when using the install script comes with gpgv
, which is a small binary designed specifically for doing signature verifications and isn't impacted by keyboxd
being in use. This allows us to continue verifying in the same way we were before (i.e., without us having to import our public key into the machine's keyring and then remove it after – leaving the potential that the key might end up permanently installed on the machine if the script were interrupted). In this situation, it (unfortunately) looks like AmazonLinux has mapped gnupg
to gnupg2-minimal
rather than gnupg2
, which results in their container coming without gpgv
by default.
Thanks for your help! :)