--- /dev/null
+
+apt_get_edited() {
+ export DEBIAN_FRONTEND=noninteractive
+ _TO_IGNORE=\
+'(Reading database ...
+Preparing to unpack
+Unpacking '
+ _PREFIXES=\
+'9 5 Get:
+5 3 Get:
+8 7 Installing new version of config file
+6 4 Processing triggers for
+7 5 Purging configuration files for
+5 4 Removing obsolete conffile
+4 2 Removing
+5 5 Selecting previously unselected package
+5 3 Setting up
+11 8 dpkg: warning: unable to delete old directory'
+
+ _LAST_PREFIX=''
+ apt-get -y $1 2>&1 | while read _LINE; do
+ _DO_CONTINUE=
+ for _PLACEHOLDED in $(echo "${_TO_IGNORE}" | sed 's/ */#WHITESPACE_PLACEHOLDER#/g'); do
+ _WHITESPACED=$(echo "${_PLACEHOLDED}" | sed 's/#WHITESPACE_PLACEHOLDER#/ /g')
+ _LEN=$(echo -n "${_WHITESPACED}" | wc -c)
+ _TO_CMP=$(echo "${_LINE}" | cut -c "-${_LEN}")
+ if [ "${_TO_CMP}" = "${_WHITESPACED}" ]; then
+ _DO_CONTINUE=1
+ break
+ fi
+ done
+ if [ 1 = "${_DO_CONTINUE}" ]; then
+ continue
+ fi
+ _ITEM=''
+ for _PLACEHOLDED in $(echo "${_PREFIXES}" | sed 's/ */#WHITESPACE_PLACEHOLDER#/g'); do
+ _WHITESPACED=$(echo "${_PLACEHOLDED}" | sed 's/#WHITESPACE_PLACEHOLDER#/ /g')
+ _N_WORDS=$(echo "${_WHITESPACED}" | cut -d' ' -f1)
+ _TO_CMP=$(echo "${_LINE}" | wc -w)
+ if [ ! "${_N_WORDS}" -eq "${_TO_CMP}" ]; then
+ continue
+ fi
+ _PREFIX=$(echo "${_WHITESPACED}" | cut -d' ' -f3-)
+ _LEN=$(echo -n "${_PREFIX}" | wc -c)
+ _TO_CMP=$(echo "${_LINE}" | cut -c "-${_LEN}")
+ if [ "${_TO_CMP}" != "${_PREFIX}" ]; then
+ continue
+ elif [ "${_LAST_PREFIX}" != "${_PREFIX}" ]; then
+ if [ ! -z "${_LAST_PREFIX}" ]; then
+ echo ''
+ fi
+ echo -n "\r· ${_PREFIX}"
+ fi
+ _IDX_ITEM=$(echo "${_WHITESPACED}" | cut -d' ' -f2)
+ _ITEM=$(echo "${_LINE}" | cut -d' ' "-f${_IDX_ITEM}")
+ echo -n " ${_ITEM}"
+ _LAST_PREFIX="${_PREFIX}"
+ break
+ done
+ if [ -z "${_ITEM}" ]; then
+ if [ ! -z "${_LAST_PREFIX}" ]; then
+ echo ''
+ fi
+ echo "\r# ${_LINE}"
+ _LAST_PREFIX=''
+ fi
+ done
+ echo ''
+}
+
# before purging, ensure tagged packages installed
ensure_packages_of_tags ${_INSTALL_TAGS}
echo "Autoremove and purge …"
- apt-get -y autopurge > /dev/null
+ apt_get_edited autopurge
echo "And now: dist-upgrade …"
- apt-get -y dist-upgrade > /dev/null
+ apt_get_edited dist-upgrade
echo "Setting up user: ${USERNAME}"
adduser --quiet --disabled-password --gecos "" "${USERNAME}"
expect_n_args 1 1 '(server)' $@
SERVER="$1"
-echo "In ${PATH_KNOWN_HOSTS}, removing previous entry for ${SERVER} if found …"
+echo "· In ${PATH_KNOWN_HOSTS}, removing previous entry for ${SERVER} if found …"
ssh-keygen -f "${PATH_KNOWN_HOSTS}" -R "${SERVER}" > /dev/null
-echo 'Scanning server for new key to add to file …'
+echo '· Scanning server for new key to add to file …'
PATH_LOG_KEYSCAN_STDERR=$(path_tmp_timestamped)
CMD_RM_LOG="rm ${PATH_LOG_KEYSCAN_STDERR}"
set +e
set -e
trapp "${CMD_RM_LOG}"
if [ "${RESULT}" != "0" ]; then
- echo "ERROR: For some reason ssh-keyscan returned non-zero exit code, here's it's stderr log:"
+ echo "· ERROR: For some reason ssh-keyscan returned non-zero exit code, here's the stderr log:"
cat "${PATH_LOG_KEYSCAN_STDERR}"
exit "${RESULT}"
fi
trapp
CMD_SSH="ssh root@${SERVER}"
+CMD_STTY_ECHO='stty echo'
-echo 'On server, asking for new root password …'
+echo '· On server, asking for new root password …'
stty echonl
stty -echo
+trapp "${CMD_STTY_ECHO}"
${CMD_SSH} 'passwd'
-stty echo
+${CMD_STTY_ECHO}
+trapp
-echo 'On server, updating package database …'
-${CMD_SSH} 'apt-get update > /dev/null'
+echo '· On server, updating package database …'
+${CMD_SSH} 'apt-get -q -q update'
-echo 'On server, installing git …'
+echo '· On server, installing git …'
${CMD_SSH} 'DEBIAN_FRONTEND=noninteractive apt-get -y install git > /dev/null'
-echo 'On server, pulling config repo …'
+echo '· On server, pulling config repo …'
${CMD_SSH} "git clone -q ${URL_REPO_CLONE}"
-echo "Server ready, log in with: ssh root@${SERVER}"
+echo "· Server ready, log in with: ssh root@${SERVER}"
--- /dev/null
+../../../trixie/scripts/lib/apt_get_edited
\ No newline at end of file
#!/bin/sh
set -e
cd $(dirname "$0")
+. lib/apt_get_edited
. lib/constants_etc # PATH_ETC
PATH_ETC_APT="${PATH_ETC}/apt"
PATH_ETC_APT_CONF=${PATH_ETC_APT}/apt.conf.d
PATH_COPY_TAG='../copy/all'
-export DEBIAN_FRONTEND=noninteractive
+
+# to reduce clutter …
+apt-get -y autoremove apt-listchanges > /dev/null
apt_update_to_full_upgrade() {
- echo '\nUpdating package database …\n'
- apt-get update > /dev/null
- echo '\nSoft-upgrading …\n'
- apt-get -y -o Dpkg::Options::='--force-confnew' upgrade
- echo '\nFull-upgrading …\n'
- apt-get -y -o Dpkg::Options::='--force-confnew' full-upgrade
- echo ''
+ echo '· Updating package database …'
+ apt_get_edited update
+
+ echo '\n· Soft-upgrading …'
+ apt_get_edited '-q -o Dpkg::Options::=--force-confnew upgrade'
+
+ echo '\n· Full-upgrading …'
+ apt_get_edited '-q -o Dpkg::Options::=--force-confnew full-upgrade'
}
PATH_CONF_MIN_DEPS="${PATH_COPY_TAG}${PATH_ETC_APT_CONF}/99_minimize_dependencies"
-echo "Copying over ${PATH_CONF_MIN_DEPS} …"
+echo "\n· Copying over ${PATH_CONF_MIN_DEPS} …"
cp "${PATH_CONF_MIN_DEPS}" "${PATH_ETC_APT_CONF}/"
apt_update_to_full_upgrade
PATH_CONF_SOURCES="${PATH_COPY_TAG}${PATH_ETC_APT}/sources.list"
-echo "Copying over ${PATH_CONF_SOURCES} …"
+echo "\n· Copying over ${PATH_CONF_SOURCES} …"
cp "${PATH_CONF_SOURCES}" "${PATH_ETC_APT}/"
apt_update_to_full_upgrade
-echo '\nPurging …\n'
-apt-get -q -q -y autopurge
+echo '\n· Purging …'
+apt_get_edited '-q autopurge'