Skip to content

Instantly share code, notes, and snippets.

@simbo1905
Forked from vt0r/GnuPG-2.2.md
Last active February 14, 2024 15:47
Show Gist options
  • Save simbo1905/ba3e8af9a45435db6093aea35c6150e8 to your computer and use it in GitHub Desktop.
Save simbo1905/ba3e8af9a45435db6093aea35c6150e8 to your computer and use it in GitHub Desktop.
Build/install instructions for GnuPG 2.2.x on Centos 7 and similar distros (formerly for 2.1.x)

GnuPG 2.2.x Build Instructions

Below are my build instructions for GnuPG 2.2.9, released on July 12th, 2018. These instructions are built for a headless Centos 7 LTS server (specificaly the openshift/base-centos7 docker image).

You use the below install script to install GnuPG 2.2.x by running the following commands:

# if you are root in a docker image:
curl -OL "https://gist.githubusercontent.com/simbo1905/ba3e8af9a45435db6093aea35c6150e8/raw/83561e214e36f6556fd6b1ec0a384cf28cb2debf/install-gnupg22.sh" && bash ./install-gnupg22.sh
# else if you need to sudo to do the installs:
curl -OL "https://gist.githubusercontent.com/simbo1905/ba3e8af9a45435db6093aea35c6150e8/raw/83561e214e36f6556fd6b1ec0a384cf28cb2debf/install-gnupg22.sh" && sudo -H bash ./install-gnupg22.sh
#!/bin/bash
# ---------
# Script to build and install GnuPG 2.2.x
yum-builddep -y gnupg2
mkdir -p /tmp/gnupg22 && cd /tmp/gnupg22
gpg --list-keys
gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 249B39D24F25E3B6 04376F3EE0856959 2071B08A33BD3F06 8A861B1C7EFD60D9
wget -c https://www.gnupg.org/ftp/gcrypt/libgpg-error/libgpg-error-1.31.tar.gz.sig && \
wget -c https://www.gnupg.org/ftp/gcrypt/libgpg-error/libgpg-error-1.31.tar.gz && \
wget -c https://www.gnupg.org/ftp/gcrypt/libgcrypt/libgcrypt-1.8.3.tar.gz && \
wget -c https://www.gnupg.org/ftp/gcrypt/libgcrypt/libgcrypt-1.8.3.tar.gz.sig && \
wget -c https://www.gnupg.org/ftp/gcrypt/libassuan/libassuan-2.5.1.tar.bz2 && \
wget -c https://www.gnupg.org/ftp/gcrypt/libassuan/libassuan-2.5.1.tar.bz2.sig && \
wget -c https://www.gnupg.org/ftp/gcrypt/libksba/libksba-1.3.5.tar.bz2 && \
wget -c https://www.gnupg.org/ftp/gcrypt/libksba/libksba-1.3.5.tar.bz2.sig && \
wget -c https://www.gnupg.org/ftp/gcrypt/npth/npth-1.5.tar.bz2 && \
wget -c https://www.gnupg.org/ftp/gcrypt/npth/npth-1.5.tar.bz2.sig && \
# wget -c https://www.gnupg.org/ftp/gcrypt/pinentry/pinentry-1.1.0.tar.bz2 && \
# wget -c https://www.gnupg.org/ftp/gcrypt/pinentry/pinentry-1.1.0.tar.bz2.sig && \
wget -c https://www.gnupg.org/ftp/gcrypt/gnupg/gnupg-2.2.9.tar.bz2 && \
wget -c https://www.gnupg.org/ftp/gcrypt/gnupg/gnupg-2.2.9.tar.bz2.sig && \
gpg --verify libgpg-error-1.31.tar.gz.sig && tar -xzf libgpg-error-1.31.tar.gz && \
gpg --verify libgcrypt-1.8.3.tar.gz.sig && tar -xzf libgcrypt-1.8.3.tar.gz && \
gpg --verify libassuan-2.5.1.tar.bz2.sig && tar -xjf libassuan-2.5.1.tar.bz2 && \
gpg --verify libksba-1.3.5.tar.bz2.sig && tar -xjf libksba-1.3.5.tar.bz2 && \
gpg --verify npth-1.5.tar.bz2.sig && tar -xjf npth-1.5.tar.bz2 && \
# gpg --verify pinentry-1.1.0.tar.bz2.sig && tar -xjf pinentry-1.1.0.tar.bz2 && \
gpg --verify gnupg-2.2.9.tar.bz2.sig && tar -xjf gnupg-2.2.9.tar.bz2 && \
cd libgpg-error-1.31/ && ./configure && make && make install && cd ../ && \
cd libgcrypt-1.8.3 && ./configure && make && make install && cd ../ && \
cd libassuan-2.5.1 && ./configure && make && make install && cd ../ && \
cd libksba-1.3.5 && ./configure && make && make install && cd ../ && \
cd npth-1.5 && ./configure && make && make install && cd ../ && \
# cd pinentry-1.1.0 && ./configure --enable-pinentry-curses --disable-pinentry-qt4 && \
# make && make install && cd ../ && \
cd gnupg-2.2.9 && ./configure && make && make install && \
echo "/usr/local/lib" > /etc/ld.so.conf.d/gpg2.conf && ldconfig -v && \
# Without the line below, gpg2 might fail to create / import secret keys !!!
if [ -d ~/.gnugp ]; then rm -ri ~/.gnugp; fi
gpgconf --kill gpg-agent
# tidy up
rm -rf cd /tmp/gnupg22
echo "Complete!!!"
@t-schroeder
Copy link

Is ~/.gnugp a typo?

@bachmanity1
Copy link

I have gpg 2.0.22 installed on my machine after running this script everything seems to work and message Complete!!! is printed however I'm not able to find gpg 2.2.9 anywhere in my filesystem. (I have checked /usr/bin and /usr/local/bin). Where can I find installed binaries?

@tegelad
Copy link

tegelad commented Feb 14, 2024

Here is some code which maybe helpful for you in inserting versions if you wanted different ones.

export libgpg_error_version="1.47"
export libgcrypt_version="1.10.3"
export libassuan_version="2.5.6"
export libksba_version="1.6.5"
export npth_version="1.6"
export pinentry_version="1.2.1"
export gnupg_version="2.4.4"

sudo yum-builddep -y gnupg2
gpg --list-keys
gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 249B39D24F25E3B6 04376F3EE0856959 2071B08A33BD3F06 8A861B1C7EFD60D9

wget -c "https://www.gnupg.org/ftp/gcrypt/libgpg-error/libgpg-error-${libgpg_error_version}.tar.gz.sig" && \
wget -c "https://www.gnupg.org/ftp/gcrypt/libgpg-error/libgpg-error-${libgpg_error_version}.tar.gz" && \
wget -c "https://www.gnupg.org/ftp/gcrypt/libgcrypt/libgcrypt-${libgcrypt_version}.tar.gz" && \
wget -c "https://www.gnupg.org/ftp/gcrypt/libgcrypt/libgcrypt-${libgcrypt_version}.tar.gz.sig" && \
wget -c "https://www.gnupg.org/ftp/gcrypt/libassuan/libassuan-${libassuan_version}.tar.bz2" && \
wget -c "https://www.gnupg.org/ftp/gcrypt/libassuan/libassuan-${libassuan_version}.tar.bz2.sig" && \
wget -c "https://www.gnupg.org/ftp/gcrypt/libksba/libksba-${libksba_version}.tar.bz2" && \
wget -c "https://www.gnupg.org/ftp/gcrypt/libksba/libksba-${libksba_version}.tar.bz2.sig" && \
wget -c "https://www.gnupg.org/ftp/gcrypt/npth/npth-${npth_version}.tar.bz2" && \
wget -c "https://www.gnupg.org/ftp/gcrypt/npth/npth-${npth_version}.tar.bz2.sig" && \
wget -c "https://www.gnupg.org/ftp/gcrypt/pinentry/pinentry-${pinentry_version}.tar.bz2" && \
wget -c "https://www.gnupg.org/ftp/gcrypt/pinentry/pinentry-${pinentry_version}.tar.bz2.sig" && \
wget -c "https://www.gnupg.org/ftp/gcrypt/gnupg/gnupg-${gnupg_version}.tar.bz2" && \
wget -c "https://www.gnupg.org/ftp/gcrypt/gnupg/gnupg-${gnupg_version}.tar.bz2.sig" && \
gpg --verify libgpg-error-${libgpg_error_version}.tar.gz.sig && tar -xzf libgpg-error-${libgpg_error_version}.tar.gz && \
gpg --verify libgcrypt-${libgcrypt_version}.tar.gz.sig && tar -xzf libgcrypt-${libgcrypt_version}.tar.gz && \
gpg --verify libassuan-${libassuan_version}.tar.bz2.sig && tar -xjf libassuan-${libassuan_version}.tar.bz2 && \
gpg --verify libksba-${libksba_version}.tar.bz2.sig && tar -xjf libksba-${libksba_version}.tar.bz2 && \
gpg --verify npth-${npth_version}.tar.bz2.sig && tar -xjf npth-${npth_version}.tar.bz2 && \
gpg --verify pinentry-${pinentry_version}.tar.bz2.sig && tar -xjf pinentry-${pinentry_version}.tar.bz2 && \
gpg --verify gnupg-${gnupg_version}.tar.bz2.sig && tar -xjf gnupg-${gnupg_version}.tar.bz2 
#cd libgpg-error-${libgpg-error_version}/ && ./configure && make && make install && cd ../ && \
#cd libgcrypt-${libgcrypt_version} && ./configure && make && make install && cd ../ && \
#cd libassuan-${libassuan_version} && ./configure && make && make install && cd ../ && \
#cd libksba-${libksba_version} && ./configure && make && make install && cd ../ && \
#cd npth-${npth_version} && ./configure && make && make install && cd ../ && \
#cd pinentry-${pinentry-verison} && ./configure --enable-pinentry-curses --disable-pinentry-qt4 && \

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment