Debian – What are the Cons of Having Many Packages Marked as Manually Installed?

aptdebian

In one of my old inherited servers, I execute

 apt-mark showmanual

And I get a list of near 100 entries.

adduser
apache2
apt
apt-listchanges
apt-utils
aptitude
aptitude-common
at
base-files
base-passwd
bash
bash-completion
bc
bind9-dnsutils
bind9-host
bsd-mailx
bsdextrautils
bsdutils
busybox
bzip2
coreutils
cpio
cpp
cron
curl
dash
dbus
dc
debconf
debconf-i18n
debian-archive-keyring
debian-faq
debianutils
diffutils
discover
dmsetup
dnsutils
doc-debian
dpkg
e2fslibs
e2fsprogs
fail2ban
file
findutils
g++
gcc
gcc-4.8-base
gcc-4.9-base
gettext-base
gnupg
gpgv
grep
groff-base
gzip
host
hostname
htop
ifupdown
inetutils-telnet
info
init
init-system-helpers
initscripts
insserv
install-info
installation-report
iotop
iproute2
iptables
iputils-ping
isc-dhcp-client
isc-dhcp-common
krb5-locales
less
libacl1
libapt-inst1.5
libapt-pkg4.12
libasan6
libattr1
libaudit-common
libaudit1
libblkid1
libboost-iostreams1.55.0
libbz2-1.0
libc-bin
libc6
libcap2
libcap2-bin
libclass-isa-perl
libcomerr2
libcryptsetup4
libdb5.3
libdebconfclient0
libdevmapper1.02.1
libdns-export100
libestr0
libffi-dev
libffi6
libgcc1
libgcrypt20
libgd3
libgdbm3
libgmp10
libgnutls-deb0-28
libgnutls-openssl27
libgpg-error0
libhogweed2
libicu52
libidn11
libirs-export91
libisc-export95
libisccfg-export90
libjson-c2
libkmod2
liblocale-gettext-perl
liblockfile-bin
liblogging-stdlog0
liblognorm1
liblzma5
libmnl0
libmount1
libncurses5
libncursesw5
libnetfilter-acct1
libnettle4
libnewt0.52
libnfnetlink0
libp11-kit0
libpam-modules
libpam-modules-bin
libpam-runtime
libpam0g
libpcre3
libpipeline1
libpng12-0
libpopt0
libprocps3
libpsl0
libreadline6
libselinux1
libsemanage-common
libsepol1
libslang2
libsmartcols1
libsnmp-base
libss2
libssl-dev
libssl1.0.0
libstdc++6
libswitch-perl
libsystemd0
libtasn1-6
libtext-charwidth-perl
libtext-iconv-perl
libtext-wrapi18n-perl
libtinfo5
libudev1
liburi-perl
libusb-0.1-4
libustr-1.0-1
libuuid1
libxtables10
locales
login
logrotate
lsb-base
lsb-release
lsof
m4
man-db
manpages
mariadb-client
mariadb-server
mawk
mime-support
mlocate
mount
mtr-tiny
multiarch-support
mysql-client
mysql-common
nano
ncal
ncpa
ncurses-base
ncurses-bin
ncurses-term
net-tools
netbase
netcat-traditional
nfacct
nfs-common
ntp
ntpdate
openssh-client
openssh-server
openssh-sftp-server
openssl
p7zip-full
passwd
patch
perl
perl-base
php-xml
php5
php5-gd
php5-mysql
postfix
postfix-sqlite
procmail
procps
python2.7
python3-debian
python3-httplib2
readline-common
reportbug
rpcbind
rsync
rsyslog
screen
sed
sensible-utils
snapd
startpar
sudo
sysstat
systemd
systemd-sysv
sysv-rc
sysvinit-utils
tar
task-english
task-ssh-server
tasksel
tasksel-data
texinfo
time
tnftp
traceroute
tzdata
ucf
udev
ufw
unzip
util-linux
vim
vim-common
virtualenv
w3m
wamerican
wget
whiptail
whois
xz-utils
zip
zlib1g

Are there any potential issues in the future if I have one package (or a large number of packages in my case) marked as manually installed?

Should I mark them as automatically installed (and attempt to remove them later using autoremove)?

Actually it's a Debian 12 Bookworm

Best Answer

The only consequence of a package being marked as manually installed is that it won’t be removed by apt autoremove. The set of packages marked as manually installed should reflect the packages which are needed on your server; for example, if you need the Apache web server, then apache2 should be marked as manually installed.

You can automatically reduce the set of packages marked as manually installed by running

apt-mark minimize-manual

(as root).

See also Why are many of my packages marked as manually installed

Related Question