pi@raspberrypi:~ $ curl -sSL https://install.pi-hole.net | sudo bash -x
+ set -e
+ installLogLoc=/etc/pihole/install.log
+ setupVars=/etc/pihole/setupVars.conf
+ lighttpdConfig=/etc/lighttpd/lighttpd.conf
+ coltable=/opt/pihole/COL_TABLE
+ 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
+ useUpdateVars=false
+ adlistFile=/etc/pihole/adlists.list
+ regexFile=/etc/pihole/regex.list
+ IPV4_ADDRESS=
+ IPV6_ADDRESS=
+ QUERY_LOGGING=true
+ INSTALL_WEB_INTERFACE=true
+ PRIVACY_LEVEL=0
+ '[' -z root ']'
++ stty size
stty: 'entrée standard': Ioctl() inapproprié pour un périphérique
++ printf '%d %d' 24 80
+ screen_size='24 80'
+ printf -v rows %d 24
+ printf -v columns %d 80
+ r=12
+ c=40
+ r=20
+ c=70
+ skipSpaceCheck=false
+ reconfigure=false
+ runUnattended=false
+ INSTALL_WEB_SERVER=true
+ [[ -f /opt/pihole/COL_TABLE ]]
+ COL_NC='\e[0m'
+ COL_LIGHT_GREEN='\e[1;32m'
+ COL_LIGHT_RED='\e[1;31m'
+ TICK='[\e[1;32m✓\e[0m]'
+ CROSS='[\e[1;31m✗\e[0m]'
+ INFO='[i]'
+ DONE='\e[1;32m done!\e[0m'
+ OVER='\r\033[K'
+ binary=tbd
+ counter=0
+ [[ '' != true ]]
+ main
+ local 'str=Root user check'
+ printf '\n'
+ [[ 0 -eq 0 ]]
+ printf ' %b %s\n' '[\e[1;32m✓\e[0m]' 'Root user check'
[✓] Root user check
+ show_ascii_berry
+ echo -e '
\e[1;32m.;;,.
.ccccc:,.
:cccclll:. ..,,
:ccccclll. ;ooodc
'\''ccll:;ll .oooodc
.;cll.;;looo:.
\e[1;31m.. '\'','\''.
.'\'',,,,,,'\''.
.'\'',,,,,,,,,,.
.'\'',,,,,,,,,,,,....
....'\'''\'''\'',,,,,,,'\''.......
......... .... .........
.......... ..........
.......... ..........
......... .... .........
........,,,,,,,'\''......
....'\'',,,,,,,,,,,,.
.'\'',,,,,,,,,'\''.
.'\'',,,,,,'\''.
..'\'''\'''\''.\e[0m
'
.;;,.
.ccccc:,.
:cccclll:. ..,,
:ccccclll. ;ooodc
'ccll:;ll .oooodc
.;cll.;;looo:.
.. ','.
.',,,,,,'.
.',,,,,,,,,,.
.',,,,,,,,,,,,....
....''',,,,,,,'.......
......... .... .........
.......... ..........
.......... ..........
......... .... .........
........,,,,,,,'......
....',,,,,,,,,,,,.
.',,,,,,,,,'.
.',,,,,,'.
..'''.
+ make_temporary_log
++ mktemp /tmp/pihole_temp.XXXXXX
+ TEMPLOG=/tmp/pihole_temp.lz1FxV
+ exec
+ rm /tmp/pihole_temp.lz1FxV
+ 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} --yes --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
+ apt-get install --dry-run iproute2
+ iproute_pkg=iproute2
+ is_command php
+ local check_command=php
+ command -v php
+ [[ '' != true ]]
+ apt-get install --dry-run php
+ phpVer=php5
+ apt-get install --dry-run php5-sqlite3
+ phpSqlite=sqlite
+ INSTALLER_DEPS=(apt-utils dialog debconf dhcpcd5 git ${iproute_pkg} whiptail)
+ PIHOLE_DEPS=(cron curl dnsutils iputils-ping lsof netcat psmisc sudo unzip wget idn2 sqlite3 libcap2-bin dns-root-data resolvconf libcap2)
+ PIHOLE_WEB_DEPS=(lighttpd ${phpVer}-common ${phpVer}-cgi ${phpVer}-${phpSqlite})
+ LIGHTTPD_USER=www-data
+ LIGHTTPD_GROUP=www-data
+ LIGHTTPD_CFG=lighttpd.conf.debian
+ [[ -f /etc/pihole/setupVars.conf ]]
+ [[ 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=8644908
+ [[ 8644908 =~ ^([0-9])+$ ]]
+ [[ 8644908 -lt 51200 ]]
+ printf ' %b %s\n' '[\e[1;32m✓\e[0m]' 'Disk space check'
[✓] Disk space check
+ 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\033[K' '[\e[1;32m✓\e[0m]' 'Update local cache of available packages'
[✓] Update local cache of available packages
+ 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'
+ updatesToInstall=2
++ uname -r
+ [[ -d /lib/modules/4.14.98-v7+ ]]
+ [[ 2 -eq 0 ]]
+ printf '%b %b %s... %s updates available\n' '\r\033[K' '[\e[1;32m✓\e[0m]' 'Checking apt-get for upgraded packages' 2
[✓] Checking apt-get for upgraded packages... 2 updates available
+ printf ' %b %bIt is recommended to update your OS after installing the Pi-hole!%b\n\n' '[i]' '\e[1;32m' '\e[0m'
[i] It is recommended to update your OS after installing the Pi-hole!
+ install_dependent_packages 'INSTALLER_DEPS[@]'
+ counter=1
+ [[ 1 == 1 ]]
+ printf ' %b Installer Dependency checks...\n' '[i]'
[i] Installer Dependency checks...
+ argArray1=("${!1}")
+ declare -a argArray1
+ declare -a installArray
+ is_command debconf-apt-progress
+ local check_command=debconf-apt-progress
+ command -v debconf-apt-progress
+ for i in "${argArray1[@]}"
+ printf ' %b Checking for %s...' '[i]' apt-utils
[i] Checking for apt-utils...+ dpkg-query -W '-f=${Status}' apt-utils
+ grep 'ok installed'
+ printf '%b %b Checking for %s\n' '\r\033[K' '[\e[1;32m✓\e[0m]' apt-utils
[✓] Checking for apt-utils
+ for i in "${argArray1[@]}"
+ printf ' %b Checking for %s...' '[i]' dialog
[i] Checking for dialog...+ dpkg-query -W '-f=${Status}' dialog
+ grep 'ok installed'
+ printf '%b %b Checking for %s\n' '\r\033[K' '[\e[1;32m✓\e[0m]' dialog
[✓] Checking for dialog
+ for i in "${argArray1[@]}"
+ printf ' %b Checking for %s...' '[i]' debconf
[i] Checking for debconf...+ dpkg-query -W '-f=${Status}' debconf
+ grep 'ok installed'
+ printf '%b %b Checking for %s\n' '\r\033[K' '[\e[1;32m✓\e[0m]' debconf
[✓] Checking for debconf
+ for i in "${argArray1[@]}"
+ 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\033[K' '[\e[1;32m✓\e[0m]' dhcpcd5
[✓] Checking for dhcpcd5
+ for i in "${argArray1[@]}"
+ printf ' %b Checking for %s...' '[i]' git
[i] Checking for git...+ dpkg-query -W '-f=${Status}' git
+ grep 'ok installed'
+ printf '%b %b Checking for %s\n' '\r\033[K' '[\e[1;32m✓\e[0m]' git
[✓] Checking for git
+ for i in "${argArray1[@]}"
+ printf ' %b Checking for %s...' '[i]' iproute2
[i] Checking for iproute2...+ dpkg-query -W '-f=${Status}' iproute2
+ grep 'ok installed'
+ printf '%b %b Checking for %s\n' '\r\033[K' '[\e[1;32m✓\e[0m]' iproute2
[✓] Checking for iproute2
+ for i in "${argArray1[@]}"
+ printf ' %b Checking for %s...' '[i]' whiptail
[i] Checking for whiptail...+ dpkg-query -W '-f=${Status}' whiptail
+ grep 'ok installed'
+ printf '%b %b Checking for %s\n' '\r\033[K' '[\e[1;32m✓\e[0m]' whiptail
[✓] Checking for whiptail
+ [[ 0 -gt 0 ]]
+ printf '\n'
+ return 0
+ checkSelinux
+ is_command getenforce
+ local check_command=getenforce
+ command -v getenforce
+ [[ false == false ]]
+ welcomeDialogs
+ whiptail --msgbox --backtitle Welcome --title 'Pi-hole automated installer' '\n\nThis installer will transform your device into a network-wide ad blocker!' 20 70
+ whiptail --msgbox --backtitle Plea --title 'Free and open source' '\n\nThe Pi-hole is free, but powered by your donations: http://pi-hole.net/donate' 20 70
+ whiptail --msgbox --backtitle 'Initiating network interface' --title 'Static IP Needed' '\n\nThe Pi-hole is a SERVER so it needs a STATIC IP ADDRESS to function properly.
In the next section, you can choose to use your current network settings (DHCP) or to manually edit them.' 20 70
+ mkdir -p /etc/pihole/
+ get_available_interfaces
++ ip --oneline link show up
++ grep -v lo
++ awk '{print $2}'
++ cut -d@ -f1
++ cut -d: -f1
+ availableInterfaces='eth0
wlan0'
+ chooseInterface
+ interfacesArray=()
+ local interfacesArray
+ local interfaceCount
+ local chooseInterfaceCmd
+ local chooseInterfaceOptions
+ local firstLoop=1
++ wc -l
+ interfaceCount=2
+ [[ 2 -eq 1 ]]
+ read -r line
+ mode=OFF
+ [[ 1 -eq 1 ]]
+ firstLoop=0
+ mode=ON
+ interfacesArray+=("${line}" "available" "${mode}")
+ read -r line
+ mode=OFF
+ [[ 0 -eq 1 ]]
+ interfacesArray+=("${line}" "available" "${mode}")
+ read -r line
+ chooseInterfaceCmd=(whiptail --separate-output --radiolist "Choose An Interface (press space to select)" ${r} ${c} ${interfaceCount})
++ whiptail --separate-output --radiolist 'Choose An Interface (press space to select)' 20 70 2 eth0 available ON wlan0 available OFF
+ chooseInterfaceOptions=eth0
+ for desiredInterface in ${chooseInterfaceOptions}
+ PIHOLE_INTERFACE=eth0
+ printf ' %b Using interface: %s\n' '[i]' eth0
[i] Using interface: eth0
+ setDNS
+ local DNSSettingsCorrect
+ DNSChooseOptions=(Google "" OpenDNS "" Level3 "" Comodo "" DNSWatch "" Quad9 "" FamilyShield "" Cloudflare "" Custom "")
++ whiptail --separate-output --menu 'Select Upstream DNS Provider. To use your own, select Custom.' 20 70 7 Google '' OpenDNS '' Level3 '' Comodo '' DNSWatch '' Quad9 '' FamilyShield '' Cloudflare '' Custom ''
+ DNSchoices=Cloudflare
+ printf ' %b Using ' '[i]'
[i] Using + case ${DNSchoices} in
+ printf 'Cloudflare servers\n'
Cloudflare servers
+ PIHOLE_DNS_1=1.1.1.1
+ PIHOLE_DNS_2=1.0.0.1
+ chooseBlocklists
+ [[ -f /etc/pihole/adlists.list ]]
+ mv /etc/pihole/adlists.list /etc/pihole/adlists.list.old
+ cmd=(whiptail --separate-output --checklist "Pi-hole relies on third party lists in order to block ads.\\n\\nYou can use the suggestions below, and/or add your own after installation\\n\\nTo deselect any list, use the arrow keys and spacebar" "${r}" "${c}" 7)
+ options=(StevenBlack "StevenBlack's Unified Hosts List" on MalwareDom "MalwareDomains" on Cameleon "Cameleon" on ZeusTracker "ZeusTracker" on DisconTrack "Disconnect.me Tracking" on DisconAd "Disconnect.me Ads" on HostsFile "Hosts-file.net Ads" on)
++ whiptail --separate-output --checklist 'Pi-hole relies on third party lists in order to block ads.\n\nYou can use the suggestions below, and/or add your own after installation\n\nTo deselect any list, use the arrow keys and spacebar' 20 70 7 StevenBlack 'StevenBlack'\''s Unified Hosts List' on MalwareDom MalwareDomains on Cameleon Cameleon on ZeusTracker ZeusTracker on DisconTrack 'Disconnect.me Tracking' on DisconAd 'Disconnect.me Ads' on HostsFile 'Hosts-file.net Ads' on
+ choices='StevenBlack
MalwareDom
Cameleon
ZeusTracker
DisconTrack
DisconAd
HostsFile'
+ for choice in ${choices}
+ appendToListsFile StevenBlack
+ case $1 in
+ echo https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts
+ for choice in ${choices}
+ appendToListsFile MalwareDom
+ case $1 in
+ echo https://mirror1.malwaredomains.com/files/justdomains
+ for choice in ${choices}
+ appendToListsFile Cameleon
+ case $1 in
+ echo http://sysctl.org/cameleon/hosts
+ for choice in ${choices}
+ appendToListsFile ZeusTracker
+ case $1 in
+ echo 'https://zeustracker.abuse.ch/blocklist.php?download=domainblocklist'
+ for choice in ${choices}
+ appendToListsFile DisconTrack
+ case $1 in
+ echo https://s3.amazonaws.com/lists.disconnect.me/simple_tracking.txt
+ for choice in ${choices}
+ appendToListsFile DisconAd
+ case $1 in
+ echo https://s3.amazonaws.com/lists.disconnect.me/simple_ad.txt
+ for choice in ${choices}
+ appendToListsFile HostsFile
+ case $1 in
+ echo https://hosts-file.net/ad_servers.txt
+ use4andor6
+ local useIPv4
+ local useIPv6
+ cmd=(whiptail --separate-output --checklist "Select Protocols (press space to select)" ${r} ${c} 2)
+ options=(IPv4 "Block ads over IPv4" on IPv6 "Block ads over IPv6" on)
++ whiptail --separate-output --checklist 'Select Protocols (press space to select)' 20 70 2 IPv4 'Block ads over IPv4' on IPv6 'Block ads over IPv6' on
+ choices='IPv4
IPv6'
+ for choice in ${choices}
+ case ${choice} in
+ useIPv4=true
+ for choice in ${choices}
+ case ${choice} in
+ useIPv6=true
+ [[ -n true ]]
+ find_IPv4_information
+ local route
+ local IPv4bare
++ ip route get 8.8.8.8
+ route='8.8.8.8 via 192.168.103.6 dev eth0 src 192.168.103.1
cache '
++ printf 192.168.103.1 cache
+ printf -v IPv4bare 192.168.103.1
++ printf 192.168.103.6 dev eth0 src 192.168.103.1 cache
+ printf -v IPv4gw 192.168.103.6
+ valid_ip 192.168.103.1
+ local ip=192.168.103.1
+ local stat=1
+ [[ 192.168.103.1 =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]
+ OIFS='
'
+ IFS=.
+ ip=(${ip})
+ IFS='
'
+ [[ 192 -le 255 ]]
+ [[ 168 -le 255 ]]
+ [[ 103 -le 255 ]]
+ [[ 1 -le 255 ]]
+ stat=0
+ return 0
++ ip -oneline -family inet address show
++ grep 192.168.103.1
++ awk '{print $4}'
++ awk 'END {print}'
+ IPV4_ADDRESS=192.168.103.1/24
+ getStaticIPv4Settings
+ local ipSettingsCorrect
+ whiptail --backtitle 'Calibrating network interface' --title 'Static IP Address' --yesno 'Do you want to use your current network settings as a static address?
IP address: 192.168.103.1/24
Gateway: 192.168.103.6' 20 70
+ [[ '' = True ]]
++ whiptail --backtitle 'Calibrating network interface' --title 'IPv4 address' --inputbox 'Enter your desired IPv4 address' 20 70 192.168.103.1/24
+ IPV4_ADDRESS=192.168.103.1/29
+ printf ' %b Your static IPv4 address: %s\n' '[i]' 192.168.103.1/29
[i] Your static IPv4 address: 192.168.103.1/29
++ whiptail --backtitle 'Calibrating network interface' --title 'IPv4 gateway (router)' --inputbox 'Enter your desired IPv4 default gateway' 20 70 192.168.103.6
+ IPv4gw=192.168.103.6
+ printf ' %b Your static IPv4 gateway: %s\n' '[i]' 192.168.103.6
[i] Your static IPv4 gateway: 192.168.103.6
+ whiptail --backtitle 'Calibrating network interface' --title 'Static IP Address' --yesno 'Are these settings correct?
IP address: 192.168.103.1/29
Gateway: 192.168.103.6' 20 70
+ ipSettingsCorrect=True
+ [[ True = True ]]
+ setStaticIPv4
+ local IFCFG_FILE
+ local CONNECTION_NAME
+ [[ -f /etc/dhcpcd.conf ]]
+ setDHCPCD
+ grep -q 192.168.103.1/29 /etc/dhcpcd.conf
+ printf ' %b Static IP already configured\n' '[i]'
[i] Static IP already configured
+ return 0
+ [[ -n true ]]
+ useIPv6dialog
+ IPV6_ADDRESSES=($(ip -6 address | grep 'scope global' | awk '{print $2}'))
++ ip -6 address
++ grep 'scope global'
++ awk '{print $2}'
+ [[ ! -z '' ]]
+ [[ ! -z '' ]]
+ printf ' %b Unable to find IPv6 ULA/GUA address, IPv6 adblocking will not be enabled\n' '[i]'
[i] Unable to find IPv6 ULA/GUA address, IPv6 adblocking will not be enabled
+ IPV6_ADDRESS=
+ [[ ! -z '' ]]
+ printf ' %b IPv4 address: %s\n' '[i]' 192.168.103.1/29
[i] IPv4 address: 192.168.103.1/29
+ printf ' %b IPv6 address: %s\n' '[i]' ''
[i] IPv6 address:
+ [[ ! -n true ]]
+ setAdminFlag
+ local WebToggleCommand
+ local WebChooseOptions
+ local WebChoices
+ WebToggleCommand=(whiptail --separate-output --radiolist "Do you wish to install the web admin interface?" ${r} ${c} 6)
+ WebChooseOptions=("On (Recommended)" "" on Off "" off)
++ whiptail --separate-output --radiolist 'Do you wish to install the web admin interface?' 20 70 6 'On (Recommended)' '' on Off '' off
+ WebChoices='On (Recommended)'
+ case ${WebChoices} in
+ printf ' %b Web Interface On\n' '[i]'
[i] Web Interface On
+ INSTALL_WEB_INTERFACE=true
+ [[ true == true ]]
+ WebToggleCommand=(whiptail --separate-output --radiolist "Do you wish to install the web server (lighttpd)?\\n\\nNB: If you disable this, and, do not have an existing webserver installed, the web interface will not function." "${r}" "${c}" 6)
+ WebChooseOptions=("On (Recommended)" "" on Off "" off)
++ whiptail --separate-output --radiolist 'Do you wish to install the web server (lighttpd)?\n\nNB: If you disable this, and, do not have an existing webserver installed, the web interface will not function.' 20 70 6 'On (Recommended)' '' on Off '' off
+ WebChoices='On (Recommended)'
+ case ${WebChoices} in
+ printf ' %b Web Server On\n' '[i]'
[i] Web Server On
+ INSTALL_WEB_SERVER=true
+ setLogging
+ local LogToggleCommand
+ local LogChooseOptions
+ local LogChoices
+ LogToggleCommand=(whiptail --separate-output --radiolist "Do you want to log queries?" "${r}" "${c}" 6)
+ LogChooseOptions=("On (Recommended)" "" on Off "" off)
++ whiptail --separate-output --radiolist 'Do you want to log queries?' 20 70 6 'On (Recommended)' '' on Off '' off
+ LogChoices='On (Recommended)'
+ case ${LogChoices} in
+ printf ' %b Logging On.\n' '[i]'
[i] Logging On.
+ QUERY_LOGGING=true
+ setPrivacyLevel
+ local LevelCommand
+ local LevelOptions
+ LevelCommand=(whiptail --separate-output --radiolist "Select a privacy mode for FTL." "${r}" "${c}" 6)
+ LevelOptions=("0" "Show everything" on "1" "Hide domains" off "2" "Hide domains and clients" off "3" "Anonymous mode" off "4" "Disabled statistics" off)
++ whiptail --separate-output --radiolist 'Select a privacy mode for FTL.' 20 70 6 0 'Show everything' on 1 'Hide domains' off 2 'Hide domains and clients' off 3 'Anonymous mode' off 4 'Disabled statistics' off
+ PRIVACY_LEVEL=0
+ printf ' %b Privacy level %d' '[i]' 0
[i] Privacy level 0+ clone_or_update_repos
+ [[ false == true ]]
+ getGitFiles /etc/.pihole https://github.com/pi-hole/pi-hole.git
+ local directory=/etc/.pihole
+ local remoteRepo=https://github.com/pi-hole/pi-hole.git
+ local 'str=Check for existing repository in /etc/.pihole'
+ printf ' %b %s...' '[i]' 'Check for existing repository in /etc/.pihole'
[i] Check for existing repository in /etc/.pihole...+ is_repo /etc/.pihole
+ local directory=/etc/.pihole
+ local curdir
+ local rc
+ curdir=/home/pi
+ [[ -d /etc/.pihole ]]
+ cd /etc/.pihole
+ git status --short
+ cd /home/pi
+ return 0
+ printf '%b %b %s\n' '\r\033[K' '[\e[1;32m✓\e[0m]' 'Check for existing repository in /etc/.pihole'
[✓] Check for existing repository in /etc/.pihole
+ update_repo /etc/.pihole
+ local directory=/etc/.pihole
+ local curdir
+ local 'str=Update repo in /etc/.pihole'
+ curdir=/home/pi
+ cd /etc/.pihole
+ printf ' %b %s...' '[i]' 'Update repo in /etc/.pihole'
[i] Update repo in /etc/.pihole...+ git stash --all --quiet
+ git clean --quiet --force -d
+ git pull --quiet
+ printf '%b %b %s\n' '\r\033[K' '[\e[1;32m✓\e[0m]' 'Update repo in /etc/.pihole'
[✓] Update repo in /etc/.pihole
+ cd /home/pi
+ return 0
+ echo ''
+ return 0
+ [[ true == true ]]
+ getGitFiles /var/www/html/admin https://github.com/pi-hole/AdminLTE.git
+ local directory=/var/www/html/admin
+ local remoteRepo=https://github.com/pi-hole/AdminLTE.git
+ local 'str=Check for existing repository in /var/www/html/admin'
+ printf ' %b %s...' '[i]' 'Check for existing repository in /var/www/html/admin'
[i] Check for existing repository in /var/www/html/admin...+ is_repo /var/www/html/admin
+ local directory=/var/www/html/admin
+ local curdir
+ local rc
+ curdir=/home/pi
+ [[ -d /var/www/html/admin ]]
+ cd /var/www/html/admin
+ git status --short
+ cd /home/pi
+ return 0
+ printf '%b %b %s\n' '\r\033[K' '[\e[1;32m✓\e[0m]' 'Check for existing repository in /var/www/html/admin'
[✓] Check for existing repository in /var/www/html/admin
+ update_repo /var/www/html/admin
+ local directory=/var/www/html/admin
+ local curdir
+ local 'str=Update repo in /var/www/html/admin'
+ curdir=/home/pi
+ cd /var/www/html/admin
+ printf ' %b %s...' '[i]' 'Update repo in /var/www/html/admin'
[i] Update repo in /var/www/html/admin...+ git stash --all --quiet
+ git clean --quiet --force -d
+ git pull --quiet
+ printf '%b %b %s\n' '\r\033[K' '[\e[1;32m✓\e[0m]' 'Update repo in /var/www/html/admin'
[✓] Update repo in /var/www/html/admin
+ cd /home/pi
+ return 0
+ echo ''
+ return 0
+ dep_install_list=("${PIHOLE_DEPS[@]}")
+ local dep_install_list
+ [[ true == true ]]
+ dep_install_list+=("${PIHOLE_WEB_DEPS[@]}")
+ install_dependent_packages 'dep_install_list[@]'
+ counter=2
+ [[ 2 == 1 ]]
+ printf ' %b Main Dependency checks...\n' '[i]'
[i] Main Dependency checks...
+ argArray1=("${!1}")
+ declare -a argArray1
+ declare -a installArray
+ is_command debconf-apt-progress
+ local check_command=debconf-apt-progress
+ command -v debconf-apt-progress
+ for i in "${argArray1[@]}"
+ printf ' %b Checking for %s...' '[i]' cron
[i] Checking for cron...+ dpkg-query -W '-f=${Status}' cron
+ grep 'ok installed'
+ printf '%b %b Checking for %s\n' '\r\033[K' '[\e[1;32m✓\e[0m]' cron
[✓] Checking for cron
+ for i in "${argArray1[@]}"
+ printf ' %b Checking for %s...' '[i]' curl
[i] Checking for curl...+ dpkg-query -W '-f=${Status}' curl
+ grep 'ok installed'
+ printf '%b %b Checking for %s\n' '\r\033[K' '[\e[1;32m✓\e[0m]' curl
[✓] Checking for curl
+ for i in "${argArray1[@]}"
+ printf ' %b Checking for %s...' '[i]' dnsutils
[i] Checking for dnsutils...+ dpkg-query -W '-f=${Status}' dnsutils
+ grep 'ok installed'
+ echo -e '\r\033[K [i] Checking for dnsutils (will be installed)'
[i] Checking for dnsutils (will be installed)
+ installArray+=("${i}")
+ for i in "${argArray1[@]}"
+ printf ' %b Checking for %s...' '[i]' iputils-ping
[i] Checking for iputils-ping...+ grep 'ok installed'
+ dpkg-query -W '-f=${Status}' iputils-ping
+ printf '%b %b Checking for %s\n' '\r\033[K' '[\e[1;32m✓\e[0m]' iputils-ping
[✓] Checking for iputils-ping
+ for i in "${argArray1[@]}"
+ printf ' %b Checking for %s...' '[i]' lsof
[i] Checking for lsof...+ grep 'ok installed'
+ dpkg-query -W '-f=${Status}' lsof
+ echo -e '\r\033[K [i] Checking for lsof (will be installed)'
[i] Checking for lsof (will be installed)
+ installArray+=("${i}")
+ for i in "${argArray1[@]}"
+ printf ' %b Checking for %s...' '[i]' netcat
[i] Checking for netcat...+ dpkg-query -W '-f=${Status}' netcat
+ grep 'ok installed'
+ echo -e '\r\033[K [i] Checking for netcat (will be installed)'
[i] Checking for netcat (will be installed)
+ installArray+=("${i}")
+ for i in "${argArray1[@]}"
+ printf ' %b Checking for %s...' '[i]' psmisc
[i] Checking for psmisc...+ grep 'ok installed'
+ dpkg-query -W '-f=${Status}' psmisc
+ printf '%b %b Checking for %s\n' '\r\033[K' '[\e[1;32m✓\e[0m]' psmisc
[✓] Checking for psmisc
+ for i in "${argArray1[@]}"
+ printf ' %b Checking for %s...' '[i]' sudo
[i] Checking for sudo...+ dpkg-query -W '-f=${Status}' sudo
+ grep 'ok installed'
+ printf '%b %b Checking for %s\n' '\r\033[K' '[\e[1;32m✓\e[0m]' sudo
[✓] Checking for sudo
+ for i in "${argArray1[@]}"
+ printf ' %b Checking for %s...' '[i]' unzip
[i] Checking for unzip...+ dpkg-query -W '-f=${Status}' unzip
+ grep 'ok installed'
+ printf '%b %b Checking for %s\n' '\r\033[K' '[\e[1;32m✓\e[0m]' unzip
[✓] Checking for unzip
+ for i in "${argArray1[@]}"
+ printf ' %b Checking for %s...' '[i]' wget
[i] Checking for wget...+ dpkg-query -W '-f=${Status}' wget
+ grep 'ok installed'
+ printf '%b %b Checking for %s\n' '\r\033[K' '[\e[1;32m✓\e[0m]' wget
[✓] Checking for wget
+ for i in "${argArray1[@]}"
+ printf ' %b Checking for %s...' '[i]' idn2
[i] Checking for idn2...+ dpkg-query -W '-f=${Status}' idn2
+ grep 'ok installed'
+ echo -e '\r\033[K [i] Checking for idn2 (will be installed)'
[i] Checking for idn2 (will be installed)
+ installArray+=("${i}")
+ for i in "${argArray1[@]}"
+ printf ' %b Checking for %s...' '[i]' sqlite3
[i] Checking for sqlite3...+ dpkg-query -W '-f=${Status}' sqlite3
+ grep 'ok installed'
+ echo -e '\r\033[K [i] Checking for sqlite3 (will be installed)'
[i] Checking for sqlite3 (will be installed)
+ installArray+=("${i}")
+ for i in "${argArray1[@]}"
+ printf ' %b Checking for %s...' '[i]' libcap2-bin
[i] Checking for libcap2-bin...+ dpkg-query -W '-f=${Status}' libcap2-bin
+ grep 'ok installed'
+ printf '%b %b Checking for %s\n' '\r\033[K' '[\e[1;32m✓\e[0m]' libcap2-bin
[✓] Checking for libcap2-bin
+ for i in "${argArray1[@]}"
+ printf ' %b Checking for %s...' '[i]' dns-root-data
[i] Checking for dns-root-data...+ dpkg-query -W '-f=${Status}' dns-root-data
+ grep 'ok installed'
+ echo -e '\r\033[K [i] Checking for dns-root-data (will be installed)'
[i] Checking for dns-root-data (will be installed)
+ installArray+=("${i}")
+ for i in "${argArray1[@]}"
+ printf ' %b Checking for %s...' '[i]' resolvconf
[i] Checking for resolvconf...+ dpkg-query -W '-f=${Status}' resolvconf
+ grep 'ok installed'
+ echo -e '\r\033[K [i] Checking for resolvconf (will be installed)'
[i] Checking for resolvconf (will be installed)
+ installArray+=("${i}")
+ for i in "${argArray1[@]}"
+ printf ' %b Checking for %s...' '[i]' libcap2
[i] Checking for libcap2...+ dpkg-query -W '-f=${Status}' libcap2
+ grep 'ok installed'
+ printf '%b %b Checking for %s\n' '\r\033[K' '[\e[1;32m✓\e[0m]' libcap2
[✓] Checking for libcap2
+ for i in "${argArray1[@]}"
+ printf ' %b Checking for %s...' '[i]' lighttpd
[i] Checking for lighttpd...+ dpkg-query -W '-f=${Status}' lighttpd
+ grep 'ok installed'
+ echo -e '\r\033[K [i] Checking for lighttpd (will be installed)'
[i] Checking for lighttpd (will be installed)
+ installArray+=("${i}")
+ for i in "${argArray1[@]}"
+ printf ' %b Checking for %s...' '[i]' php5-common
[i] Checking for php5-common...+ dpkg-query -W '-f=${Status}' php5-common
+ grep 'ok installed'
+ echo -e '\r\033[K [i] Checking for php5-common (will be installed)'
[i] Checking for php5-common (will be installed)
+ installArray+=("${i}")
+ for i in "${argArray1[@]}"
+ printf ' %b Checking for %s...' '[i]' php5-cgi
[i] Checking for php5-cgi...+ dpkg-query -W '-f=${Status}' php5-cgi
+ grep 'ok installed'
+ echo -e '\r\033[K [i] Checking for php5-cgi (will be installed)'
[i] Checking for php5-cgi (will be installed)
+ installArray+=("${i}")
+ for i in "${argArray1[@]}"
+ printf ' %b Checking for %s...' '[i]' php5-sqlite
[i] Checking for php5-sqlite...+ dpkg-query -W '-f=${Status}' php5-sqlite
+ grep 'ok installed'
+ echo -e '\r\033[K [i] Checking for php5-sqlite (will be installed)'
[i] Checking for php5-sqlite (will be installed)
+ installArray+=("${i}")
+ [[ 11 -gt 0 ]]
+ test_dpkg_lock
+ i=0
+ fuser /var/lib/dpkg/lock
+ return 0
+ debconf-apt-progress -- apt-get --yes --no-install-recommends install dnsutils lsof netcat idn2 sqlite3 dns-root-data resolvconf lighttpd php5-common php5-cgi php5-sqlite
pi@raspberrypi:~ $