Skip to content

Instantly share code, notes, and snippets.

@mattrude
Created May 28, 2019 21:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mattrude/09ef89bbe6e3b3396d0a8fbabb99ff07 to your computer and use it in GitHub Desktop.
Save mattrude/09ef89bbe6e3b3396d0a8fbabb99ff07 to your computer and use it in GitHub Desktop.
Script to build and install GnuPG 2.2.x on Ubuntu
#!/bin/bash
# ---------
# Script to build and install GnuPG 2.2.x
GNUPG='2.2.16'
LIBGPGERROR='1.36'
LIBGCRYPT='1.8.4'
LIBKSBA='1.3.5'
LIBASSUAN='2.5.3'
NTBTLS='0.1.2'
NPTH='1.6'
PINENTRY='1.1.0'
PACKETS="bzip2 make gettext texinfo gnutls-bin libgnutls28-dev build-essential libbz2-dev zlib1g-dev libncurses5-dev libsqlite3-dev libldap2-dev libgnutls28-dev bzip2 make gettext texinfo gnutls-bin build-essential libbz2-dev zlib1g-dev libncurses5-dev libsqlite3-dev libldap2-dev"
################################################################################
LOGDIR="/var/log"
LOGFILE="${LOGDIR}/gnupg-update.log"
if [ "${SHELL}" != "/bin/bash" ]; then int="0"; else int="1"; fi
if [ "${int}" == "1" ]; then
if [ ! -f ${LOGFILE} ]; then mkdir -p ${LOGDIR}; touch ${LOGFILE}; fi
exec 3>&1 4>&2; trap 'exec 2>&4 1>&3' 0 1 2 3; exec 1>> ${LOGFILE} 2>&1
fi
################################################################################
UPDATE=""
dpkg --get-selections |sed 's/:/ /g' |awk '{print $1}' > /tmp/installed-packages.txt
for a in $PACKETS
do
if [ `egrep "^$a$" /tmp/installed-packages.txt |wc -l` != "1" ]; then
echo "$a is not installed"
UPDATE="$a $UPDATE"
fi
done
rm -f /tmp/installed-packages.txt
if [ "$UPDATE" != "" ]; then
apt update
apt install -y $UPDATE
fi
################################################################################
echo "Starting Download"
mkdir -p /var/src/gnupg && cd /var/src/gnupg
wget -cq https://www.gnupg.org/ftp/gcrypt/libgpg-error/libgpg-error-${LIBGPGERROR}.tar.gz && \
wget -cq https://www.gnupg.org/ftp/gcrypt/libgpg-error/libgpg-error-${LIBGPGERROR}.tar.gz.sig && \
wget -cq https://www.gnupg.org/ftp/gcrypt/libgcrypt/libgcrypt-${LIBGCRYPT}.tar.gz && \
wget -cq https://www.gnupg.org/ftp/gcrypt/libgcrypt/libgcrypt-${LIBGCRYPT}.tar.gz.sig && \
wget -cq https://www.gnupg.org/ftp/gcrypt/libassuan/libassuan-${LIBASSUAN}.tar.bz2 && \
wget -cq https://www.gnupg.org/ftp/gcrypt/libassuan/libassuan-${LIBASSUAN}.tar.bz2.sig && \
wget -cq https://www.gnupg.org/ftp/gcrypt/libksba/libksba-${LIBKSBA}.tar.bz2 && \
wget -cq https://www.gnupg.org/ftp/gcrypt/libksba/libksba-${LIBKSBA}.tar.bz2.sig && \
wget -cq https://www.gnupg.org/ftp/gcrypt/ntbtls/ntbtls-${NTBTLS}.tar.bz2 && \
wget -cq https://www.gnupg.org/ftp/gcrypt/ntbtls/ntbtls-${NTBTLS}.tar.bz2.sig && \
wget -cq https://www.gnupg.org/ftp/gcrypt/npth/npth-${NPTH}.tar.bz2 && \
wget -cq https://www.gnupg.org/ftp/gcrypt/npth/npth-${NPTH}.tar.bz2.sig && \
wget -cq https://www.gnupg.org/ftp/gcrypt/pinentry/pinentry-${PINENTRY}.tar.bz2 && \
wget -cq https://www.gnupg.org/ftp/gcrypt/pinentry/pinentry-${PINENTRY}.tar.bz2.sig && \
wget -cq https://www.gnupg.org/ftp/gcrypt/gnupg/gnupg-${GNUPG}.tar.bz2 && \
wget -cq https://www.gnupg.org/ftp/gcrypt/gnupg/gnupg-${GNUPG}.tar.bz2.sig && \
gpg --keyserver keyserver.mattrude.com --recv 0xD8692123C4065DEA5E0F3AB5249B39D24F25E3B6 && \
gpg --keyserver keyserver.mattrude.com --recv 0x031EC2536E580D8EA286A9F22071B08A33BD3F06 && \
gpg --verify libgpg-error-${LIBGPGERROR}.tar.gz.sig && \
tar -xzf libgpg-error-${LIBGPGERROR}.tar.gz && \
tar -xzf libgcrypt-${LIBGCRYPT}.tar.gz && \
tar -xjf libassuan-${LIBASSUAN}.tar.bz2 && \
tar -xjf libksba-${LIBKSBA}.tar.bz2 && \
tar -xjf npth-${NPTH}.tar.bz2 && \
tar -xjf pinentry-${PINENTRY}.tar.bz2 && \
tar -xjf gnupg-${GNUPG}.tar.bz2 && \
cd libgpg-error-${LIBGPGERROR}/ && ./configure && make && make install && cd ../ && \
cd libgcrypt-${LIBGCRYPT} && ./configure && make && make install && cd ../ && \
cd libassuan-${LIBASSUAN} && ./configure && make && make install && cd ../ && \
cd libksba-${LIBKSBA} && ./configure && make && make install && cd ../ && \
cd npth-${NPTH} && ./configure && make && make install && cd ../ && \
cd pinentry-${PINENTRY} && ./configure --enable-pinentry-curses --disable-pinentry-qt4 && \
make && make install && cd ../ && \
cd gnupg-${GNUPG} && ./configure && make && make install && \
echo "/usr/local/lib" > /etc/ld.so.conf.d/gpg2.conf && ldconfig -v && \
gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 249B39D24F25E3B6 04376F3EE0856959 2071B08A33BD3F06 8A861B1C7EFD60D9 && \
echo "" && echo "Complete!!!"
gpgconf --kill all
killall gpg-agent
killall dirmngr
if [ -f /usr/local/bin/gpg-agent ]; then
rm /usr/bin/gpg-agent; ln /usr/local/bin/gpg-agent /usr/bin/gpg-agent
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment