apt-mark and similar software can mark packages as automatically installed, but can that be done during installation itself, something akin to
apt install --mark-auto packages [...]?
No, you have to run as separate command call
apt-mark auto ... Even its action was removed from
$ sudo apt-get markauto Reading package lists... Done Building dependency tree Reading state information... Done N: This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' instead. E: Handler silently failed
As a workaround, you could store the package list in a variable then use it with both commands. Another option, create a single shell function that run both commands for any input.
It really seems there is no built-in way of doing this. So I wrote a little script that does the job.
#!/bin/bash -e NEW_DEPS=$(comm -23 <(xargs -n1 <<< "$@" | sort) <(apt-mark showmanual | sort)) apt install $NEW_DEPS apt-mark auto $NEW_DEPS
It first filters out any packages that are already installed manually and then installs the rest, setting them to automatically installed afterwards.
I usually use this to temporarily install build dependencies. Suppose I need packages
C to build something and have above script available as
autoinstall. I can then use the following procedure to keep the build dependencies from remaining on my system after the build.
sudo autoinstall A B C # build stuff... sudo apt autoremove
This feature has been added to apt with the
--mark-auto option .