Pihole update failed on Ubuntu 18.04 LTS due to "Unsupported OS"

I'm seeing the same problem on my Ubuntu 18.04 LTS installation. Curiously, I have two pretty much identical installations running, and one (at home) updated without any fuss, whereas the other (not at home) fails when checking for dnsutils.

I tried removing dnsutils and running the script again. The updated picked up the missing package, downloaded and installed it, then promptly failed again.

Here's my bash -x pihole -up output:

# bash -x pihole -up
+ readonly PI_HOLE_SCRIPT_DIR=/opt/pihole
+ PI_HOLE_SCRIPT_DIR=/opt/pihole
+ setupVars=/etc/pihole/setupVars.conf
+ PI_HOLE_BIN_DIR=/usr/local/bin
+ readonly colfile=/opt/pihole/COL_TABLE
+ colfile=/opt/pihole/COL_TABLE
+ source /opt/pihole/COL_TABLE
++ [[ -t 1 ]]
+++ tput colors
++ [[ 8 -ge 8 ]]
++ COL_BOLD=''
++ COL_ULINE=''
++ COL_NC=''
++ COL_GRAY=''
++ COL_RED=''
++ COL_GREEN=''
++ COL_YELLOW=''
++ COL_BLUE=''
++ COL_PURPLE=''
++ COL_CYAN=''
++ COL_WHITE=''
++ COL_BLACK=''
++ COL_LIGHT_BLUE=''
++ COL_LIGHT_GREEN=''
++ COL_LIGHT_CYAN=''
++ COL_LIGHT_RED=''
++ COL_URG_RED=''
++ COL_LIGHT_PURPLE=''
++ COL_BROWN=''
++ COL_LIGHT_GRAY=''
++ COL_DARK_GRAY=''
++ TICK='[✓]'
++ CROSS='[✗]'
++ INFO='[i]'
++ QST='[?]'
++ DONE=' done!'
++ OVER='\r'
+ resolver=pihole-FTL
+ [[ 1 = 0 ]]
+ case "${1}" in
+ [[ ! 1000 -eq 0 ]]
++ command -v sudo
+ [[ -x /usr/bin/sudo ]]
+ exec sudo bash pihole -up
  [i] Checking for updates...
  [i] Pi-hole Core:     up to date
  [i] Web Interface:    up to date
  [i] FTL:              update available

  [i] FTL out of date, it will be updated by the installer.

  [✓] Root user check

        .;;,.
        .ccccc:,.
         :cccclll:.      ..,,
          :ccccclll.   ;ooodc
           'ccll:;ll .oooodc
             .;cll.;;looo:.
                 .. ','.
                .',,,,,,'.
              .',,,,,,,,,,.
            .',,,,,,,,,,,,....
          ....''',,,,,,,'.......
        .........  ....  .........
        ..........      ..........
        ..........      ..........
        .........  ....  .........
          ........,,,,,,,'......
            ....',,,,,,,,,,,,.
               .',,,,,,,,,'.
                .',,,,,,'.
                  ..'''.

  [✓] Update local cache of available packages
  [i] Existing PHP installation detected : PHP version 7.2.24-0ubuntu0.18.04.6
  [i] Performing unattended setup, no whiptail dialogs will be displayed
  [✓] Disk space check

  [✓] Checking apt-get for upgraded packages... up to date!

  [i] Installer Dependency checks...
  [✓] Checking for dhcpcd5
  [✓] Checking for git
  [✓] Checking for iproute2
  [✓] Checking for whiptail
  [✓] Checking for dnsutils


  Unable to complete update, please contact Pi-hole Support

Editing /etc/.pihole/automated install/basic-install.sh and setting "set -x" instead of "set -e" provides the following:

% pihole -up
+++ cat
++ DNS_SERVERS='Google (ECS);8.8.8.8;8.8.4.4;2001:4860:4860:0:0:0:0:8888;2001:4860:4860:0:0:0:0:8844
OpenDNS (ECS);208.67.222.222;208.67.220.220;2620:119:35::35;2620:119:53::53
Level3;4.2.2.1;4.2.2.2;;
Comodo;8.26.56.26;8.20.247.20;;
DNS.WATCH;84.200.69.80;84.200.70.40;2001:1608:10:25:0:0:1c04:b12f;2001:1608:10:25:0:0:9249:d69b
Quad9 (filtered, DNSSEC);9.9.9.9;149.112.112.112;2620:fe::fe;2620:fe::9
Quad9 (unfiltered, no DNSSEC);9.9.9.10;149.112.112.10;2620:fe::10;2620:fe::fe:10
Quad9 (filtered + ECS);9.9.9.11;149.112.112.11;2620:fe::11;
Cloudflare;1.1.1.1;1.0.0.1;2606:4700:4700::1111;2606:4700:4700::1001'
++ installLogLoc=/etc/pihole/install.log
++ setupVars=/etc/pihole/setupVars.conf
++ lighttpdConfig=/etc/lighttpd/lighttpd.conf
++ coltable=/opt/pihole/COL_TABLE
++ webroot=/var/www/html
++ webInterfaceGitUrl=https://github.com/pi-hole/AdminLTE.git
++ webInterfaceDir=/var/www/html/admin
++ piholeGitUrl=https://github.com/pi-hole/pi-hole.git
++ PI_HOLE_LOCAL_REPO=/etc/.pihole
++ PI_HOLE_FILES=(chronometer list piholeDebug piholeLogFlush setupLCD update version gravity uninstall webpage)
++ PI_HOLE_INSTALL_DIR=/opt/pihole
++ PI_HOLE_CONFIG_DIR=/etc/pihole
++ PI_HOLE_BIN_DIR=/usr/local/bin
++ PI_HOLE_BLOCKPAGE_DIR=/var/www/html/pihole
++ useUpdateVars=false
++ adlistFile=/etc/pihole/adlists.list
++ IPV4_ADDRESS=
++ IPV6_ADDRESS=
++ QUERY_LOGGING=true
++ INSTALL_WEB_INTERFACE=true
++ PRIVACY_LEVEL=0
++ '[' -z root ']'
++ '[' -t 0 ']'
+++ stty size
++ screen_size='74 100'
++ printf -v rows %d 74
++ printf -v columns %d 100
++ r=37
++ c=50
++ r=37
++ c=70
++ skipSpaceCheck=false
++ reconfigure=false
++ runUnattended=false
++ INSTALL_WEB_SERVER=true
++ [[ -f /opt/pihole/COL_TABLE ]]
++ source /opt/pihole/COL_TABLE
+++ [[ -t 1 ]]
++++ tput colors
+++ [[ 8 -ge 8 ]]
+++ COL_BOLD=''
+++ COL_ULINE=''
+++ COL_NC=''
+++ COL_GRAY=''
+++ COL_RED=''
+++ COL_GREEN=''
+++ COL_YELLOW=''
+++ COL_BLUE=''
+++ COL_PURPLE=''
+++ COL_CYAN=''
+++ COL_WHITE=''
+++ COL_BLACK=''
+++ COL_LIGHT_BLUE=''
+++ COL_LIGHT_GREEN=''
+++ COL_LIGHT_CYAN=''
+++ COL_LIGHT_RED=''
+++ COL_URG_RED=''
+++ COL_LIGHT_PURPLE=''
+++ COL_BROWN=''
+++ COL_LIGHT_GRAY=''
+++ COL_DARK_GRAY=''
+++ TICK='[✓]'
+++ CROSS='[✗]'
+++ INFO='[i]'
+++ QST='[?]'
+++ DONE=' done!'
+++ OVER='\r'
++ counter=0
++ [[ true != true ]]
+ source /opt/pihole/COL_TABLE
++ [[ -t 1 ]]
+++ tput colors
++ [[ 8 -ge 8 ]]
++ COL_BOLD=''
++ COL_ULINE=''
++ COL_NC=''
++ COL_GRAY=''
++ COL_RED=''
++ COL_GREEN=''
++ COL_YELLOW=''
++ COL_BLUE=''
++ COL_PURPLE=''
++ COL_CYAN=''
++ COL_WHITE=''
++ COL_BLACK=''
++ COL_LIGHT_BLUE=''
++ COL_LIGHT_GREEN=''
++ COL_LIGHT_CYAN=''
++ COL_LIGHT_RED=''
++ COL_URG_RED=''
++ COL_LIGHT_PURPLE=''
++ COL_BROWN=''
++ COL_LIGHT_GRAY=''
++ COL_DARK_GRAY=''
++ TICK='[✓]'
++ CROSS='[✗]'
++ INFO='[i]'
++ QST='[?]'
++ DONE=' done!'
++ OVER='\r'
+ [[ '' == \-\-\c\h\e\c\k\-\o\n\l\y ]]
+ main
+ local 'basicError=\n  Unable to complete update, please contact Pi-hole Support'
+ local core_update
+ local web_update
+ local FTL_update
+ core_update=false
+ web_update=false
+ FTL_update=false
+ source /etc/pihole/setupVars.conf
++ PIHOLE_INTERFACE=eth0
++ IPV4_ADDRESS=10.11.1.195/24
++ IPV6_ADDRESS=
++ QUERY_LOGGING=true
++ INSTALL_WEB_SERVER=true
++ INSTALL_WEB_INTERFACE=true
++ LIGHTTPD_ENABLED=true
++ BLOCKING_ENABLED=true
++ WEBPASSWORD=3ec0e63459d98b7ac5ceda2a74cdb126d636f6eca307ecf7c2f2ea5d15a75ff5
++ DNSMASQ_LISTENING=single
++ PIHOLE_DNS_1=193.138.218.74#53
++ DNS_FQDN_REQUIRED=true
++ DNS_BOGUS_PRIV=true
++ DNSSEC=false
++ CONDITIONAL_FORWARDING=false
+ is_repo /etc/.pihole
+ local directory=/etc/.pihole
+ local rc
+ [[ -d /etc/.pihole ]]
+ pushd /etc/.pihole
+ git status --short
+ popd
+ return 0
+ echo -e '  [i] Checking for updates...'
  [i] Checking for updates...
+ GitCheckUpdateAvail /etc/.pihole
+ local directory
+ directory=/etc/.pihole
+ curdir='/etc/.pihole/automated install'
+ cd /etc/.pihole
+ git fetch --quiet origin
++ git rev-parse '@{0}'
+ LOCAL=56cd7c4d59ceb629a2170cd1c8ab78ef26366019
++ git rev-parse '@{upstream}'
+ REMOTE=56cd7c4d59ceb629a2170cd1c8ab78ef26366019
+ [[ 40 == 0 ]]
+ [[ 40 == 0 ]]
+ cd '/etc/.pihole/automated install'
+ [[ 56cd7c4d59ceb629a2170cd1c8ab78ef26366019 != \5\6\c\d\7\c\4\d\5\9\c\e\b\6\2\9\a\2\1\7\0\c\d\1\c\8\a\b\7\8\e\f\2\6\3\6\6\0\1\9 ]]
+ return 1
+ core_update=false
+ echo -e '  [i] Pi-hole Core:\tup to date'
  [i] Pi-hole Core:     up to date
+ [[ true == true ]]
+ is_repo /var/www/html/admin
+ local directory=/var/www/html/admin
+ local rc
+ [[ -d /var/www/html/admin ]]
+ pushd /var/www/html/admin
+ git status --short
+ popd
+ return 0
+ GitCheckUpdateAvail /var/www/html/admin
+ local directory
+ directory=/var/www/html/admin
+ curdir='/etc/.pihole/automated install'
+ cd /var/www/html/admin
+ git fetch --quiet origin
++ git rev-parse '@{0}'
+ LOCAL=d8d3f316061ba60e0b1dfc6a11f6e917380aca5f
++ git rev-parse '@{upstream}'
+ REMOTE=d8d3f316061ba60e0b1dfc6a11f6e917380aca5f
+ [[ 40 == 0 ]]
+ [[ 40 == 0 ]]
+ cd '/etc/.pihole/automated install'
+ [[ d8d3f316061ba60e0b1dfc6a11f6e917380aca5f != \d\8\d\3\f\3\1\6\0\6\1\b\a\6\0\e\0\b\1\d\f\c\6\a\1\1\f\6\e\9\1\7\3\8\0\a\c\a\5\f ]]
+ return 1
+ web_update=false
+ echo -e '  [i] Web Interface:\tup to date'
  [i] Web Interface:    up to date
+ local funcOutput
++ get_binary_name
++ local machine
+++ uname -m
++ machine=x86_64
++ local l_binary
++ local 'str=Detecting architecture'
++ printf '  %b %s...' '[i]' 'Detecting architecture'
++ [[ x86_64 == \a\r\m* ]]
++ [[ x86_64 == *\a\a\r\c\h* ]]
++ [[ x86_64 == \x\8\6\_\6\4 ]]
++ local dpkgarch
+++ dpkg --print-architecture
++ dpkgarch=amd64
++ [[ amd64 == \i\3\8\6 ]]
++ printf '%b  %b Detected x86_64 architecture\n' '\r' '[✓]'
++ l_binary=pihole-FTL-linux-x86_64
++ echo pihole-FTL-linux-x86_64
  [✓] Detected x86_64 architecture
pihole-FTL-linux-x86_64'
+ local binary
+ binary=pihole-FTL-linux-x86_64
+ FTLcheckUpdate pihole-FTL-linux-x86_64
+ printf '  %b Checking for existing FTL binary...\n' '[i]'
+ local ftlLoc
++ which pihole-FTL
+ ftlLoc=/usr/bin/pihole-FTL
+ local ftlBranch
+ [[ -f /etc/pihole/ftlbranch ]]
+ ftlBranch=master
+ local binary
+ binary=pihole-FTL-linux-x86_64
+ local remoteSha1
+ local localSha1
+ which dnsmasq
+ check_service_active dnsmasq
+ is_command systemctl
+ local check_command=systemctl
+ command -v systemctl
+ systemctl is-enabled dnsmasq
+ [[ ! master == \m\a\s\t\e\r ]]
+ [[ -n /usr/bin/pihole-FTL ]]
+ local FTLversion
++ /usr/bin/pihole-FTL tag
+ FTLversion=v5.0
+ local FTLlatesttag
++ curl -sI https://github.com/pi-hole/FTL/releases/latest
++ grep --color=never -i Location
++ awk -F / '{print $NF}'
++ tr -d '[:cntrl:]'
+ FTLlatesttag=v5.1
+ [[ v5.0 != \v\5\.\1 ]]
+ return 0
+ FTL_update=true
+ echo -e '  [i] FTL:\t\tupdate available'
  [i] FTL:              update available
+ local ftlBranch
+ [[ -f /etc/pihole/ftlbranch ]]
+ ftlBranch=master
+ [[ ! master == \m\a\s\t\e\r ]]
+ [[ false == false ]]
+ [[ false == false ]]
+ [[ true == false ]]
+ [[ false == true ]]
+ [[ false == true ]]
+ [[ false == true ]]
+ [[ true == true ]]
+ echo ''

+ echo -e '  [i] FTL out of date, it will be updated by the installer.'
  [i] FTL out of date, it will be updated by the installer.
+ [[ true == true ]]
+ '/etc/.pihole/automated install/basic-install.sh' --reconfigure --unattended
++ cat
+ DNS_SERVERS='Google (ECS);8.8.8.8;8.8.4.4;2001:4860:4860:0:0:0:0:8888;2001:4860:4860:0:0:0:0:8844
OpenDNS (ECS);208.67.222.222;208.67.220.220;2620:119:35::35;2620:119:53::53
Level3;4.2.2.1;4.2.2.2;;
Comodo;8.26.56.26;8.20.247.20;;
DNS.WATCH;84.200.69.80;84.200.70.40;2001:1608:10:25:0:0:1c04:b12f;2001:1608:10:25:0:0:9249:d69b
Quad9 (filtered, DNSSEC);9.9.9.9;149.112.112.112;2620:fe::fe;2620:fe::9
Quad9 (unfiltered, no DNSSEC);9.9.9.10;149.112.112.10;2620:fe::10;2620:fe::fe:10
Quad9 (filtered + ECS);9.9.9.11;149.112.112.11;2620:fe::11;
Cloudflare;1.1.1.1;1.0.0.1;2606:4700:4700::1111;2606:4700:4700::1001'
+ installLogLoc=/etc/pihole/install.log
+ setupVars=/etc/pihole/setupVars.conf
+ lighttpdConfig=/etc/lighttpd/lighttpd.conf
+ coltable=/opt/pihole/COL_TABLE
+ webroot=/var/www/html
+ webInterfaceGitUrl=https://github.com/pi-hole/AdminLTE.git
+ webInterfaceDir=/var/www/html/admin
+ piholeGitUrl=https://github.com/pi-hole/pi-hole.git
+ PI_HOLE_LOCAL_REPO=/etc/.pihole
+ PI_HOLE_FILES=(chronometer list piholeDebug piholeLogFlush setupLCD update version gravity uninstall webpage)
+ PI_HOLE_INSTALL_DIR=/opt/pihole
+ PI_HOLE_CONFIG_DIR=/etc/pihole
+ PI_HOLE_BIN_DIR=/usr/local/bin
+ PI_HOLE_BLOCKPAGE_DIR=/var/www/html/pihole
+ useUpdateVars=false
+ adlistFile=/etc/pihole/adlists.list
+ IPV4_ADDRESS=
+ IPV6_ADDRESS=
+ QUERY_LOGGING=true
+ INSTALL_WEB_INTERFACE=true
+ PRIVACY_LEVEL=0
+ '[' -z root ']'
+ '[' -t 0 ']'
++ stty size
+ screen_size='74 100'
+ printf -v rows %d 74
+ printf -v columns %d 100
+ r=37
+ c=50
+ r=37
+ c=70
+ skipSpaceCheck=false
+ reconfigure=false
+ runUnattended=false
+ INSTALL_WEB_SERVER=true
+ for var in "$@"
+ case "$var" in
+ reconfigure=true
+ for var in "$@"
+ case "$var" in
+ runUnattended=true
+ [[ -f /opt/pihole/COL_TABLE ]]
+ source /opt/pihole/COL_TABLE
++ [[ -t 1 ]]
+++ tput colors
++ [[ 8 -ge 8 ]]
++ COL_BOLD=''
++ COL_ULINE=''
++ COL_NC=''
++ COL_GRAY=''
++ COL_RED=''
++ COL_GREEN=''
++ COL_YELLOW=''
++ COL_BLUE=''
++ COL_PURPLE=''
++ COL_CYAN=''
++ COL_WHITE=''
++ COL_BLACK=''
++ COL_LIGHT_BLUE=''
++ COL_LIGHT_GREEN=''
++ COL_LIGHT_CYAN=''
++ COL_LIGHT_RED=''
++ COL_URG_RED=''
++ COL_LIGHT_PURPLE=''
++ COL_BROWN=''
++ COL_LIGHT_GRAY=''
++ COL_DARK_GRAY=''
++ TICK='[✓]'
++ CROSS='[✗]'
++ INFO='[i]'
++ QST='[?]'
++ DONE=' done!'
++ OVER='\r'
+ counter=0
+ [[ '' != true ]]
+ main --reconfigure --unattended
+ local 'str=Root user check'
+ printf '\n'

+ [[ 0 -eq 0 ]]
+ printf '  %b %s\n' '[✓]' 'Root user check'
  [✓] Root user check
+ show_ascii_berry
+ echo -e '
        .;;,.
        .ccccc:,.
         :cccclll:.      ..,,
          :ccccclll.   ;ooodc
           '\''ccll:;ll .oooodc
             .;cll.;;looo:.
                 .. '\'','\''.
                .'\'',,,,,,'\''.
              .'\'',,,,,,,,,,.
            .'\'',,,,,,,,,,,,....
          ....'\'''\'''\'',,,,,,,'\''.......
        .........  ....  .........
        ..........      ..........
        ..........      ..........
        .........  ....  .........
          ........,,,,,,,'\''......
            ....'\'',,,,,,,,,,,,.
               .'\'',,,,,,,,,'\''.
                .'\'',,,,,,'\''.
                  ..'\'''\'''\''.
'

        .;;,.
        .ccccc:,.
         :cccclll:.      ..,,
          :ccccclll.   ;ooodc
           'ccll:;ll .oooodc
             .;cll.;;looo:.
                 .. ','.
                .',,,,,,'.
              .',,,,,,,,,,.
            .',,,,,,,,,,,,....
          ....''',,,,,,,'.......
        .........  ....  .........
        ..........      ..........
        ..........      ..........
        .........  ....  .........
          ........,,,,,,,'......
            ....',,,,,,,,,,,,.
               .',,,,,,,,,'.
                .',,,,,,'.
                  ..'''.

+ make_temporary_log
++ mktemp /tmp/pihole_temp.XXXXXX
+ TEMPLOG=/tmp/pihole_temp.DJAtuZ
+ exec
+ rm /tmp/pihole_temp.DJAtuZ
+ distro_check
+ is_command apt-get
+ local check_command=apt-get
+ command -v apt-get
+ PKG_MANAGER=apt-get
+ UPDATE_PKG_CACHE='apt-get update'
+ PKG_INSTALL=("${PKG_MANAGER}" -qq --no-install-recommends install)
+ PKG_COUNT='apt-get -s -o Debug::NoLocking=true upgrade | grep -c ^Inst || true'
+ APT_SOURCES=/etc/apt/sources.list
+ awk 'BEGIN{a=1;b=0}/bionic main/{a=0}/bionic.*universe/{b=1}END{exit a + b}' /etc/apt/sources.list
+ update_package_cache
+ local 'str=Update local cache of available packages'
+ printf '  %b %s...' '[i]' 'Update local cache of available packages'
  [i] Update local cache of available packages...+ eval 'apt-get update'
+ printf '%b  %b %s\n' '\r' '[✓]' 'Update local cache of available packages'
  [✓] Update local cache of available packages
+ apt-cache show iproute2
+ iproute_pkg=iproute2
+ is_command php
+ local check_command=php
+ command -v php
++ php
+ printf '  %b Existing PHP installation detected : PHP version %s\n' '[i]' 7.2.24-0ubuntu0.18.04.6
  [i] Existing PHP installation detected : PHP version 7.2.24-0ubuntu0.18.04.6
++ php
+ printf -v phpInsMajor %d 7
++ php
+ printf -v phpInsMinor %d 2
+ '[' 7 -ge 7 ']'
+ phpInsNewer=true
+ [[ true != true ]]
+ phpVer=php7.2
+ apt-cache show php7.2-sqlite3
+ phpSqlite=sqlite3
+ INSTALLER_DEPS=(dhcpcd5 git "${iproute_pkg}" whiptail dnsutils)
+ PIHOLE_DEPS=(cron curl iputils-ping lsof netcat psmisc sudo unzip wget idn2 sqlite3 libcap2-bin dns-root-data libcap2)
+ PIHOLE_WEB_DEPS=(lighttpd "${phpVer}-common" "${phpVer}-cgi" "${phpVer}-${phpSqlite}" "${phpVer}-xml" "${phpVer}-intl")
+ LIGHTTPD_USER=www-data
+ LIGHTTPD_GROUP=www-data
+ LIGHTTPD_CFG=lighttpd.conf.debian
+ [[ -f /etc/pihole/setupVars.conf ]]
+ [[ true == true ]]
+ printf '  %b Performing unattended setup, no whiptail dialogs will be displayed\n' '[i]'
  [i] Performing unattended setup, no whiptail dialogs will be displayed
+ useUpdateVars=true
+ export DEBIAN_FRONTEND=noninteractive
+ DEBIAN_FRONTEND=noninteractive
+ [[ false == true ]]
+ verifyFreeDiskSpace
+ local 'str=Disk space check'
+ local required_free_kilobytes=51200
+ local existing_free_kilobytes
++ df -Pk
++ grep -m1 '\/$'
++ awk '{print $4}'
+ existing_free_kilobytes=119447564
+ [[ 119447564 =~ ^([0-9])+$ ]]
+ [[ 119447564 -lt 51200 ]]
+ printf '  %b %s\n' '[✓]' 'Disk space check'
  [✓] Disk space check
+ notify_package_updates_available
+ local 'str=Checking apt-get for upgraded packages'
+ printf '\n  %b %s...' '[i]' 'Checking apt-get for upgraded packages'

  [i] Checking apt-get for upgraded packages...++ eval 'apt-get -s -o Debug::NoLocking=true upgrade | grep -c ^Inst || true'
+++ apt-get -s -o Debug::NoLocking=true upgrade
+++ grep -c '^Inst'
+++ true
+ updatesToInstall=0
++ uname -r
+ [[ -d /lib/modules/5.3.0-51-generic ]]
+ [[ 0 -eq 0 ]]
+ printf '%b  %b %s... up to date!\n\n' '\r' '[✓]' 'Checking apt-get for upgraded packages'
  [✓] Checking apt-get for upgraded packages... up to date!

+ install_dependent_packages dhcpcd5 git iproute2 whiptail dnsutils
+ counter=1
+ [[ 1 == 1 ]]
+ printf '  %b Installer Dependency checks...\n' '[i]'
  [i] Installer Dependency checks...
+ declare -a installArray
+ is_command apt-get
+ local check_command=apt-get
+ command -v apt-get
+ for i in "$@"
+ printf '  %b Checking for %s...' '[i]' dhcpcd5
  [i] Checking for dhcpcd5...+ dpkg-query -W '-f=${Status}' dhcpcd5
+ grep 'ok installed'
+ printf '%b  %b Checking for %s\n' '\r' '[✓]' dhcpcd5
  [✓] Checking for dhcpcd5
+ for i in "$@"
+ printf '  %b Checking for %s...' '[i]' git
  [i] Checking for git...+ grep 'ok installed'
+ dpkg-query -W '-f=${Status}' git
+ printf '%b  %b Checking for %s\n' '\r' '[✓]' git
  [✓] Checking for git
+ for i in "$@"
+ printf '  %b Checking for %s...' '[i]' iproute2
  [i] Checking for iproute2...+ grep 'ok installed'
+ dpkg-query -W '-f=${Status}' iproute2
+ printf '%b  %b Checking for %s\n' '\r' '[✓]' iproute2
  [✓] Checking for iproute2
+ for i in "$@"
+ printf '  %b Checking for %s...' '[i]' whiptail
  [i] Checking for whiptail...+ grep 'ok installed'
+ dpkg-query -W '-f=${Status}' whiptail
+ printf '%b  %b Checking for %s\n' '\r' '[✓]' whiptail
  [✓] Checking for whiptail
+ for i in "$@"
+ printf '  %b Checking for %s...' '[i]' dnsutils
  [i] Checking for dnsutils...+ dpkg-query -W '-f=${Status}' dnsutils
+ grep 'ok installed'
+ printf '%b  %b Checking for %s\n' '\r' '[✓]' dnsutils
  [✓] Checking for dnsutils
+ [[ 0 -gt 0 ]]
+ printf '\n'

+ return 0
+ os_check
+ local remote_os_domain valid_os valid_version detected_os_pretty detected_os detected_version display_warning
+ remote_os_domain=versions.pi-hole.net
+ valid_os=false
+ valid_version=false
+ display_warning=true
++ cat /etc/lsb-release /etc/os-release
++ tr -d '"'
++ grep PRETTY_NAME
++ cut -d = -f2-
+ detected_os_pretty='Ubuntu 18.04.4 LTS'
+ detected_os=Ubuntu
++ cat /etc/lsb-release /etc/os-release
++ grep VERSION_ID
++ cut -d = -f2-
++ tr -d '"'
+ detected_version=18.04
+ IFS=' '
+ read -r -a supportedOS
++ dig +short -t txt versions.pi-hole.net
++ tr -d '"'
+ '[' false = true ']'
+ '[' true = true ']'
+ '[' '' '!=' true ']'
+ printf '  %b %bUnsupported OS detected%b\n' '[✗]' '' ''
  [✗] Unsupported OS detected
+ printf '      https://docs.pi-hole.net/main/prerequesites/#supported-operating-systems\n'
      https://docs.pi-hole.net/main/prerequesites/#supported-operating-systems
+ printf '\n'

+ printf '      This check can be skipped by setting the environment variable %bPIHOLE_SKIP_OS_CHECK%b to %btrue%b\n' '' '' '' ''
      This check can be skipped by setting the environment variable PIHOLE_SKIP_OS_CHECK to true
+ printf '      e.g: export PIHOLE_SKIP_OS_CHECK=true\n'
      e.g: export PIHOLE_SKIP_OS_CHECK=true
+ printf '      By setting this variable to true you acknowledge there may be issues with Pi-hole during or after the install\n'
      By setting this variable to true you acknowledge there may be issues with Pi-hole during or after the install
+ printf '      If that is the case, you can feel free to ask the community on Discourse with the %bCommunity Help%b category:\n' '' ''
      If that is the case, you can feel free to ask the community on Discourse with the Community Help category:
+ printf '      https://discourse.pi-hole.net/c/bugs-problems-issues/community-help/\n'
      https://discourse.pi-hole.net/c/bugs-problems-issues/community-help/
+ exit 1
+ echo -e '\n  Unable to complete update, please contact Pi-hole Support'

  Unable to complete update, please contact Pi-hole Support
+ exit 1

This seems to indicate that my version of Ubuntu is unsupported, which is clearly wrong. Setting PIHOLE_SKIP_OS_CHECK=true and running pihole -up again doesn't work either:

% PIHOLE_SKIP_OS_CHECK=true pihole -up
  [i] Checking for updates...
  [i] Pi-hole Core:     up to date
  [i] Web Interface:    up to date
  [i] FTL:              update available

  [i] FTL out of date, it will be updated by the installer.

  [✓] Root user check

        .;;,.
        .ccccc:,.
         :cccclll:.      ..,,
          :ccccclll.   ;ooodc
           'ccll:;ll .oooodc
             .;cll.;;looo:.
                 .. ','.
                .',,,,,,'.
              .',,,,,,,,,,.
            .',,,,,,,,,,,,....
          ....''',,,,,,,'.......
        .........  ....  .........
        ..........      ..........
        ..........      ..........
        .........  ....  .........
          ........,,,,,,,'......
            ....',,,,,,,,,,,,.
               .',,,,,,,,,'.
                .',,,,,,'.
                  ..'''.

  [✓] Update local cache of available packages
  [i] Existing PHP installation detected : PHP version 7.2.24-0ubuntu0.18.04.6
  [i] Performing unattended setup, no whiptail dialogs will be displayed
  [✓] Disk space check

  [✓] Checking apt-get for upgraded packages... up to date!

  [i] Installer Dependency checks...
  [✓] Checking for dhcpcd5
  [✓] Checking for git
  [✓] Checking for iproute2
  [✓] Checking for whiptail
  [✓] Checking for dnsutils

Any insight? Any logs I can check or further debug symbols to turn on?

It's a problem with dig...

Please post the output of the following commands

dig +short -t txt versions.pi-hole.net
dig +noall +answer -t txt versions.pi-hole.net
dig +short +nocomments -t txt versions.pi-hole.net
dig +short -t txt versions.pi-hole.net @ns1.pi-hole.net
dig +short +nocookie -t txt versions.pi-hole.net


Strange, that it doesn't print the failed OS warning but stoppend after

Here you go:

$ dig +short -t txt versions.pi-hole.net
$

$ dig +noall +answer -t txt versions.pi-hole.net
$

$ dig +short +nocomments -t txt versions.pi-hole.net
$

$ dig +short -t txt versions.pi-hole.net @ns1.pi-hole.net
"Raspbian=9,10 Ubuntu=16,18,20 Debian=9,10 Fedora=31,32 CentOS=7,8"

$ dig +short +nocookie -t txt versions.pi-hole.net
"Raspbian=9,10 Ubuntu=16,18,20 Debian=9,10 Fedora=31,32 CentOS=7,8"

And I forgot one..

dig -t txt versions.pi-hole.net

$ dig -t txt versions.pi-hole.net

; <<>> DiG 9.11.3-1ubuntu1.12-Ubuntu <<>> -t txt versions.pi-hole.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: FORMERR, id: 64918
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 5353c52947a22ccb (echoed)
;; QUESTION SECTION:
;versions.pi-hole.net.          IN      TXT

;; Query time: 1 msec
;; SERVER: 217.170.133.134#53(217.170.133.134)
;; WHEN: Mon Jul 27 13:07:56 UTC 2020
;; MSG SIZE  rcvd: 61

Interestingly, it uses a DNS server I didn't specify in netplan... weird.

It is likely a old (?) Microsoft server which doesn' t handle DNS cookies right. See Pihole won't install (no errors, stops after dependencies) - #21 by DanSchaper and FORMERR from Microsoft DNS Server for DIG - Kevin Locke's Homepage.

Set another upstream server and the update will likely run without issues.

I didn't think I ever specified that DNS server for anything during the installation, but it seems it picked it up from the DHCP server. I've changed it in every file it showed up and have rebooted the server, hopefully it'll work a bit better now...

Sucess, now it works! :slight_smile:

Thanks a lot!

This topic was automatically closed 21 days after the last reply. New replies are no longer allowed.