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

1 Answer 1


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

  • 1
    I use Ubuntu and Debian for more than 15 years, and I never see this command and the apt-mark tool before. It's so useful! apt-mark showmanual shows the packages that are marked as manually installed, I had several base packages in that list, which is weird, but apt-mark auto … fixes this. Commented Jul 5, 2023 at 20:50

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .