diff --git a/elements/ironic-agent/finalise.d/99-remove-extra-packages b/elements/ironic-agent/finalise.d/99-remove-extra-packages index 91ccc14fe..b3f722bbc 100755 --- a/elements/ironic-agent/finalise.d/99-remove-extra-packages +++ b/elements/ironic-agent/finalise.d/99-remove-extra-packages @@ -9,18 +9,21 @@ set -o pipefail # TODO(lucasagomes): optimize the ramdisk for other OSs if [ $DISTRO_NAME = 'fedora' ] ; then - install-packages -e kernel-debug-devel gcc fedora-logos python3 rsync sudo pykickstart grubby make genisoimage tcpdump man-db policycoreutils kbd-misc plymouth cronie - + _remove_yum='' if [ $DIB_RELEASE -ge 22 ]; then - # Remove yum, >= F22 defaults to dnf - dnf remove yum -y - # Remove package manager cache - dnf clean all - else - # Remove package manager cache - yum clean all + # if we are on F22, we can remove yum if there, because it has + # been superseeded by dnf + _remove_yum='yum' fi + install-packages -e kernel-debug-devel gcc fedora-logos \ + python3 rsync sudo pykickstart \ + grubby make genisoimage tcpdump \ + man-db policycoreutils kbd-misc \ + plymouth cronie ${_remove_yum} + + ${YUM:-yum} clean all + # Rebuilding the rpm database after removing packages will reduce # its size rpm --rebuilddb diff --git a/elements/redhat-common/finalise.d/01-clean-old-kernels b/elements/redhat-common/finalise.d/01-clean-old-kernels index 1e1e71c98..60c7b0fea 100755 --- a/elements/redhat-common/finalise.d/01-clean-old-kernels +++ b/elements/redhat-common/finalise.d/01-clean-old-kernels @@ -6,6 +6,16 @@ fi set -eu set -o pipefail -install-packages yum-utils +YUM=${YUM:-yum} -package-cleanup --oldkernels -y --count=1 +if [[ ${YUM} == "dnf" ]]; then + # cribbed from + # http://dnf.readthedocs.org/en/latest/cli_vs_yum.html + _old_kernels="$(dnf repoquery --installonly --latest-limit -1 -q)" + if [[ -n "${_old_kernels}" ]]; then + dnf remove -y ${_old_kernels} + fi +else + install-packages yum-utils + package-cleanup --oldkernels -y --count=1 +fi diff --git a/elements/yum/bin/install-packages b/elements/yum/bin/install-packages index dac71738f..2bef134a0 100755 --- a/elements/yum/bin/install-packages +++ b/elements/yum/bin/install-packages @@ -122,6 +122,14 @@ if [ -n "$WHITELIST" ]; then exit 0 fi + # yum & dnf have a feature/bug where missing packages in a list of + # packages for install/erase do not raise an error exit [1]. + # There is a corner case when specifying just *one* package, where + # it will fail if the package is missing. Thus install-packages + # follows this behaviour; we may need to re-evaluate this at some + # point. + # + # [1] https://bugzilla.redhat.com/show_bug.cgi?id=965567 ${YUM} -v -y $ACTION $EXTRA_ARGS $PKGS if [ "$ACTION" == "install" ]; then