On Thu, Dec 25, 2025 at 10:59 AM Nicolas Kovacs <[email protected]> wrote:
> On RHEL-based systems you can use dnf group install Base to get a
> reasonably complete set of command-line tools like vim, tree, man pages,
> links, lynx, pinfo, etc.
> What would be the Debian equivalent of that? Of course I can still try
> to make a list of all the command-line tools I'm using in my daily work.
> But before doing that I wonder if there isn't some easier way to do this.
> Debian seems to have tasksel lists for various desktop environments. Is
> there something similar for common command-line tools ?

$ tasksel --new-install --list-tasks 2>>/dev/null | sed -e
'/desktop/d;/server/d;/blend/d;s/^[^ ]  *//' | sort -u
standard        standard system utilities
$ tasksel --task-package=standard
dhcpcd-base
libnss-systemd
systemd-timesyncd
libpam-systemd
$ apt-cache rdepends manpages | fgrep task
  live-task-standard
$ echo $(apt-cache depends live-task-standard | sed -e
's/Depends://;s/Recommends://;s/|//;s/  *//g' | sort -u) | fold -s -w
72
<default-logind> <logind> apt-listchanges bash-completion bind9-host
bzip2 dbus debian-faq doc-debian file gettext-base groff-base
inetutils-telnet inetutils-traceroute krb5-locales libc-l10n
liblockfile-bin libnss-systemd libpam-elogind libpam-systemd
live-task-base live-task-localisation live-task-standard locales lsof
man-db manpages media-types ncurses-term netcat-openbsd openssh-client
pciutils perl python3 reportbug traceroute ucf usbutils wamerican wget
xz-utils
$ echo $(aptitude -F '%p' search
'?or(?essential,?priority(required),?priority(important),?priority(standard))')
| fold -s -w 72
adduser amd64-microcode apt apt-listchanges apt-utils base-files
base-passwd bash bash-completion bind9-dnsutils bind9-host bsdutils
bzip2 ca-certificates coreutils cpio cron cron-daemon-common dash dbus
debconf debconf-i18n debian-archive-keyring debian-faq debianutils
dhcpcd-base diffutils dmidecode doc-debian dpkg e2fsprogs fdisk file
findutils gettext-base grep groff-base gzip hostname ifupdown
inetutils-telnet init init-system-helpers intel-microcode iproute2
iputils-ping kmod krb5-locales less libc-bin libc-l10n liblockfile-bin
libnss-systemd libpam-modules libpam-modules-bin libpam-runtime
libpam-systemd libpam-wtmpdb linux-sysctl-defaults locales login
login.defs logrotate lsof man-db manpages mawk media-types mount nano
ncurses-base ncurses-bin ncurses-term netbase netcat-traditional
nftables openssh-client passwd pciutils perl perl-base procps
readline-common reportbug sed sensible-utils systemd systemd-sysv
systemd-timesyncd sysvinit-utils tar traceroute tzdata ucf udev
util-linux util-linux-extra vim-common vim-tiny wamerican wget whiptail
wtmpdb xz-utils
$ aptitude -F '%P' search '?true' | sort -fu
extra
important
optional
required
standard
Unknown
$ (for P in $(aptitude -F '%P' search '?true' | fgrep -v Unknown |
sort -u); do echo $(aptitude -F '%P' search "?priority($P)" | wc -l)
$P; done) | sort -bn
31 important
33 required
40 standard
202 extra
69613 optional
$ aptitude -F '%P' search
'?not(?or(?priority(required),?priority(important),?priority(standard),?priority(optional),?priority(extra)))'
| sort | uniq -c | sort -bnr
  66022 Unknown
$
Not all packages have a priority.
You might presume all packages marked as essential, or of priority
required are installed.
Perhaps might presume likewise for priority important.
So, you probably want to add packages of priority standard that aren't
installed.
Might also want to cover packages in/required by live-task-standard
and/or tasksel's standard task.
With aptitude one can filter for not installed '?and(?not(?installed),...)'
apt-get doesn't particularly care if you tell it to install something
that's already installed,
it will just mark it as manually installed, and if --reinstall option
is given, will reinstall it, but otherwise won't reinstall it.
So, if you want to do it by Ansible, perhaps have it:
install aptitude and tasksel
apt-get update
use aptitude to get list of, or install, priority standard packages
that aren't installed, maybe also important and/or required (might
presume they're already there, or if not, not for good reason,
but if one does choose to install those, there might possibly be
conflict(s)?, e.g. there may be
something(s) that are, e.g. of priority required, that might be
satisfied by possible alternative
packages that are mutually exclusive.  E.g. systemd-sysv is priority
important, but conflicts
with sysvinit-core.
And perhaps also the packages for tasksel's standard, and the
live-task-standard package
or select packages thereof (or excluding some).
May want to review those with at least each major Debian release, as
things may change relative
to whatever packages you may typically have/want installed, and there
may possibly be some
conflicts.
With apt-get install, one can also append - to end of name of package
to remove it or not
install it (or purge it if --purge option was given).  That can be
useful when a dependency has
alternatives, and one wants to exclude (or remove) one or more of
those alternatives.  Also
highly useful when one or more packages must be installed at any given
time to satisfy a
dependency, and one doesn't want to remove the package dependent upon such, but
one wants to switch which package(s) are installed to satisfy the dependency.

Debian gives you choices, lots of choices.  Red Hat removes many
choices - so fewer to
no issues with conflicts on Red Hat, and one can even generally tell
Red Hat to install
"everything", and it will generally do so.  Debian you can't do that,
because some things
conflict, so, you get to make choices.  Red Hat often simply takes
those choices away.

69,830 packages https://www.debian.org/News/2025/20250809

Reply via email to