From my script 'system-info'...
Code:
function GetUserInstalled()
{
## Get a list of User Installed Packages
# This only works for Debian Branch...
echo -e " --- User Installed Package List:"
# check if Debian Branch. Otherwise 'apt-mark' will not be found...
if [[ "$debian_branch" == "0" ]]
then
manually_installed=$(mktemp /tmp/ManuallyInstalled-XXXXX)
default_installed=$(mktemp /tmp/DefaultInstalled-XXXXX)
user_installed=$(mktemp /tmp/UserInstalled-XXXXX)
# Use apt-mark to list all packages marked as manually installed.
apt-mark showmanual | sort -u > $manually_installed
# Check to see if default installed list exists
# for prebuilt system images, it does not exist
if [ -f /var/log/installer/initial-status.gz ]
then
# Get the list of default installed packages at initial installation.
gzip -dc /var/log/installer/initial-status.gz 2> /dev/null | \
sed -n 's/^Package: //p' | \
sort -u > $default_installed
else
touch $default_installed
fi
# Use compare, to exclude those defaults that are unique, AND exclude defaults
# that are presently marked as manually installed. (Those 'may' have been changed.)
comm -23 $manually_installed $default_installed > $user_installed
# Print the list in two columns
awk 'NF' $user_installed
#\ Removed 2022.03.10 to turn to one column
#| pr -2T # You can remove the pr filter on this to keep output in a single column...
nl # Add newline in report
# Remove the temporary files
rm -f $manually_installed
rm -f $default_installed
rm -f $user_installed
else
echo -e "The system tested is not in the Debian Branch. "
echo -e "The method written in this script is for Debian Branch conventions."
nl
fi
unset -v manually_installed default_installed user_installed
}
Boils down to:
Code:
manually_installed=$(mktemp /tmp/ManuallyInstalled-XXXXX)
default_installed=$(mktemp /tmp/DefaultInstalled-XXXXX)
user_installed=$(mktemp /tmp/UserInstalled-XXXXX)
apt-mark showmanual | sort -u > $manually_installed
gzip -dc /var/log/installer/initial-status.gz 2> /dev/null | \
sed -n 's/^Package: //p' | \
sort -u > $default_installed
comm -23 $manually_installed $default_installed > $user_installed
awk 'NF' $user_installed
cp $user_install packages.txt That 1fallen was referring to.
rm -f $manually_installed
rm -f $default_installed
rm -f $user_installed
I use that list to reinstall applications during a migration.