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
Workstation
KDE Plasma Workspaces
Virtualization Host
Custom Operating System
Installed Environment Groups:
Server
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
Xfce
[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:
autoconf
automake
binutils
bison
flex
gcc
gcc-c++
gdb
glibc-devel
libtool
make
pkgconf
pkgconf-m4
pkgconf-pkg-config
redhat-rpm-config
rpm-build
rpm-sign
strace
Default Packages:
asciidoc
byacc
ctags
diffstat
elfutils-libelf-devel
git
intltool
jna
ltrace
patchutils
perl-Fedora-VSP
perl-Sys-Syslog
perl-generators
pesign
source-highlight
systemtap
valgrind
valgrind-devel
Optional Packages:
cmake
expect
rpmdevtools
rpmlint
[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]$
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,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
0x7fd5774332a0>}
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
===============================================================================================================================================================================================
Removing:
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:
---TRUNCATING SO I CAN POST IT---
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?
[EDIT]
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
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 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.
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.
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.
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.
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.
EDIT:
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.