How to install the kickstart custom package

Kickstart has set up individual packages that you want to add separately, but if you check after installing os, it is not installed.

In the kickstart file, in addition to the group-specific packages such as @Base, the packages that I want to add separately are specified by name, as shown in the example below.

The actual file was also saved under the “baseos/baseOS/Packages/…” path.
For example, Kubernetes installation files such as kubectl and kubeadm were saved under “baseos/baseOS/Packages/p/”.

If I check after installing the OS, it is not installed, is there anything else I can do other than this during the kickstart setup process? Or is there a problem with what I worked on, such as the actual file location being wrong?

Example

%packages --ignoremissing --excludedocs # install minimal packages
@core
@Base
@Software Development
yum-utilsdd
net-tools
lrzsz
bash-completion
docker-ce-selinux
docker-ce
container-selinux
containerd.io
kubectl
kubeadm
...

IMHO, there are two distinct topics here.

One is kickstart. On interactive install the installer asks questions from user; there are decisions to make. The installer saves the choices you make into a file, /root/anaconda-ks.cfg. That is a kickstart file that you could use to do install again, non-interactively and with same choices. One can make a custom kickstart file too, with choices that the installer’s UI can’t offer you.


The other topic is install image. There are basically two for normal install. One has only the installer and has to fetch all packages from online repositories. Other has (some) RPM packages, so that they can be installed on machine that has no network. Both images can be used with kickstart file (even though it is not in the images). The file must specify URLs of online repos for the network-based case.

If the system to install to can use network and if the third-party packages are on some online repos, then kickstart could install them from those repos.

What you have is a custom install image. For convenience, you have your kickstart file and additional RPM packages in it. (I have never created/used such images.)

The default install image that includes RPM packages does have a repository in it, doesn’t it? A repository is more than just RPM-files in directory. It has also metadata files – indices of package files and their features. Package manager relies on the metadata. If you simply copied RPM files, then they are not listed in the metadata. You should regenerate the metadata. That could be tricky, if the repo has DNF modules.

I’d rather add separate directory, add packages, createrepo_c the metadata for that additional repo, and figure out kickstart syntax that makes installer find the repo from the media.


I have machines on network, so I do only minimal installs and after install I run Ansible playbooks to install majority of packages and all the configuration for them.

1 Like