"Development Tools" DNF group installed but group packages arent?

So I dont want to file a bug about this yet until I know for sure that I’m not the one at fault.
I did a fresh install of Rocky 8.5 last night. In the installer I selected Server and a bunch of software groups as well. Specifically for this post, “Development Tools”.
I can run dnf group list and see that the group is installed, and I can run dnf groupinfo "Development Tools" and see what tools it should have installed… except a bunch of them arent installed and are showing as ‘available’.
Isn’t this entirely the purpose of dnf groups?

[q5sys@localhost btop]$ gcc
-bash: gcc: command not found

[q5sys@localhost btop]$ sudo dnf group list
Last metadata expiration check: 1:17:26 ago on Wed 27 Apr 2022 01:18:52 PM EDT.
Available Environment Groups:
   Server with GUI
   Minimal Install
   KDE Plasma Workspaces
   Virtualization Host
   Custom Operating System
Installed Environment Groups:
Installed Groups:
   Development Tools
   Graphical Administration Tools
   Headless Management
   Network Servers
   System Tools
Available Groups:
   Container Management
   .NET Core Development
   RPM Development Tools
   Legacy UNIX Compatibility
   Scientific Support
   Security Tools
   Smart Card Support
   Fedora Packager

[q5sys@localhost btop]$ dnf groupinfo "Development Tools"
Last metadata expiration check: 0:00:32 ago on Wed 27 Apr 2022 02:35:54 PM EDT.

Group: Development Tools
 Description: A basic development environment.
 Mandatory Packages:
 Default Packages:
 Optional Packages:
[q5sys@localhost btop]$ dnf info gcc
Last metadata expiration check: 0:15:45 ago on Wed 27 Apr 2022 02:35:54 PM EDT.
Available Packages
Name         : gcc
Version      : 8.5.0
Release      : 4.el8_5
Architecture : x86_64
Size         : 23 M
Source       : gcc-8.5.0-4.el8_5.src.rpm
Repository   : appstream
Summary      : Various compilers (C, C++, Objective-C, ...)
URL          : http://gcc.gnu.org
License      : GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD
Description  : The gcc package contains the GNU Compiler Collection version 8.
             : You'll need this package in order to compile C code.

[q5sys@localhost btop]$ dnf info libtool
Last metadata expiration check: 0:15:57 ago on Wed 27 Apr 2022 02:35:54 PM EDT.
Available Packages
Name         : libtool
Version      : 2.4.6
Release      : 25.el8
Architecture : x86_64
Size         : 708 k
Source       : libtool-2.4.6-25.el8.src.rpm
Repository   : appstream
Summary      : The GNU Portable Library Tool
URL          : http://www.gnu.org/software/libtool/
License      : GPLv2+ and LGPLv2+ and GFDL
Description  : GNU Libtool is a set of shell scripts which automatically configure UNIX and
             : UNIX-like systems to generically build shared libraries. Libtool provides a
             : consistent, portable interface which simplifies the process of using shared
             : libraries.
             : If you are developing programs which will use shared libraries, but do not use
             : the rest of the GNU Autotools (such as GNU Autoconf and GNU Automake), you
             : should install the libtool package.
             : The libtool package also includes all files needed to integrate the GNU
             : Portable Library Tool (libtool) and the GNU Libtool Dynamic Module Loader
             : (ltdl) into a package built using the GNU Autotools (including GNU Autoconf
             : and GNU Automake).

[q5sys@localhost btop]$ dnf info flex
Last metadata expiration check: 0:16:55 ago on Wed 27 Apr 2022 02:35:54 PM EDT.
Available Packages
Name         : flex
Version      : 2.6.1
Release      : 9.el8
Architecture : x86_64
Size         : 318 k
Source       : flex-2.6.1-9.el8.src.rpm
Repository   : appstream
Summary      : A tool for creating scanners (text pattern recognizers)
URL          : https://github.com/westes/flex
License      : BSD and LGPLv2+
Description  : The flex program generates scanners.  Scanners are programs which can
             : recognize lexical patterns in text.  Flex takes pairs of regular
             : expressions and C code as input and generates a C source file as
             : output.  The output file is compiled and linked with a library to
             : produce an executable.  The executable searches through its input for
             : occurrences of the regular expressions.  When a match is found, it
             : executes the corresponding C code.  Flex was designed to work with
             : both Yacc and Bison, and is used by many programs as part of their
             : build process.
             : You should install flex if you are going to use your system for
             : application development.

[q5sys@localhost btop]$ dnf info bison
Last metadata expiration check: 0:16:59 ago on Wed 27 Apr 2022 02:35:54 PM EDT.
Available Packages
Name         : bison
Version      : 3.0.4
Release      : 10.el8
Architecture : x86_64
Size         : 687 k
Source       : bison-3.0.4-10.el8.src.rpm
Repository   : appstream
Summary      : A GNU general-purpose parser generator
URL          : http://www.gnu.org/software/bison/
License      : GPLv3+
Description  : Bison is a general purpose parser generator that converts a grammar
             : description for an LALR(1) context-free grammar into a C program to
             : parse that grammar. Bison can be used to develop a wide range of
             : language parsers, from ones used in simple desk calculators to complex
             : programming languages. Bison is upwardly compatible with Yacc, so any
             : correctly written Yacc grammar should work with Bison without any
             : changes. If you know Yacc, you shouldn't have any trouble using
             : Bison. You do need to be very proficient in C programming to be able
             : to use Bison. Bison is only needed on systems that are used for
             : development.
             : If your system will be used for C development, you should install
             : Bison.

[q5sys@localhost btop]$ dnf info make
Last metadata expiration check: 0:16:05 ago on Wed 27 Apr 2022 02:35:54 PM EDT.
Installed Packages
Name         : make
Epoch        : 1
Version      : 4.2.1
Release      : 10.el8
Architecture : x86_64
Size         : 1.4 M
Source       : make-4.2.1-10.el8.src.rpm
Repository   : @System
From repo    : anaconda
Summary      : A GNU tool which simplifies the build process for users
URL          : http://www.gnu.org/software/make/
License      : GPLv3+
Description  : A GNU tool for controlling the generation of executables and other
             : non-source files of a program from the program's source files. Make
             : allows users to build and install packages without any significant
             : knowledge about the details of the build process. The details about
             : how the program should be built are provided for make in the program's
             : makefile.

[q5sys@localhost btop]$


I’ve just tried an install with server & “Development Tools” on a VM. All went fine. Were any other groups affected?


Contains logs from the install, it may be worth a look to see what happened. I would start with packaging.log

Alternatively you try removing the “Development Tools”

dnf group remove "Development Tools"
dnf group install "Development Tools"

If the packages are still unavailable the output of the above commands, should give more insight to the issue.

Regards Tom.

Thanks for the reply. So removing the group and re-installing the group did fix my issue, but in case it’s helpful, I’ll attach more information in case it gets reported by someone else you’ll have my data to compare with theirs.

Before attempting the removal and install, I poked around in the packaging log you mentioned. Here’s the relevant bits:

19:31:34,255 DBG packaging: transaction include list
19:31:34,255 DBG packaging: ['@core', '@server-product-environment', '@file-server', '@hardware-monitoring', '@infiniband', '@network-file-system-client', '@network-server', '@performance', '
@remote-system-management', '@development', '@graphical-admin-tools', '@headless-management', '@system-tools', 'kernel']
19:31:34,256 DBG packaging: transaction exclude list
19:31:34,256 DBG packaging: []

And a little later…

19:31:34,295 DBG dnf: Adding packages from group 'development': {<libcomps.Package object 'glibc-devel' at 0x7fd577433258>, <libcomps.Package object 'pkgconf-pkg-config' at 0x7fd577433240>, <
libcomps.Package object 'binutils' at 0x7fd574b4dbe8>, <libcomps.Package object 'strace' at 0x7fd577433420>, <libcomps.Package object 'elfutils-libelf-devel' at 0x7fd5774330a8>, <libcomps.Pac
kage object 'make' at 0x7fd5774331b0>, <libcomps.Package object 'pkgconf' at 0x7fd577433330>, <libcomps.Package object 'pkgconf-m4' at 0x7fd5774331f8>, <libcomps.Package object 'rpm-sign' at
1 Like

Trying to remove the group showed that only these were installed:

[q5sys@localhost btop]$ sudo !!
sudo dnf group remove "Development Tools"
Dependencies resolved.
 Package                                             Architecture                         Version                                                Repository                               Size
 elfutils-libelf-devel                               x86_64                               0.185-1.el8                                            @anaconda                                34 k
 glibc-devel                                         x86_64                               2.28-164.el8_5.3                                       @baseos                                 1.3 M
 make                                                x86_64                               1:4.2.1-10.el8                                         @anaconda                               1.4 M
 rpm-sign                                            x86_64                               4.14.3-19.el8_5.2                                      @baseos                                  18 k
Removing unused dependencies:
 glibc-headers                                       x86_64                               2.28-164.el8_5.3                                       @baseos                                 1.9 M
 kernel-headers                                      x86_64                               4.18.0-348.20.1.el8_5                                  @baseos                                 5.1 M
 libxcrypt-devel                                     x86_64                               4.1.1-6.el8                                            @anaconda                                24 k
 zlib-devel                                          x86_64                               1.2.11-17.el8                                          @anaconda                               138 k
Removing Groups:
 Development Tools

Transaction Summary
Remove  8 Packages

Freed space: 9.8 M
Is this ok [y/N]:

But then attempting to install the group then gave me what I expected to get initially:

[q5sys@localhost btop]$ dnf group install "Development Tools"
Error: This command has to be run with superuser privileges (under the root user on most systems).
[q5sys@localhost btop]$ sudo !!
sudo dnf group install "Development Tools"
Last metadata expiration check: 2:50:44 ago on Wed 27 Apr 2022 05:32:53 PM EDT.
Dependencies resolved.
Package                                                     Architecture                  Version                                                      Repository                        Size
Installing group/module packages:


Installing weak dependencies:
elfutils-debuginfod-client-devel                            x86_64                        0.185-1.el8                                                  baseos                            55 k
gcc-gdb-plugin                                              x86_64                        8.5.0-4.el8_5                                                appstream                        117 k
kernel-devel                                                x86_64                        4.18.0-348.20.1.el8_5                                        baseos                            20 M
Enabling module streams:
javapackages-runtime                                                                      201801
Installing Groups:
Development Tools

Transaction Summary
Install  161 Packages

Total download size: 181 M
Installed size: 540 M
Is this ok [y/N]:

Did the installer see any other repos than baseos? The missing packages were all from appstream, weren’t they?

The groups and module streams are metadata within repositories. The DNF reads only the enabled repos.
This is what I get in a different system, when I ask: “What is Development Tools if I look only at the ‘baseos’?”

$ sudo dnf --disablerepo=* --enablerepo=baseos -v -q group info development
Loaded plugins: builddep, changelog, config-manager, copr, debug, debuginfo-install, download, generate_completion_cache, groups-manager, kpatch, needs-restarting, playground, product-id, repoclosure, repodiff, repograph, repomanage, reposync, uploadprofile
DNF version: 4.7.0
cachedir: /var/cache/dnf
User-Agent: constructed: 'libdnf (AlmaLinux 8.5; generic; Linux.x86_64)'
repo: using cache for: baseos
baseos: using metadata from Wed 27 Apr 2022 06:22:53 PM EEST.
Last metadata expiration check: 0:24:35 ago on Thu 28 Apr 2022 10:19:44 AM EEST.

Group: Development Tools
 Group-Id: development
 Description: A basic development environment.
 Mandatory Packages:
   binutils-2.30-108.el8_5.1.x86_64                                       @System
   glibc-devel-2.28-164.el8_5.3.x86_64                                    @System
   make-1:4.2.1-10.el8.x86_64                                             @System
   pkgconf-1.4.2-1.el8.x86_64                                             @System
   pkgconf-m4-1.4.2-1.el8.noarch                                          @System
   pkgconf-pkg-config-1.4.2-1.el8.x86_64                                  @System
   rpm-sign-4.14.3-19.el8_5.2.x86_64                                      @System
   strace-5.7-3.el8.x86_64                                                @System
 Default Packages:
   elfutils-libelf-devel-0.185-1.el8.x86_64                               @System
 Optional Packages:
   expect-5.45.4-5.el8.x86_64                                             @System

Here’s the full /var/log/anaconda/packages.log

are there any other system files that would be helpful to see?

Since we are solved the issue, just speculating why it did occur, see the /root/*-ks.cfg files.
One of them should list the choices you made in installer. Hence, do they contain any repo= lines?

I dont see any repo lines other than the one for local media, but I do see the package groups.


I don’t believe all the packages for the development group are on the the minimal iso. Additional repo’s would need to be added to get all the packages, I believe. I didn’t have this issue, as I used the boot iso.

Thanks Tom.

Ok that may have been a misunderstanding on my part then… I figured that the minimal would connect and download any packages I selected that weren’t on the ISO if the network was available. That’s how other minimal ISOs have worked that I’ve tried in the past from other distributions. Sadly minimal and netinstall seem to be treated as the same thing for a lot of distros.


My understanding is that the boot iso provides this behaviour.

Thanks Tom.

1 Like

So the obvious question I’m led to… is that should these options be available on the minimal ISO?
Because selecting them does not give the result one expects.
These are options a that a person with a minimal installation ISO could select but from the user perspective they are broken because they don’t give the expected result.

If the ISO would install what it could, and then on the first dnf update it’d pull the rest then I wouldn’t see it as an issue.

But as it currently works… these options are effectively broken on the minimal ISO. So shouldn’t they be removed or disabled?

A part of that question is whether the list of options is in the installer, or does it just read what is in the repo metadata that is on the media? Probably the latter. The metadata lists only packages that are in the repo.

Multiple repositories can list their packages to be members-of XYZ. When dnf sees all repos, it also generates group info for XYZ from all of them. I don’t know how much of the metadata is “the same as in RHEL” and what is genuinely desicions made by Rocky’s team. (If they are “broken” because RHEL has them “broken”, then feature requests must go to RHEL.)

The idea of minimal image, AFAIK, is to be able to perform a minimal installation when you don’t have network. With the much larger “DVD” image you can install much more, but need larger media too.

IIRC, CentOS Linux 8 did not initially have any minimal image, just the netboot and “DVD”. CentOS releases used to have another FAQ about minimal image too: you had to explicitly config net enabled, or it would not activate after boot.

Most of my installs are now minimal anyway (more likely with PXEboot or netboot image than with the minimal image) since I run Ansible playbook post-install that configures and installs everything I want (from my local networked repos). I have a feeling that similar configuration management / automation is getting popular.

As a user this is what I see: Install Screen

I’m given the option of installing a “Server”, a “Minimal Image”, and a “Custom Operating System”. I’ve selected Server and I’m given the option to install additional software for the “Selected Environment”.

I select a bunch… Install the system… reboot. When the system reboots into Rocky, I don’t have the software that I selected. From the end user perspective, that means the installer is broken. The logic behind why the user (me) did not get the system they were told they’d get isn’t really issue. The issue is that we were told they could install software that we couldn’t.

If a minimal ISO isn’t able to install additional software, it would stand to reason that the ISO shouldn’t give the option to “install” software wont be installed.
I’m guessing that this would require a different setup for anaconda on the minimal ISO, but if Rocky is going to make a Minimal ISO, then it should behave appropriately.

That is not the screen I would look at first. I would:

  1. Enable network (if that is possible with minimal image)
  2. See the Source screen whether I can define additional repos (by typing URLs)
  3. Then recheck the options in Software selection

I just did this out of curiosity, chose server, and then in the additional software which included Graphical Administration Tools and some other options (8 in total). None of the included items in Graphical Administration Tools got installed (however the group shows as being installed). So this hints at a problem with the minimal iso. I also had network connectivity, so if the minimal install wanted to pull in additional software from internet repositories it could have done that. However, this is not the case. I will ask the team about this as it seems strange that the iso has the options, but it doesn’t do what is intended.

To be honest, normally I just do a minimal, and once booted into the system I then usually just install whatever extra I want.


It seems this has been reported before, so adding urls to install from - similar to what you would do on a boot iso should be enough. However we are hoping to have this figured out for the future so that it works as intended.