added a diagnostic for when the recustomize script cannot run (when perl doesn't have File::Diff or File::Which yet).
14 files changed:
| https://feistymeow.org/feisty_meow/documentation/cygwin_install_list.txt (web)
Retrieve a clone of the feisty meow code:
| https://feistymeow.org/feisty_meow/documentation/cygwin_install_list.txt (web)
Retrieve a clone of the feisty meow code:
-=> git clone git://feistymeow.org/feisty_meow
+# git clone git://feistymeow.org/feisty_meow
The remainder of these notes assume that the code is stored in
~/feisty_meow (aka $HOME/feisty_meow).
The remainder of these notes assume that the code is stored in
~/feisty_meow (aka $HOME/feisty_meow).
Set up the feisty_meow scripts; this is only needed once, when you first get
the codebase. It can also regenerate the scripts using the latest version.
Set up the feisty_meow scripts; this is only needed once, when you first get
the codebase. It can also regenerate the scripts using the latest version.
-=> bash ~/feisty_meow/scripts/core/reconfigure_feisty_meow.sh
+# bash ~/feisty_meow/scripts/core/reconfigure_feisty_meow.sh
Load the script environment into the current shell.
Load the script environment into the current shell.
-=> source ~/feisty_meow/scripts/core/launch_feisty_meow.sh
+# source ~/feisty_meow/scripts/core/launch_feisty_meow.sh
With the feisty meow script environment loaded, several aliases are now
available for building the codebase and they are used in the sections below.
With the feisty meow script environment loaded, several aliases are now
available for building the codebase and they are used in the sections below.
installed with either apt-get or CPAN.
Install using apt-get:
installed with either apt-get or CPAN.
Install using apt-get:
-=> sudo apt-get install libfile-which-perl libtext-diff-perl
+# sudo apt-get install libfile-which-perl libtext-diff-perl
or Install using perl's CPAN:
or Install using perl's CPAN:
-=> sudo cpan install Text::Diff File::Which
+# sudo cpan install Text::Diff File::Which
==============
How to install the build dependencies for feisty meow
| Ubuntu / Debian:
==============
How to install the build dependencies for feisty meow
| Ubuntu / Debian:
-| => sudo apt-get install build-essential librtmp-dev libcurl4-gnutls-dev libssl-dev
+| # sudo apt-get install build-essential librtmp-dev libcurl4-gnutls-dev libssl-dev
| Centos / Redhat / Fedora:
| Centos / Redhat / Fedora:
-| => sudo yum install gcc gcc-c++ openssl-devel.x86_64 curl-devel
+| # sudo yum install gcc gcc-c++ openssl-devel.x86_64 curl-devel
| Microsoft Windows:
| Download and install the Cygwin environment first from cygwin.com, which is
| Microsoft Windows:
| Download and install the Cygwin environment first from cygwin.com, which is
How to build the feisty meow codebase
Run the following command to build the feisty meow libraries and applications.
How to build the feisty meow codebase
Run the following command to build the feisty meow libraries and applications.
-=> bash ~/feisty_meow/scripts/generator/produce_feisty_meow.sh
+# bash ~/feisty_meow/scripts/generator/produce_feisty_meow.sh
After the build is complete, the feisty meow applications can be found in
$FEISTY_MEOW_BINARIES (environment variable).
After the build is complete, the feisty meow applications can be found in
$FEISTY_MEOW_BINARIES (environment variable).
-=> ls $FEISTY_MEOW_BINARIES
+# ls $FEISTY_MEOW_BINARIES
==============
How to clean up the files generated by the build
This command cleans out all the generated files:
==============
How to clean up the files generated by the build
This command cleans out all the generated files:
-=> bash ~/feisty_meow/scripts/generator/whack_build.sh clean
+# bash ~/feisty_meow/scripts/generator/whack_build.sh clean
==============
What are the feisty meow dependencies?
==============
What are the feisty meow dependencies?
echo making a simple starting log file for container...
if [ ! -d "$GFFS_LOGS" ]; then
mkdir -p "$GFFS_LOGS"
echo making a simple starting log file for container...
if [ ! -d "$GFFS_LOGS" ]; then
mkdir -p "$GFFS_LOGS"
- check_result Making GFFS logs directory.
+ test_or_fail Making GFFS logs directory.
fi
echo building the code freshly, although not with a clean first...
build_gffs
fi
echo building the code freshly, although not with a clean first...
build_gffs
-check_result Building GFFS source code.
+test_or_fail Building GFFS source code.
echo starting container now and spooling its log file...
(bash $GFFS_TOOLKIT_ROOT/library/maybe_restart_container.sh &>$TMP/main_container_restarting.log & )
echo starting container now and spooling its log file...
(bash $GFFS_TOOLKIT_ROOT/library/maybe_restart_container.sh &>$TMP/main_container_restarting.log & )
# checks the result of the last command that was run, and if that failed,
# then this complains and exits from bash. the function parameters are
# used as the message to print as a complaint.
# checks the result of the last command that was run, and if that failed,
# then this complains and exits from bash. the function parameters are
# used as the message to print as a complaint.
- function check_result()
+ function test_or_fail()
- echo -e "failed on: $*"
+ echo -e "\n\nfailed on: $*"
+ # like test_or_fail, but will keep going after complaining.
+ function test_or_continue()
+ {
+ if [ $? -ne 0 ]; then
+ echo -e "\n\nfailed on: $*"
+ error_sound
+ fi
+ }
+
# wraps secure shell with some parameters we like, most importantly to enable X forwarding.
function ssh()
{
# wraps secure shell with some parameters we like, most importantly to enable X forwarding.
function ssh()
{
regenerate >/dev/null
pushd "$FEISTY_MEOW_LOADING_DOCK/custom" &>/dev/null
incongruous_files="$(bash "$FEISTY_MEOW_SCRIPTS/files/list_non_dupes.sh" "$FEISTY_MEOW_SCRIPTS/customize/$custom_user" "$FEISTY_MEOW_LOADING_DOCK/custom")"
regenerate >/dev/null
pushd "$FEISTY_MEOW_LOADING_DOCK/custom" &>/dev/null
incongruous_files="$(bash "$FEISTY_MEOW_SCRIPTS/files/list_non_dupes.sh" "$FEISTY_MEOW_SCRIPTS/customize/$custom_user" "$FEISTY_MEOW_LOADING_DOCK/custom")"
+
+ local fail_message="\nare the perl dependencies installed? if you're on ubuntu or debian, try this:\n
+ $(grep "apt.*perl" $FEISTY_MEOW_APEX/readme.txt)\n"
#echo "the incongruous files list is: $incongruous_files"
# disallow a single character result, since we get "*" as result when nothing exists yet.
if [ ${#incongruous_files} -ge 2 ]; then
echo "cleaning unknown older overrides..."
perl "$FEISTY_MEOW_SCRIPTS/files/safedel.pl" $incongruous_files
#echo "the incongruous files list is: $incongruous_files"
# disallow a single character result, since we get "*" as result when nothing exists yet.
if [ ${#incongruous_files} -ge 2 ]; then
echo "cleaning unknown older overrides..."
perl "$FEISTY_MEOW_SCRIPTS/files/safedel.pl" $incongruous_files
+ test_or_continue "running safedel. $fail_message"
echo
fi
popd &>/dev/null
echo "copying custom overrides for $custom_user"
mkdir -p "$FEISTY_MEOW_LOADING_DOCK/custom" 2>/dev/null
perl "$FEISTY_MEOW_SCRIPTS/text/cpdiff.pl" "$FEISTY_MEOW_SCRIPTS/customize/$custom_user" "$FEISTY_MEOW_LOADING_DOCK/custom"
echo
fi
popd &>/dev/null
echo "copying custom overrides for $custom_user"
mkdir -p "$FEISTY_MEOW_LOADING_DOCK/custom" 2>/dev/null
perl "$FEISTY_MEOW_SCRIPTS/text/cpdiff.pl" "$FEISTY_MEOW_SCRIPTS/customize/$custom_user" "$FEISTY_MEOW_LOADING_DOCK/custom"
+ test_or_continue "running cpdiff. $fail_message"
+
if [ -d "$FEISTY_MEOW_SCRIPTS/customize/$custom_user/scripts" ]; then
echo "copying custom scripts for $custom_user"
\cp -R "$FEISTY_MEOW_SCRIPTS/customize/$custom_user/scripts" "$FEISTY_MEOW_LOADING_DOCK/custom/"
if [ -d "$FEISTY_MEOW_SCRIPTS/customize/$custom_user/scripts" ]; then
echo "copying custom scripts for $custom_user"
\cp -R "$FEISTY_MEOW_SCRIPTS/customize/$custom_user/scripts" "$FEISTY_MEOW_LOADING_DOCK/custom/"
if [ -d "$src" ]; then
ln -s "$src" "$target"
if [ -d "$src" ]; then
ln -s "$src" "$target"
- check_result "Creating symlink from '$src' to '$target'"
+ test_or_fail "Creating symlink from '$src' to '$target'"
fi
echo "Created symlink from '$src' to '$target'."
}
fi
echo "Created symlink from '$src' to '$target'."
}
echo running tests on set_var_if_undefined.
flagrant=petunia
set_var_if_undefined flagrant forknordle
echo running tests on set_var_if_undefined.
flagrant=petunia
set_var_if_undefined flagrant forknordle
- check_result "testing if defined variable would be whacked"
+ test_or_fail "testing if defined variable would be whacked"
if [ $flagrant != petunia ]; then
echo set_var_if_undefined failed to leave the test variable alone
exit 1
if [ $flagrant != petunia ]; then
echo set_var_if_undefined failed to leave the test variable alone
exit 1
# copy up the archived bluray discs, and possibly future archived formats.
netcp /z/archons/* $BARKY/bkup_archons/
# copy up the archived bluray discs, and possibly future archived formats.
netcp /z/archons/* $BARKY/bkup_archons/
-check_result "synching archons"
+test_or_fail "synching archons"
# copy over our somewhat attenuated but still important walrus archives.
netcp /z/walrus/* $BARKY/walrus/
# copy over our somewhat attenuated but still important walrus archives.
netcp /z/walrus/* $BARKY/walrus/
-check_result "synching walrus"
+test_or_fail "synching walrus"
# copy all the music files for future reference.
netcp /z/musix/* $BARKY/musix/
# copy all the music files for future reference.
netcp /z/musix/* $BARKY/musix/
-check_result "synching musix"
+test_or_fail "synching musix"
# back up the photo archives.
netcp /z/imaginations/* $BARKY/imaginations/
# back up the photo archives.
netcp /z/imaginations/* $BARKY/imaginations/
-check_result "synching imaginations"
+test_or_fail "synching imaginations"
source "$FEISTY_MEOW_SCRIPTS/core/launch_feisty_meow.sh"
cp $HOME/.thunderbird/oqv30zg4.default/ImapMail/zooty.koeritz.com/msgFilterRules.dat $CLOUD_BASE/magic_cabinet/mail_filters/zooty_serene_hamstertronic_$(date_stringer).filters
source "$FEISTY_MEOW_SCRIPTS/core/launch_feisty_meow.sh"
cp $HOME/.thunderbird/oqv30zg4.default/ImapMail/zooty.koeritz.com/msgFilterRules.dat $CLOUD_BASE/magic_cabinet/mail_filters/zooty_serene_hamstertronic_$(date_stringer).filters
-check_result "copying feistymeow.org filters"
+test_or_fail "copying feistymeow.org filters"
cp $HOME/.thunderbird/oqv30zg4.default/ImapMail/mail.eservices.virginia.edu/msgFilterRules.dat $CLOUD_BASE/magic_cabinet/mail_filters/uva_email_$(date_stringer).filters
cp $HOME/.thunderbird/oqv30zg4.default/ImapMail/mail.eservices.virginia.edu/msgFilterRules.dat $CLOUD_BASE/magic_cabinet/mail_filters/uva_email_$(date_stringer).filters
-check_result "copying UVa filters"
+test_or_fail "copying UVa filters"
if [ ! -d "$SPOOLING_OUTPUT_DIR" ]; then
mkdir -p "$SPOOLING_OUTPUT_DIR"
if [ ! -d "$SPOOLING_OUTPUT_DIR" ]; then
mkdir -p "$SPOOLING_OUTPUT_DIR"
- check_result Creating spooling output directory.
+ test_or_fail Creating spooling output directory.
fi
# copies the files for a particular game out to a spooling folder.
fi
# copies the files for a particular game out to a spooling folder.
# simplistic approach here; just go to the folder and pull the changes.
pushd "$full_app_dir" &>/dev/null
# simplistic approach here; just go to the folder and pull the changes.
pushd "$full_app_dir" &>/dev/null
-check_result "Changing to app path '$full_app_dir'"
+test_or_fail "Changing to app path '$full_app_dir'"
dir="avenger5/vendor/siteavenger/avcore"
if [ ! -d $dir ]; then
dir="avenger5/vendor/siteavenger/avcore"
if [ ! -d $dir ]; then
pushd "$dir" &>/dev/null
git pull
pushd "$dir" &>/dev/null
git pull
- check_result "Pulling git repo for avcore under '$full_app_dir'"
+ test_or_fail "Pulling git repo for avcore under '$full_app_dir'"
echo "Finished updating the avcore portion of site in ${app_dirname}."
echo "Finished updating the avcore portion of site in ${app_dirname}."
# this should set the site_store_path variable if everything goes well.
update_repo "$full_app_dir" "$CHECKOUT_DIR_NAME" "$DEFAULT_REPOSITORY_ROOT" "$repo_name"
# this should set the site_store_path variable if everything goes well.
update_repo "$full_app_dir" "$CHECKOUT_DIR_NAME" "$DEFAULT_REPOSITORY_ROOT" "$repo_name"
-check_result "Updating the repository storage directory"
+test_or_fail "Updating the repository storage directory"
# update the site to load dependencies.
sep
composer_repuff "$site_store_path"
# update the site to load dependencies.
sep
composer_repuff "$site_store_path"
-check_result "Installing site dependencies with composer"
+test_or_fail "Installing site dependencies with composer"
# set up the symbolic links needed to achieve siteliness.
sep
# set up the symbolic links needed to achieve siteliness.
sep
if [ ! -d "$appdir" ]; then
echo "Creating the apps directory: $appdir"
mkdir "$appdir"
if [ ! -d "$appdir" ]; then
echo "Creating the apps directory: $appdir"
mkdir "$appdir"
- check_result "Making apps directory when not already present"
+ test_or_fail "Making apps directory when not already present"
exit 1
elif [ $numdirs -eq 1 ]; then
app_dirname="$(basename $(find "$appsdir" -mindepth 1 -maxdepth 1 -type d) )"
exit 1
elif [ $numdirs -eq 1 ]; then
app_dirname="$(basename $(find "$appsdir" -mindepth 1 -maxdepth 1 -type d) )"
- check_result "Guessing application folder"
+ test_or_fail "Guessing application folder"
else
# if more than one folder, force user to choose.
# Reference: https://askubuntu.com/questions/1705/how-can-i-create-a-select-menu-in-a-shell-script
else
# if more than one folder, force user to choose.
# Reference: https://askubuntu.com/questions/1705/how-can-i-create-a-select-menu-in-a-shell-script
PS3="$holdps3"
fi
test_app_folder "$appsdir" "$app_dirname"
PS3="$holdps3"
fi
test_app_folder "$appsdir" "$app_dirname"
- check_result "Testing application folder: $app_dirname"
+ test_or_fail "Testing application folder: $app_dirname"
echo "Application folder is: $app_dirname"
}
echo "Application folder is: $app_dirname"
}
if [ ! -d "$combo" ]; then
echo "Creating app directory: $combo"
mkdir "$combo"
if [ ! -d "$combo" ]; then
echo "Creating app directory: $combo"
mkdir "$combo"
- check_result "Making application directory when not already present"
+ test_or_fail "Making application directory when not already present"
if [ -f "$site_dir/bin/cake" ]; then
chmod -R a+rx "$site_dir/bin/cake"
if [ -f "$site_dir/bin/cake" ]; then
chmod -R a+rx "$site_dir/bin/cake"
- check_result "Enabling execute bit on cake binary"
+ test_or_fail "Enabling execute bit on cake binary"
fi
if [ -d "$site_dir/logs" ]; then
chmod -R g+w "$site_dir/logs"
fi
if [ -d "$site_dir/logs" ]; then
chmod -R g+w "$site_dir/logs"
- check_result "Enabling group write on site's Logs directory"
+ test_or_fail "Enabling group write on site's Logs directory"
fi
if [ -d "$site_dir/tmp" ]; then
chmod -R g+w "$site_dir/tmp"
fi
if [ -d "$site_dir/tmp" ]; then
chmod -R g+w "$site_dir/tmp"
- check_result "Enabling group write on site's tmp directory"
+ test_or_fail "Enabling group write on site's tmp directory"
if [ -f "$site_dir/bin/cake" ]; then
# flush any cached objects from db.
"$site_dir/bin/cake" orm_cache clear
if [ -f "$site_dir/bin/cake" ]; then
# flush any cached objects from db.
"$site_dir/bin/cake" orm_cache clear
- check_result "Clearing ORM cache"
+ test_or_fail "Clearing ORM cache"
unset site_store_path
pushd "$full_app_dir" &>/dev/null
unset site_store_path
pushd "$full_app_dir" &>/dev/null
- check_result "Switching to our app dir '$full_app_dir'"
+ test_or_fail "Switching to our app dir '$full_app_dir'"
local complete_path="$full_app_dir/$checkout_dirname"
local complete_path="$full_app_dir/$checkout_dirname"
if [ -d "$checkout_dirname" ]; then
# checkout directory exists, so let's check it.
pushd "$checkout_dirname" &>/dev/null
if [ -d "$checkout_dirname" ]; then
# checkout directory exists, so let's check it.
pushd "$checkout_dirname" &>/dev/null
- check_result "Switching to our checkout directory: $checkout_dirname"
+ test_or_fail "Switching to our checkout directory: $checkout_dirname"
# ask for repository name (without .git).
if git rev-parse --git-dir > /dev/null 2>&1; then
# ask for repository name (without .git).
if git rev-parse --git-dir > /dev/null 2>&1; then
# a repository was found, so update the version here and leave.
echo "Repository $repo_name exists. Updating it."
rgetem
# a repository was found, so update the version here and leave.
echo "Repository $repo_name exists. Updating it."
rgetem
- check_result "Recursive checkout on: $complete_path"
+ test_or_fail "Recursive checkout on: $complete_path"
else
# clone the repo since it wasn't found.
echo "Cloning repository $repo_name now."
git clone "$repo_root/$repo_name.git" $checkout_dirname
else
# clone the repo since it wasn't found.
echo "Cloning repository $repo_name now."
git clone "$repo_root/$repo_name.git" $checkout_dirname
- check_result "Git clone of repository: $repo_name"
+ test_or_fail "Git clone of repository: $repo_name"
fi
fix_site_perms "$complete_path"
fi
fix_site_perms "$complete_path"
local site_store_path="$1"; shift
pushd "$site_store_path" &>/dev/null
local site_store_path="$1"; shift
pushd "$site_store_path" &>/dev/null
- check_result "Switching to our app dir '$site_store_path'"
+ test_or_fail "Switching to our app dir '$site_store_path'"
echo "Updating site with composer..."
composer -n install
echo "Updating site with composer..."
composer -n install
- check_result "Composer installation step on '$site_store_path'."
+ test_or_fail "Composer installation step on '$site_store_path'."
echo "Site updated."
#hmmm: argh global
echo "Site updated."
#hmmm: argh global
# jump into the site path so we can start making relative links.
pushd "$site_store_path" &>/dev/null
# jump into the site path so we can start making relative links.
pushd "$site_store_path" &>/dev/null
- check_result "Switching to our app dir '$site_store_path'"
+ test_or_fail "Switching to our app dir '$site_store_path'"
pushd webroot &>/dev/null
# remove all symlinks that might plague us.
find . -maxdepth 1 -type l -exec rm -f {} ';'
pushd webroot &>/dev/null
# remove all symlinks that might plague us.
find . -maxdepth 1 -type l -exec rm -f {} ';'
- check_result "Cleaning out links in webroot"
+ test_or_fail "Cleaning out links in webroot"
# link in the avcore plugin.
make_safe_link "../vendor/siteavenger/avcore/webroot" avcore
# link in the avcore plugin.
make_safe_link "../vendor/siteavenger/avcore/webroot" avcore
if [ -L public ]; then
# public is a symlink.
\rm public
if [ -L public ]; then
# public is a symlink.
\rm public
- check_result "Removing public directory symlink"
+ test_or_fail "Removing public directory symlink"
elif [ -d public ]; then
# public is a folder with default files.
#hmmm: is that safe?
\rm -rf public
elif [ -d public ]; then
# public is a folder with default files.
#hmmm: is that safe?
\rm -rf public
- check_result "Removing public directory and contents"
+ test_or_fail "Removing public directory and contents"
fi
# create the main 'public' symlink
#hmmm: argh global
make_safe_link $CHECKOUT_DIR_NAME/webroot public
fi
# create the main 'public' symlink
#hmmm: argh global
make_safe_link $CHECKOUT_DIR_NAME/webroot public
- check_result "Creating link to webroot called 'public'"
+ test_or_fail "Creating link to webroot called 'public'"
#hmmm: public/$themelower/im will be created automatically by system user with appropriate permissions
#hmmm: public/$themelower/im will be created automatically by system user with appropriate permissions
# this should set the site_store_path variable if everything goes well.
update_repo "$full_app_dir" "$CHECKOUT_DIR_NAME" "$DEFAULT_REPOSITORY_ROOT" "$repo_name"
# this should set the site_store_path variable if everything goes well.
update_repo "$full_app_dir" "$CHECKOUT_DIR_NAME" "$DEFAULT_REPOSITORY_ROOT" "$repo_name"
-check_result "Updating the repository storage directory"
+test_or_fail "Updating the repository storage directory"
# this should set the site_store_path variable if everything goes well.
update_repo "$full_app_dir" "$CHECKOUT_DIR_NAME" "$DEFAULT_REPOSITORY_ROOT" "$repo_name"
# this should set the site_store_path variable if everything goes well.
update_repo "$full_app_dir" "$CHECKOUT_DIR_NAME" "$DEFAULT_REPOSITORY_ROOT" "$repo_name"
-check_result "Updating the repository storage directory"
+test_or_fail "Updating the repository storage directory"
local full_path="$BASE_PATH/$our_app"
if [ ! -d "$full_path" ]; then
mkdir -p $full_path
local full_path="$BASE_PATH/$our_app"
if [ ! -d "$full_path" ]; then
mkdir -p $full_path
- check_result "The app storage path could not be created.\n Path in question is: $full_path"
+ test_or_fail "The app storage path could not be created.\n Path in question is: $full_path"
fi
# now give the web server some access to the folder. this is crucial since the folders
fi
# now give the web server some access to the folder. this is crucial since the folders
while [[ $chow_path != $HOME ]]; do
echo chow path is now $chow_path
chmod g+rx "$chow_path"
while [[ $chow_path != $HOME ]]; do
echo chow path is now $chow_path
chmod g+rx "$chow_path"
- check_result "Failed to add group permissions on the path: $chow_path"
+ test_or_fail "Failed to add group permissions on the path: $chow_path"
# reassert the user's ownership of any directories we might have just created.
chown $(logname) "$chow_path"
# reassert the user's ownership of any directories we might have just created.
chown $(logname) "$chow_path"
- check_result "changing ownership to user failed on the path: $chow_path"
+ test_or_fail "changing ownership to user failed on the path: $chow_path"
chow_path="$(dirname "$chow_path")"
done
}
chow_path="$(dirname "$chow_path")"
done
}
#hmmm: why all the hard-coded paths below?
/bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
#hmmm: why all the hard-coded paths below?
/bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
-check_result "creating swap file"
+test_or_fail "creating swap file"
/bin/chmod 600 /var/swap.1
/bin/chmod 600 /var/swap.1
-check_result "setting swap file permissions"
+test_or_fail "setting swap file permissions"
-check_result "formatting swap file as swap partition"
+test_or_fail "formatting swap file as swap partition"
-check_result "enabling new swap partition"
+test_or_fail "enabling new swap partition"
source "$FEISTY_MEOW_SCRIPTS/core/launch_feisty_meow.sh"
sudo apt-get update -y
source "$FEISTY_MEOW_SCRIPTS/core/launch_feisty_meow.sh"
sudo apt-get update -y
-check_result "problem while doing 'apt-get update'"
+test_or_fail "problem while doing 'apt-get update'"
# new magic to tell dpkg to go with existing config files. let's see if it works!
sudo apt-get dist-upgrade -y -o Dpkg::Options::="--force-confold"
# new magic to tell dpkg to go with existing config files. let's see if it works!
sudo apt-get dist-upgrade -y -o Dpkg::Options::="--force-confold"
-check_result "problem while doing 'apt-get dist-upgrade'"
+test_or_fail "problem while doing 'apt-get dist-upgrade'"