Local modifications to ClusterLabs/Anvil by Alteeve
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

1888 lines
51 KiB

#!/usr/bin/perl
#
# This manages the DHCP, PXE, tftp daemons, kickstart files and and the install sources on Striker
# dashboards. Collectively, this provides the ability for other machines in the Anvil! to be built or rebuilt
# without access to the Internet.
#
# The initial configuration and the ability to get updates does check for an Internet connection.
# Alternatively, /mnt/files/ will be checked for a
#
# Examples;
#
#
# Exit codes;
# 0 = Normal exit.
# 1 = Alteeve repo not installed and not installable.
# 2 = BCN IP not found, unable to configure yet.
# 3 = Failed to write or update a configuration file.
#
# TODO:
# - Support building the install target by mounting the ISO and checking /mnt/shared/incoming for needed
# files. We can dump the files into a temporary directory, createrepo it, then use the same logic as we use
# for internet loads. We can use '/mnt/shared/incoming' for handling updated RPMs to updating air-gapped
# systems, too.
use strict;
use warnings;
use Anvil::Tools;
# Disable buffering
$| = 1;
my $THIS_FILE = ($0 =~ /^.*\/(.*)$/)[0];
my $running_directory = ($0 =~ /^(.*?)\/$THIS_FILE$/)[0];
if (($running_directory =~ /^\./) && ($ENV{PWD}))
{
$running_directory =~ s/^\./$ENV{PWD}/;
}
my $anvil = Anvil::Tools->new({log_level => 2, log_secure => 1});
$anvil->Storage->read_config({file => $anvil->data->{path}{configs}{'anvil.conf'}});
$anvil->Log->entry({source => $THIS_FILE, line => __LINE__, level => 1, secure => 0, key => "log_0115", variables => { program => $THIS_FILE }});
# Read switches
$anvil->data->{switches}{'y'} = "";
$anvil->Get->switches;
my ($os_type, $os_arch) = $anvil->System->get_os_type({debug => 2});
$anvil->data->{host_os}{os_type} = $os_type;
$anvil->data->{host_os}{os_arch} = $os_arch;
$anvil->data->{host_os}{version} = ($os_type =~ /(\d+)$/)[0];
$anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 2, list => {
"host_os::os_type" => $anvil->data->{host_os}{os_type},
"host_os::os_arch" => $anvil->data->{host_os}{os_arch},
"host_os::version" => $anvil->data->{host_os}{version},
}});
# load the list of packages;
load_packages($anvil);
# Make sure our repo is installed. If not, install it or fail out.
#check_alteeve_repo($anvil);
# Store the RPMs in repo directory.
#update_install_source($anvil);
# Setup PXE/tftp/dhcpd config.
setup_boot_environment($anvil);
# We're done
$anvil->nice_exit({exit_code => 0});
#############################################################################################################
# Private functions. #
#############################################################################################################
sub setup_boot_environment
{
my ($anvil) = @_;
# Get my BCN IP and active OS.
my $network = $anvil->Get->network_details();
my $bcn_ip = "";
foreach my $in_interface (sort {$a cmp $b} keys %{$network->{interface}})
{
$anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 2, list => { in_interface => $in_interface }});
next if $in_interface !~ /^bcn/;
$anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 2, list => { "interface::${in_interface}::ip" => $network->{interface}{$in_interface}{ip} }});
if ($anvil->Validate->is_ipv4({ip => $network->{interface}{$in_interface}{ip} }))
{
$bcn_ip = $network->{interface}{$in_interface}{ip};
$anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 2, list => { bcn_ip => $bcn_ip }});
}
last if $bcn_ip;
}
if (not $bcn_ip)
{
# Can't set this up yet.
print $anvil->Words->string({key => "error_0042"})."\n";
$anvil->nice_exit({code => 2});
}
# Build and update the PXE BIOS 'default' menu.
my $base_url = "http://".$bcn_ip."/".$anvil->data->{host_os}{os_type}."/".$anvil->data->{host_os}{os_arch};
$anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 2, list => { base_url => $base_url }});
# Setup the BIOS boot menu.
my $bios_default_body = $anvil->Template->get({file => "pxe.txt", show_name => 0, name => "tftp_bios", variables => { base_url => $base_url }});
$anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 2, list => { bios_default_body => $bios_default_body }});
# Read in the existing default file, if it exists, and compare it to the one we just generated.
my $bios_default_return_code = $anvil->Storage->update_file({
debug => 3,
body => $bios_default_body,
file => $anvil->data->{path}{configs}{pxe_default},
});
$anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 2, list => { bios_default_body => $bios_default_body }});
if ($bios_default_return_code)
{
# Failed.
print $anvil->Words->string({key => "error_0043", variables => { file => $anvil->data->{path}{configs}{pxe_default} }})."\n";
$anvil->nice_exit({code => 3});
}
die;
return(0);
}
sub check_alteeve_repo
{
my ($anvil) = @_;
my $repo_url = "";
my $repo_file = "";
if ($anvil->data->{host_os}{os_type} eq "fedora")
{
$repo_file = "/etc/yum.repos.d/alteeve-f".$anvil->data->{host_os}{version}.".repo";
$repo_url = "https://alteeve.com/an-repo/f".$anvil->data->{host_os}{version}."/alteeve-f".$anvil->data->{host_os}{version}."-repo-latest.noarch.rpm";
$anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 2, list => {
repo_file => $repo_file,
repo_url => $repo_url,
}});
}
else
{
### TODO: Update this when rhel8 is out
$repo_file = "/etc/yum.repos.d/alteeve-el".$anvil->data->{host_os}{version}.".repo";
$repo_url = "https://alteeve.com/an-repo/el".$anvil->data->{host_os}{version}."/alteeve-el".$anvil->data->{host_os}{version}."-repo-latest.noarch.rpm";
$anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 2, list => {
repo_file => $repo_file,
repo_url => $repo_url,
}});
}
# If the repo file doesn't exist, try to install it.
if (not -e $repo_file)
{
# Install the repo
my $handle = $anvil->System->call({debug => 2, shell_call => $anvil->data->{path}{exe}{rpm}." -Uvh ".$repo_url });
$anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 2, list => { handle => $handle }});
}
# If it still doesn't exist, we're done.
if (not -e $repo_file)
{
# Die
print $anvil->Words->string({key => "error_0041"})."\n";
$anvil->nice_exit({code => 1});
}
return(0);
}
# This uses yumdownloader to push the files into '/var/www/html/<os_name>/<arch>/os
sub update_install_source
{
my ($anvil) = @_;
### TODO: Make sure this path exists.
my $download_path = "/var/www/html/".$anvil->data->{host_os}{os_type}."/".$anvil->data->{host_os}{os_arch}."/os/Packages/";
my $array_size = @{$anvil->data->{packages}};
$anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 2, list => {
download_path => $download_path,
array_size => $array_size,
}});
if (not -e $download_path)
{
$anvil->Storage->make_directory({debug => 2, directory => $download_path, mode => "0775"});
}
print $anvil->Words->string({key => "message_0077", variables => {
directory => $download_path,
packages => $anvil->Convert->add_commas({number => $array_size}),
}})."\n";
# Clear the dnf cache
my $output = $anvil->System->call({debug => 2, shell_call => $anvil->data->{path}{exe}{dnf}." clean expire-cache" });
$anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 2, list => { output => $output }});
my $shell_call = $anvil->data->{path}{exe}{dnf}." download --destdir ".$download_path." ";
$anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 2, list => { shell_call => $shell_call }});
foreach my $package (sort {$a cmp $b} @{$anvil->data->{packages}})
{
# Append the package to the active shell call.
$shell_call .= " ".$package;
}
# Now call the command in the background, then we'll track the output.
my $stdout_file = "/tmp/".$THIS_FILE."_update_install_source.stdout";
if (-e $stdout_file)
{
unlink $stdout_file;
}
my $handle = $anvil->System->call({
debug => 2,
shell_call => $shell_call,
background => 1,
stdout_file => $stdout_file,
});
$anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 2, list => { handle => $handle }});
# Now we'll loop, printing output, until the handle dies.
my $alive = 1;
my $last_stdout_line = 0;
while($alive)
{
# Are we still alive?
$alive = $handle->poll();
$anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 2, list => { alive => $alive }});
# Sleep (even if we're dead now, we want to give a second for the stdout file to be updated
# before processing it).
sleep 1;
# print any new STDOUT lines
my $stdout = $anvil->Storage->read_file({force_read => 1, file => $stdout_file});
$anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 3, list => { stdout => $stdout }});
my $this_stdout_line = 0;
foreach my $line (split/\n/, $stdout)
{
$this_stdout_line++;
$anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 3, list => {
's1:this_stdout_line' => $this_stdout_line,
's2:last_stdout_line' => $last_stdout_line,
's3:line' => $line,
}});
if ($this_stdout_line > $last_stdout_line)
{
print $anvil->Words->string({key => "message_0078", variables => { line => $line }})."\n";
$last_stdout_line = $this_stdout_line;
$anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 3, list => { last_stdout_line => $last_stdout_line }});
}
}
}
return(0);
}
#
sub load_packages
{
my ($anvil) = @_;
# This is the list of packages we need to download.
$anvil->data->{packages} = [
"GeoIP-GeoLite-data.noarch",
"GeoIP.x86_64",
"ModemManager-glib.x86_64",
"ModemManager.x86_64",
"NetworkManager-adsl.x86_64",
"NetworkManager-bluetooth.x86_64",
"NetworkManager-libnm.x86_64",
"NetworkManager-ppp.x86_64",
"NetworkManager-team.x86_64",
"NetworkManager-wifi.x86_64",
"NetworkManager-wwan.x86_64",
"NetworkManager.x86_64",
"PackageKit-glib.x86_64",
"PackageKit-gstreamer-plugin.x86_64",
"PackageKit.x86_64",
"SDL.x86_64",
"SDL2.x86_64",
"aajohan-comfortaa-fonts.noarch",
"abattis-cantarell-fonts.noarch",
"abrt-addon-ccpp.x86_64",
"abrt-addon-coredump-helper.x86_64",
"abrt-addon-kerneloops.x86_64",
"abrt-addon-pstoreoops.x86_64",
"abrt-addon-vmcore.x86_64",
"abrt-addon-xorg.x86_64",
"abrt-cli.x86_64",
"abrt-dbus.x86_64",
"abrt-libs.x86_64",
"abrt-plugin-bodhi.x86_64",
"abrt-retrace-client.x86_64",
"abrt-tui.x86_64",
"abrt.x86_64",
"accountsservice-libs.x86_64",
"accountsservice.x86_64",
"acl.x86_64",
"adcli.x86_64",
"adobe-mappings-cmap-deprecated.noarch",
"adobe-mappings-cmap.noarch",
"adobe-mappings-pdf.noarch",
"adobe-source-han-sans-cn-fonts.noarch",
"adobe-source-han-sans-tw-fonts.noarch",
"adobe-source-han-serif-cn-fonts.noarch",
"adobe-source-han-serif-tw-fonts.noarch",
"adwaita-cursor-theme.noarch",
"adwaita-gtk2-theme.x86_64",
"adwaita-icon-theme.noarch",
"alsa-lib.x86_64",
"alsa-plugins-pulseaudio.x86_64",
"alsa-ucm.x86_64",
"alsa-utils.x86_64",
"amtterm.x86_64",
"anvil-core.noarch",
"anvil-dr.noarch",
"anvil-node.noarch",
"anvil-striker.noarch",
"appstream-data.noarch",
"apr-util-bdb.x86_64",
"apr-util-openssl.x86_64",
"apr-util.x86_64",
"apr.x86_64",
"argyllcms.x86_64",
"at-spi2-atk.x86_64",
"at-spi2-core.x86_64",
"at.x86_64",
"atk.x86_64",
"atkmm.x86_64",
"atmel-firmware.noarch",
"attr.x86_64",
"audit-libs.x86_64",
"audit.x86_64",
"augeas-libs.x86_64",
"authselect-compat.x86_64",
"authselect-libs.x86_64",
"authselect.x86_64",
"autogen-libopts.x86_64",
"avahi-glib.x86_64",
"avahi-libs.x86_64",
"awesome.x86_64",
"b43-fwcutter.x86_64",
"b43-openfwwf.noarch",
"basesystem.noarch",
"bash-completion.noarch",
"bash.x86_64",
"bc.x86_64",
"bind-export-libs.x86_64",
"bind-libs-lite.x86_64",
"bind-libs.x86_64",
"bind-license.noarch",
"bind-utils.x86_64",
"binutils.x86_64",
"bluez-libs.x86_64",
"bluez-obexd.x86_64",
"bluez.x86_64",
"bolt.x86_64",
"bridge-utils.x86_64",
"brlapi.x86_64",
"brltty.x86_64",
"brotli.x86_64",
"btrfs-progs.x86_64",
"bubblewrap.x86_64",
"bzip2-libs.x86_64",
"bzip2.x86_64",
"c-ares.x86_64",
"ca-certificates.noarch",
"cairo-gobject.x86_64",
"cairo.x86_64",
"cairomm.x86_64",
"capstone.x86_64",
"cdparanoia-libs.x86_64",
"celt051.x86_64",
"checkpolicy.x86_64",
"cheese-libs.x86_64",
"chkconfig.x86_64",
"chrony.x86_64",
"cifs-utils.x86_64",
"clufter-bin.x86_64",
"clufter-common.noarch",
"clutter-gst3.x86_64",
"clutter-gtk.x86_64",
"clutter.x86_64",
"cockpit-bridge.x86_64",
"cockpit-networkmanager.noarch",
"cockpit-storaged.noarch",
"cockpit-system.noarch",
"cockpit-ws.x86_64",
"cogl.x86_64",
"color-filesystem.noarch",
"colord-gtk.x86_64",
"colord-libs.x86_64",
"colord.x86_64",
"compat-openssl10.x86_64",
"comps-extras.noarch",
"coolkey.x86_64",
"coreutils-common.x86_64",
"coreutils.x86_64",
"corosync.x86_64",
"corosynclib.x86_64",
"cpio.x86_64",
"cpp.x86_64",
"cracklib-dicts.x86_64",
"cracklib.x86_64",
"crda.x86_64",
"cronie-anacron.x86_64",
"cronie.x86_64",
"crontabs.noarch",
"crypto-policies.noarch",
"cryptopp.x86_64",
"cryptsetup-libs.x86_64",
"cryptsetup.x86_64",
"cups-libs.x86_64",
"cups-pk-helper.x86_64",
"curl.x86_64",
"cyrus-sasl-gssapi.x86_64",
"cyrus-sasl-lib.x86_64",
"cyrus-sasl-plain.x86_64",
"cyrus-sasl.x86_64",
"dbus-glib.x86_64",
"dbus-libs.x86_64",
"dbus-x11.x86_64",
"dbus.x86_64",
"dbxtool.x86_64",
"dconf-editor.x86_64",
"dconf.x86_64",
"dejavu-fonts-common.noarch",
"dejavu-sans-fonts.noarch",
"dejavu-sans-mono-fonts.noarch",
"dejavu-serif-fonts.noarch",
"deltarpm.x86_64",
"desktop-backgrounds-compat.noarch",
"desktop-file-utils.x86_64",
"device-mapper-event-libs.x86_64",
"device-mapper-event.x86_64",
"device-mapper-libs.x86_64",
"device-mapper-multipath-libs.x86_64",
"device-mapper-multipath.x86_64",
"device-mapper-persistent-data.x86_64",
"device-mapper.x86_64",
"dhcp-client.x86_64",
"dhcp-common.noarch",
"dhcp-libs.x86_64",
"diffutils.x86_64",
"djvulibre-libs.x86_64",
"dleyna-connector-dbus.x86_64",
"dleyna-core.x86_64",
"dleyna-server.x86_64",
"dmenu.x86_64",
"dmidecode.x86_64",
"dnf-conf.noarch",
"dnf-plugins-core.noarch",
"dnf-yum.noarch",
"dnf.noarch",
"dnsmasq.x86_64",
"dos2unix.x86_64",
"dosfstools.x86_64",
"dracut-config-rescue.x86_64",
"dracut-network.x86_64",
"dracut.x86_64",
"drbd-bash-completion.x86_64",
"drbd-pacemaker.x86_64",
"drbd-udev.x86_64",
"drbd-utils.x86_64",
"drbd.x86_64",
"dwm.x86_64",
"dzen2.x86_64",
"e2fsprogs-libs.x86_64",
"e2fsprogs.x86_64",
"ebtables.x86_64",
"ed.x86_64",
"edk2-ovmf.noarch",
"efivar-libs.x86_64",
"efivar.x86_64",
"elfutils-default-yama-scope.noarch",
"elfutils-libelf.x86_64",
"elfutils-libs.x86_64",
"elfutils.x86_64",
"emacs-filesystem.noarch",
"enca.x86_64",
"enchant.x86_64",
"enchant2.x86_64",
"epiphany-runtime.x86_64",
"ethtool.x86_64",
"evince-djvu.x86_64",
"evince-libs.x86_64",
"evolution-data-server-langpacks.noarch",
"evolution-data-server.x86_64",
"exempi.x86_64",
"exiv2-libs.x86_64",
"exiv2.x86_64",
"expat.x86_64",
"f28-backgrounds-base.noarch",
"fedora-gpg-keys.noarch",
"fedora-icon-theme.noarch",
"fedora-logos-httpd.noarch",
"fedora-logos.x86_64",
"fedora-release-notes.noarch",
"fedora-release-server.noarch",
"fedora-release.noarch",
"fedora-repos-modular.noarch",
"fedora-repos.noarch",
"fence-agents-all.x86_64",
"fence-agents-alom.x86_64",
"fence-agents-amt-ws.x86_64",
"fence-agents-amt.x86_64",
"fence-agents-apc-snmp.x86_64",
"fence-agents-apc.x86_64",
"fence-agents-aws.x86_64",
"fence-agents-azure-arm.x86_64",
"fence-agents-bladecenter.x86_64",
"fence-agents-brocade.x86_64",
"fence-agents-cisco-mds.x86_64",
"fence-agents-cisco-ucs.x86_64",
"fence-agents-common.x86_64",
"fence-agents-compute.x86_64",
"fence-agents-docker.x86_64",
"fence-agents-drac.x86_64",
"fence-agents-drac5.x86_64",
"fence-agents-eaton-snmp.x86_64",
"fence-agents-emerson.x86_64",
"fence-agents-eps.x86_64",
"fence-agents-gce.x86_64",
"fence-agents-hds-cb.x86_64",
"fence-agents-heuristics-ping.x86_64",
"fence-agents-hpblade.x86_64",
"fence-agents-ibmblade.x86_64",
"fence-agents-ifmib.x86_64",
"fence-agents-ilo-moonshot.x86_64",
"fence-agents-ilo-mp.x86_64",
"fence-agents-ilo-ssh.x86_64",
"fence-agents-ilo2.x86_64",
"fence-agents-intelmodular.x86_64",
"fence-agents-ipdu.x86_64",
"fence-agents-ipmilan.x86_64",
"fence-agents-ironic.x86_64",
"fence-agents-kdump.x86_64",
"fence-agents-ldom.x86_64",
"fence-agents-lpar.x86_64",
"fence-agents-mpath.x86_64",
"fence-agents-netio.x86_64",
"fence-agents-ovh.x86_64",
"fence-agents-rhevm.x86_64",
"fence-agents-rsa.x86_64",
"fence-agents-rsb.x86_64",
"fence-agents-sanbox2.x86_64",
"fence-agents-sbd.x86_64",
"fence-agents-scsi.x86_64",
"fence-agents-vbox.x86_64",
"fence-agents-virsh.x86_64",
"fence-agents-vmware-rest.x86_64",
"fence-agents-vmware-soap.x86_64",
"fence-agents-vmware-vcloud.x86_64",
"fence-agents-vmware.x86_64",
"fence-agents-wti.x86_64",
"fence-agents-xenapi.x86_64",
"fence-agents-zvm.x86_64",
"file-libs.x86_64",
"file.x86_64",
"filesystem.x86_64",
"findutils.x86_64",
"fipscheck-lib.x86_64",
"fipscheck.x86_64",
"firefox.x86_64",
"firewalld-filesystem.noarch",
"firewalld.noarch",
"flac-libs.x86_64",
"flatpak-libs.x86_64",
"flatpak.x86_64",
"fontconfig.x86_64",
"fontpackages-filesystem.noarch",
"fpaste.noarch",
"fprintd-pam.x86_64",
"fprintd.x86_64",
"freetype.x86_64",
"fribidi.x86_64",
"fros.noarch",
"fuse-common.x86_64",
"fuse-libs.x86_64",
"fuse.x86_64",
"fwupd-labels.x86_64",
"fwupd.x86_64",
"fwupdate-efi.x86_64",
"fwupdate-libs.x86_64",
"gawk.x86_64",
"gc.x86_64",
"gcc.x86_64",
"gcr.x86_64",
"gdb-headless.x86_64",
"gdbm-libs.x86_64",
"gdbm.x86_64",
"gdisk.x86_64",
"gdk-pixbuf2-modules.x86_64",
"gdk-pixbuf2.x86_64",
"gdm.x86_64",
"genisoimage.x86_64",
"geoclue2-libs.x86_64",
"geoclue2.x86_64",
"geocode-glib.x86_64",
"gettext-libs.x86_64",
"gettext.x86_64",
"gfbgraph.x86_64",
"ghc-X11.x86_64",
"ghc-array.x86_64",
"ghc-base.x86_64",
"ghc-bytestring.x86_64",
"ghc-containers.x86_64",
"ghc-data-default-class.x86_64",
"ghc-data-default-instances-containers.x86_64",
"ghc-data-default-instances-dlist.x86_64",
"ghc-data-default-instances-old-locale.x86_64",
"ghc-data-default.x86_64",
"ghc-deepseq.x86_64",
"ghc-directory.x86_64",
"ghc-dlist.x86_64",
"ghc-extensible-exceptions.x86_64",
"ghc-filepath.x86_64",
"ghc-mtl.x86_64",
"ghc-old-locale.x86_64",
"ghc-process.x86_64",
"ghc-setlocale.x86_64",
"ghc-time.x86_64",
"ghc-transformers.x86_64",
"ghc-unix.x86_64",
"ghc-utf8-string.x86_64",
"ghc-xmonad.x86_64",
"giflib.x86_64",
"gjs.x86_64",
"glib-networking.x86_64",
"glib2.x86_64",
"glibc-all-langpacks.x86_64",
"glibc-common.x86_64",
"glibc-devel.x86_64",
"glibc-headers.x86_64",
"glibc.x86_64",
"glibmm24.x86_64",
"glusterfs-api.x86_64",
"glusterfs-cli.x86_64",
"glusterfs-client-xlators.x86_64",
"glusterfs-fuse.x86_64",
"glusterfs-libs.x86_64",
"glusterfs.x86_64",
"glx-utils.x86_64",
"gmime30.x86_64",
"gmp.x86_64",
"gnome-autoar.x86_64",
"gnome-backgrounds.noarch",
"gnome-bluetooth-libs.x86_64",
"gnome-bluetooth.x86_64",
"gnome-calculator.x86_64",
"gnome-characters.x86_64",
"gnome-classic-session.noarch",
"gnome-clocks.x86_64",
"gnome-color-manager.x86_64",
"gnome-control-center-filesystem.noarch",
"gnome-control-center.x86_64",
"gnome-desktop3.x86_64",
"gnome-disk-utility.x86_64",
"gnome-documents-libs.x86_64",
"gnome-documents.x86_64",
"gnome-font-viewer.x86_64",
"gnome-icon-theme.noarch",
"gnome-keyring-pam.x86_64",
"gnome-keyring.x86_64",
"gnome-logs.x86_64",
"gnome-menus.x86_64",
"gnome-online-accounts.x86_64",
"gnome-online-miners.x86_64",
"gnome-screenshot.x86_64",
"gnome-session-wayland-session.x86_64",
"gnome-session-xsession.x86_64",
"gnome-session.x86_64",
"gnome-settings-daemon.x86_64",
"gnome-shell-extension-alternate-tab.noarch",
"gnome-shell-extension-apps-menu.noarch",
"gnome-shell-extension-common.noarch",
"gnome-shell-extension-launch-new-instance.noarch",
"gnome-shell-extension-places-menu.noarch",
"gnome-shell-extension-window-list.noarch",
"gnome-shell.x86_64",
"gnome-software.x86_64",
"gnome-system-monitor.x86_64",
"gnome-terminal.x86_64",
"gnome-themes-extra.x86_64",
"gnome-themes.noarch",
"gnome-user-docs.noarch",
"gnome-user-share.x86_64",
"gnu-free-fonts-common.noarch",
"gnu-free-mono-fonts.noarch",
"gnu-free-sans-fonts.noarch",
"gnu-free-serif-fonts.noarch",
"gnupg.x86_64",
"gnupg2.x86_64",
"gnutls-dane.x86_64",
"gnutls-utils.x86_64",
"gnutls.x86_64",
"gobject-introspection.x86_64",
"gom.x86_64",
"google-droid-sans-fonts.noarch",
"google-noto-emoji-color-fonts.noarch",
"google-noto-emoji-fonts.noarch",
"google-noto-fonts-common.noarch",
"google-noto-sans-lisu-fonts.noarch",
"google-noto-sans-mandaic-fonts.noarch",
"google-noto-sans-meetei-mayek-fonts.noarch",
"google-noto-sans-sinhala-fonts.noarch",
"google-noto-sans-tagalog-fonts.noarch",
"google-noto-sans-tai-tham-fonts.noarch",
"google-noto-sans-tai-viet-fonts.noarch",
"gpgme.x86_64",
"gpm-libs.x86_64",
"gpm.x86_64",
"graphite2.x86_64",
"grep.x86_64",
"grilo-plugins.x86_64",
"grilo.x86_64",
"groff-base.x86_64",
"grub2-common.noarch",
"grub2-pc-modules.noarch",
"grub2-pc.x86_64",
"grub2-tools-extra.x86_64",
"grub2-tools-minimal.x86_64",
"grub2-tools.x86_64",
"grubby.x86_64",
"gsettings-desktop-schemas.x86_64",
"gsm.x86_64",
"gsound.x86_64",
"gspell.x86_64",
"gssdp.x86_64",
"gssproxy.x86_64",
"gstreamer1-plugins-base.x86_64",
"gstreamer1.x86_64",
"gtk-update-icon-cache.x86_64",
"gtk-vnc2.x86_64",
"gtk2-engines.x86_64",
"gtk2.x86_64",
"gtk3.x86_64",
"gtkmm30.x86_64",
"gtksourceview3.x86_64",
"guile.x86_64",
"gupnp-av.x86_64",
"gupnp-dlna.x86_64",
"gupnp.x86_64",
"gvfs-client.x86_64",
"gvfs.x86_64",
"gvnc.x86_64",
"gzip.x86_64",
"harfbuzz-icu.x86_64",
"harfbuzz.x86_64",
"hicolor-icon-theme.noarch",
"hostname.x86_64",
"htop.x86_64",
"http-parser.x86_64",
"httpd-filesystem.noarch",
"httpd-tools.x86_64",
"httpd.x86_64",
"hunspell-en-US.noarch",
"hunspell.x86_64",
"hwdata.noarch",
"hyperv-daemons-license.noarch",
"hyperv-daemons.x86_64",
"hypervfcopyd.x86_64",
"hypervkvpd.x86_64",
"hypervvssd.x86_64",
"hyphen.x86_64",
"i3.x86_64",
"i3status.x86_64",
"ibus-gtk2.x86_64",
"ibus-gtk3.x86_64",
"ibus-libs.x86_64",
"ibus-setup.noarch",
"ibus.x86_64",
"iio-sensor-proxy.x86_64",
"ima-evm-utils.x86_64",
"imlib2.x86_64",
"info.x86_64",
"initscripts.x86_64",
"ipcalc.x86_64",
"ipmitool.x86_64",
"iproute.x86_64",
"ipset-libs.x86_64",
"ipset.x86_64",
"iptables-libs.x86_64",
"iptables.x86_64",
"iptstate.x86_64",
"iputils.x86_64",
"ipw2100-firmware.noarch",
"ipw2200-firmware.noarch",
"ipxe-roms-qemu.noarch",
"irqbalance.x86_64",
"iscsi-initiator-utils-iscsiuio.x86_64",
"iscsi-initiator-utils.x86_64",
"isdn4k-utils-data.noarch",
"isdn4k-utils.x86_64",
"isl.x86_64",
"isns-utils-libs.x86_64",
"iso-codes.noarch",
"iw.x86_64",
"iwl100-firmware.noarch",
"iwl1000-firmware.noarch",
"iwl105-firmware.noarch",
"iwl135-firmware.noarch",
"iwl2000-firmware.noarch",
"iwl2030-firmware.noarch",
"iwl3160-firmware.noarch",
"iwl3945-firmware.noarch",
"iwl4965-firmware.noarch",
"iwl5000-firmware.noarch",
"iwl5150-firmware.noarch",
"iwl6000-firmware.noarch",
"iwl6000g2a-firmware.noarch",
"iwl6000g2b-firmware.noarch",
"iwl6050-firmware.noarch",
"iwl7260-firmware.noarch",
"jansson.x86_64",
"jasper-libs.x86_64",
"jbig2dec-libs.x86_64",
"jbigkit-libs.x86_64",
"jimtcl.x86_64",
"jomolhari-fonts.noarch",
"json-c.x86_64",
"json-glib.x86_64",
"julietaula-montserrat-fonts.noarch",
"jwhois.x86_64",
"kbd-legacy.noarch",
"kbd-misc.noarch",
"kbd.x86_64",
"kernel-core.x86_64",
"kernel-headers.x86_64",
"kernel-modules.x86_64",
"kernel.x86_64",
"kexec-tools.x86_64",
"keyutils-libs.x86_64",
"keyutils.x86_64",
"khmeros-base-fonts.noarch",
"khmeros-fonts-common.noarch",
"kmod-libs.x86_64",
"kmod.x86_64",
"kpartx.x86_64",
"krb5-libs.x86_64",
"lcms2.x86_64",
"less.x86_64",
"libICE.x86_64",
"libSM.x86_64",
"libX11-common.noarch",
"libX11-xcb.x86_64",
"libX11.x86_64",
"libXau.x86_64",
"libXaw.x86_64",
"libXcomposite.x86_64",
"libXcursor.x86_64",
"libXdamage.x86_64",
"libXdmcp.x86_64",
"libXext.x86_64",
"libXfixes.x86_64",
"libXfont2.x86_64",
"libXft.x86_64",
"libXi.x86_64",
"libXinerama.x86_64",
"libXmu.x86_64",
"libXpm.x86_64",
"libXrandr.x86_64",
"libXrender.x86_64",
"libXt.x86_64",
"libXtst.x86_64",
"libXv.x86_64",
"libXvMC.x86_64",
"libXxf86dga.x86_64",
"libXxf86misc.x86_64",
"libXxf86vm.x86_64",
"libacl.x86_64",
"libaio.x86_64",
"libappstream-glib.x86_64",
"libarchive.x86_64",
"libargon2.x86_64",
"libassuan.x86_64",
"libasyncns.x86_64",
"libatasmart.x86_64",
"libatomic_ops.x86_64",
"libattr.x86_64",
"libbabeltrace.x86_64",
"libbasicobjects.x86_64",
"libblkid.x86_64",
"libblockdev-crypto.x86_64",
"libblockdev-fs.x86_64",
"libblockdev-loop.x86_64",
"libblockdev-mdraid.x86_64",
"libblockdev-part.x86_64",
"libblockdev-swap.x86_64",
"libblockdev-utils.x86_64",
"libblockdev.x86_64",
"libbluray.x86_64",
"libbytesize.x86_64",
"libcacard.x86_64",
"libcanberra-gtk3.x86_64",
"libcanberra.x86_64",
"libcap-ng.x86_64",
"libcap.x86_64",
"libcdio-paranoia.x86_64",
"libcdio.x86_64",
"libcgroup.x86_64",
"libcollection.x86_64",
"libcom_err.x86_64",
"libcomps.x86_64",
"libconfuse.x86_64",
"libcroco.x86_64",
"libcue.x86_64",
"libcurl.x86_64",
"libdaemon.x86_64",
"libdatrie.x86_64",
"libdb-utils.x86_64",
"libdb.x86_64",
"libdhash.x86_64",
"libdmapsharing.x86_64",
"libdmx.x86_64",
"libdnet.x86_64",
"libdnf.x86_64",
"libdrm.x86_64",
"libdvdread.x86_64",
"libedit.x86_64",
"libepoxy.x86_64",
"liberation-fonts-common.noarch",
"liberation-mono-fonts.noarch",
"liberation-sans-fonts.noarch",
"liberation-serif-fonts.noarch",
"libertas-usb8388-firmware.noarch",
"libestr.x86_64",
"libev.x86_64",
"libevdev.x86_64",
"libevent.x86_64",
"libexif.x86_64",
"libfastjson.x86_64",
"libfdisk.x86_64",
"libfdt.x86_64",
"libffi.x86_64",
"libfontenc.x86_64",
"libfprint.x86_64",
"libgcab1.x86_64",
"libgcc.x86_64",
"libgcrypt.x86_64",
"libgdata.x86_64",
"libgee.x86_64",
"libgepub.x86_64",
"libgexiv2.x86_64",
"libglvnd-egl.x86_64",
"libglvnd-gles.x86_64",
"libglvnd-glx.x86_64",
"libglvnd.x86_64",
"libgnomekbd.x86_64",
"libgomp.x86_64",
"libgpg-error.x86_64",
"libgrss.x86_64",
"libgs.x86_64",
"libgsf.x86_64",
"libgtop2.x86_64",
"libgudev.x86_64",
"libgusb.x86_64",
"libgweather.x86_64",
"libgxps.x86_64",
"libibverbs.x86_64",
"libical.x86_64",
"libicu.x86_64",
"libidn.x86_64",
"libidn2.x86_64",
"libijs.x86_64",
"libimobiledevice.x86_64",
"libini_config.x86_64",
"libinput.x86_64",
"libipa_hbac.x86_64",
"libipt.x86_64",
"libiptcdata.x86_64",
"libiscsi.x86_64",
"libjpeg-turbo.x86_64",
"libksba.x86_64",
"libldb.x86_64",
"liblogging-stdlog.x86_64",
"libmbim-utils.x86_64",
"libmbim.x86_64",
"libmcpp.x86_64",
"libmediaart.x86_64",
"libmetalink.x86_64",
"libmnl.x86_64",
"libmodman.x86_64",
"libmodulemd.x86_64",
"libmount.x86_64",
"libmpc.x86_64",
"libmspack.x86_64",
"libndp.x86_64",
"libnetfilter_conntrack.x86_64",
"libnfnetlink.x86_64",
"libnfs.x86_64",
"libnfsidmap.x86_64",
"libnghttp2.x86_64",
"libnl3-cli.x86_64",
"libnl3.x86_64",
"libnma.x86_64",
"libnotify.x86_64",
"libnsl2.x86_64",
"liboauth.x86_64",
"libogg.x86_64",
"libosinfo.x86_64",
"libpaper.x86_64",
"libpath_utils.x86_64",
"libpcap.x86_64",
"libpciaccess.x86_64",
"libphodav.x86_64",
"libpipeline.x86_64",
"libpkgconf.x86_64",
"libplist.x86_64",
"libpng.x86_64",
"libproxy.x86_64",
"libpsl.x86_64",
"libpwquality.x86_64",
"libqb.x86_64",
"libqmi-utils.x86_64",
"libqmi.x86_64",
"libquvi-scripts.noarch",
"libquvi.x86_64",
"librabbitmq.x86_64",
"librados2.x86_64",
"librbd1.x86_64",
"librdmacm.x86_64",
"libref_array.x86_64",
"libreofficekit.x86_64",
"librepo.x86_64",
"libreport-cli.x86_64",
"libreport-fedora.x86_64",
"libreport-filesystem.x86_64",
"libreport-gtk.x86_64",
"libreport-plugin-bugzilla.x86_64",
"libreport-plugin-kerneloops.x86_64",
"libreport-plugin-logger.x86_64",
"libreport-plugin-reportuploader.x86_64",
"libreport-plugin-systemd-journal.x86_64",
"libreport-plugin-ureport.x86_64",
"libreport-web.x86_64",
"libreport.x86_64",
"librsvg2.x86_64",
"libsamplerate.x86_64",
"libseccomp.x86_64",
"libsecret.x86_64",
"libselinux-utils.x86_64",
"libselinux.x86_64",
"libsemanage.x86_64",
"libsepol.x86_64",
"libsigc++20.x86_64",
"libsigsegv.x86_64",
"libsmartcols.x86_64",
"libsmbclient.x86_64",
"libsmbios.x86_64",
"libsndfile.x86_64",
"libsolv.x86_64",
"libsoup.x86_64",
"libspectre.x86_64",
"libss.x86_64",
"libssh.x86_64",
"libssh2.x86_64",
"libsss_autofs.x86_64",
"libsss_certmap.x86_64",
"libsss_idmap.x86_64",
"libsss_nss_idmap.x86_64",
"libsss_sudo.x86_64",
"libstdc++.x86_64",
"libstemmer.x86_64",
"libsysfs.x86_64",
"libtalloc.x86_64",
"libtar.x86_64",
"libtasn1.x86_64",
"libtdb.x86_64",
"libteam.x86_64",
"libtevent.x86_64",
"libthai.x86_64",
"libtheora.x86_64",
"libtiff.x86_64",
"libtirpc.x86_64",
"libtool-ltdl.x86_64",
"libudisks2.x86_64",
"libunistring.x86_64",
"libunwind.x86_64",
"libusal.x86_64",
"libusb.x86_64",
"libusbmuxd.x86_64",
"libusbx.x86_64",
"libuser.x86_64",
"libutempter.x86_64",
"libuuid.x86_64",
"libverto-libev.x86_64",
"libverto.x86_64",
"libvirt-bash-completion.x86_64",
"libvirt-client.x86_64",
"libvirt-daemon-config-network.x86_64",
"libvirt-daemon-config-nwfilter.x86_64",
"libvirt-daemon-driver-interface.x86_64",
"libvirt-daemon-driver-libxl.x86_64",
"libvirt-daemon-driver-lxc.x86_64",
"libvirt-daemon-driver-network.x86_64",
"libvirt-daemon-driver-nodedev.x86_64",
"libvirt-daemon-driver-nwfilter.x86_64",
"libvirt-daemon-driver-qemu.x86_64",
"libvirt-daemon-driver-secret.x86_64",
"libvirt-daemon-driver-storage-core.x86_64",
"libvirt-daemon-driver-storage-disk.x86_64",
"libvirt-daemon-driver-storage-gluster.x86_64",
"libvirt-daemon-driver-storage-iscsi.x86_64",
"libvirt-daemon-driver-storage-logical.x86_64",
"libvirt-daemon-driver-storage-mpath.x86_64",
"libvirt-daemon-driver-storage-rbd.x86_64",
"libvirt-daemon-driver-storage-scsi.x86_64",
"libvirt-daemon-driver-storage-sheepdog.x86_64",
"libvirt-daemon-driver-storage-zfs.x86_64",
"libvirt-daemon-driver-storage.x86_64",
"libvirt-daemon-driver-uml.x86_64",
"libvirt-daemon-driver-vbox.x86_64",
"libvirt-daemon-driver-xen.x86_64",
"libvirt-daemon-kvm.x86_64",
"libvirt-daemon.x86_64",
"libvirt-docs.x86_64",
"libvirt-glib.x86_64",
"libvirt-libs.x86_64",
"libvirt.x86_64",
"libvisual.x86_64",
"libvorbis.x86_64",
"libvpx.x86_64",
"libwacom-data.noarch",
"libwacom.x86_64",
"libwayland-client.x86_64",
"libwayland-cursor.x86_64",
"libwayland-egl.x86_64",
"libwayland-server.x86_64",
"libwbclient.x86_64",
"libwebp.x86_64",
"libwsman1.x86_64",
"libwvstreams.x86_64",
"libxcb.x86_64",
"libxcrypt-devel.x86_64",
"libxcrypt.x86_64",
"libxdg-basedir.x86_64",
"libxkbcommon-x11.x86_64",
"libxkbcommon.x86_64",
"libxkbfile.x86_64",
"libxklavier.x86_64",
"libxml2.x86_64",
"libxshmfence.x86_64",
"libxslt.x86_64",
"libyaml.x86_64",
"libzapojit.x86_64",
"libzstd.x86_64",
"lightdm-gobject.x86_64",
"lightdm-gtk.x86_64",
"lightdm.x86_64",
"linux-atm-libs.x86_64",
"linux-atm.x86_64",
"linux-firmware.noarch",
"linuxconsoletools.x86_64",
"llvm-libs.x86_64",
"lm_sensors-libs.x86_64",
"lm_sensors.x86_64",
"lockdev.x86_64",
"logrotate.x86_64",
"lohit-assamese-fonts.noarch",
"lohit-bengali-fonts.noarch",
"lohit-devanagari-fonts.noarch",
"lohit-gujarati-fonts.noarch",
"lohit-gurmukhi-fonts.noarch",
"lohit-kannada-fonts.noarch",
"lohit-odia-fonts.noarch",
"lohit-tamil-fonts.noarch",
"lohit-telugu-fonts.noarch",
"lrzsz.x86_64",
"lsof.x86_64",
"lttng-ust.x86_64",
"lua-expat.x86_64",
"lua-json.noarch",
"lua-lgi.x86_64",
"lua-libs.x86_64",
"lua-lpeg.x86_64",
"lua-socket.x86_64",
"lua.x86_64",
"lvm2-libs.x86_64",
"lvm2.x86_64",
"lz4-libs.x86_64",
"lz4.x86_64",
"lzo.x86_64",
"lzop.x86_64",
"mailcap.noarch",
"make.x86_64",
"man-db.x86_64",
"man-pages.noarch",
"mcelog.x86_64",
"mcpp.x86_64",
"mdadm.x86_64",
"mesa-dri-drivers.x86_64",
"mesa-filesystem.x86_64",
"mesa-libEGL.x86_64",
"mesa-libGL.x86_64",
"mesa-libgbm.x86_64",
"mesa-libglapi.x86_64",
"mesa-libxatracker.x86_64",
"metacity.x86_64",
"microcode_ctl.x86_64",
"minicom.x86_64",
"mlocate.x86_64",
"mobile-broadband-provider-info.noarch",
"mod_dnssd.x86_64",
"mod_http2.x86_64",
"mokutil.x86_64",
"mozilla-filesystem.x86_64",
"mozjs52.x86_64",
"mpfr.x86_64",
"mtdev.x86_64",
"mtr.x86_64",
"mutter.x86_64",
"nano.x86_64",
"nautilus-extensions.x86_64",
"nautilus.x86_64",
"naver-nanum-fonts-common.noarch",
"naver-nanum-gothic-fonts.noarch",
"ncurses-base.noarch",
"ncurses-libs.x86_64",
"ncurses.x86_64",
"net-snmp-libs.x86_64",
"net-snmp-utils.x86_64",
"net-tools.x86_64",
"netcf-libs.x86_64",
"nettle.x86_64",
"newt.x86_64",
"nfs-utils.x86_64",
"nm-connection-editor.x86_64",
"nmap-ncat.x86_64",
"nmap.x86_64",
"npth.x86_64",
"nspr.x86_64",
"nss-pem.x86_64",
"nss-softokn-freebl.x86_64",
"nss-softokn.x86_64",
"nss-sysinit.x86_64",
"nss-tools.x86_64",
"nss-util.x86_64",
"nss.x86_64",
"ntfs-3g.x86_64",
"ntfsprogs.x86_64",
"numactl-libs.x86_64",
"numad.x86_64",
"open-vm-tools-desktop.x86_64",
"open-vm-tools.x86_64",
"openbox-libs.x86_64",
"openbox.x86_64",
"openhpi-libs.x86_64",
"openhpi.x86_64",
"openjpeg2.x86_64",
"openldap.x86_64",
"opensc.x86_64",
"openssh-clients.x86_64",
"openssh-server.x86_64",
"openssh.x86_64",
"openssl-libs.x86_64",
"openssl.x86_64",
"openwsman-python3.x86_64",
"opus.x86_64",
"orc.x86_64",
"os-prober.x86_64",
"osinfo-db-tools.x86_64",
"osinfo-db.noarch",
"ostree-libs.x86_64",
"ostree.x86_64",
"overpass-fonts.noarch",
"p11-kit-trust.x86_64",
"p11-kit.x86_64",
"pacemaker-cli.x86_64",
"pacemaker-cluster-libs.x86_64",
"pacemaker-libs.x86_64",
"pacemaker.x86_64",
"paktype-naskh-basic-fonts.noarch",
"pam.x86_64",
"pam_krb5.x86_64",
"pango.x86_64",
"pangomm.x86_64",
"paratype-pt-sans-fonts.noarch",
"parted.x86_64",
"passwd.x86_64",
"passwdqc-lib.x86_64",
"passwdqc.x86_64",
"pciutils-libs.x86_64",
"pciutils.x86_64",
"pcre.x86_64",
"pcre2.x86_64",
"pcs.x86_64",
"pcsc-lite-ccid.x86_64",
"pcsc-lite-libs.x86_64",
"pcsc-lite.x86_64",
"perl-AnyEvent-I3.noarch",
"perl-AnyEvent.x86_64",
"perl-CGI.noarch",
"perl-Carp.noarch",
"perl-Compress-Raw-Bzip2.x86_64",
"perl-Compress-Raw-Zlib.x86_64",
"perl-DBD-Pg.x86_64",
"perl-DBI.x86_64",
"perl-Data-Dump.noarch",
"perl-Data-Dumper.x86_64",
"perl-Digest-HMAC.noarch",
"perl-Digest-MD5.x86_64",
"perl-Digest-SHA.x86_64",
"perl-Digest-SHA1.x86_64",
"perl-Digest.noarch",
"perl-Email-Find.noarch",
"perl-Email-Valid.noarch",
"perl-Encode-Locale.noarch",
"perl-Encode.x86_64",
"perl-Errno.x86_64",
"perl-Exporter.noarch",
"perl-File-Listing.noarch",
"perl-File-Path.noarch",
"perl-File-Temp.noarch",
"perl-Filter.x86_64",
"perl-Getopt-Long.noarch",
"perl-Guard.x86_64",
"perl-HTML-FromText.noarch",
"perl-HTML-Parser.x86_64",
"perl-HTML-Strip.x86_64",
"perl-HTML-Tagset.noarch",
"perl-HTTP-Cookies.noarch",
"perl-HTTP-Date.noarch",
"perl-HTTP-Message.noarch",
"perl-HTTP-Negotiate.noarch",
"perl-HTTP-Tiny.noarch",
"perl-IO-Compress.noarch",
"perl-IO-HTML.noarch",
"perl-IO-Socket-IP.noarch",
"perl-IO-Socket-SSL.noarch",
"perl-IO.x86_64",
"perl-JSON-XS.x86_64",
"perl-JSON.noarch",
"perl-LWP-MediaTypes.noarch",
"perl-Log-Journald.x86_64",
"perl-MIME-Base64.x86_64",
"perl-MailTools.noarch",
"perl-Math-BigInt.noarch",
"perl-Math-Complex.noarch",
"perl-Mozilla-CA.noarch",
"perl-NTLM.noarch",
"perl-Net-HTTP.noarch",
"perl-Net-SMTP-SSL.noarch",
"perl-Net-SSH2.x86_64",
"perl-Net-SSLeay.x86_64",
"perl-NetAddr-IP.x86_64",
"perl-PathTools.x86_64",
"perl-Pod-Escapes.noarch",
"perl-Pod-Perldoc.noarch",
"perl-Pod-Simple.noarch",
"perl-Pod-Usage.noarch",
"perl-Proc-Simple.noarch",
"perl-Scalar-List-Utils.x86_64",
"perl-Socket.x86_64",
"perl-Socket6.x86_64",
"perl-Storable.x86_64",
"perl-Sys-Syslog.x86_64",
"perl-Task-Weaken.noarch",
"perl-Term-ANSIColor.noarch",
"perl-Term-Cap.noarch",
"perl-TermReadKey.x86_64",
"perl-Text-ParseWords.noarch",
"perl-Text-Tabs+Wrap.noarch",
"perl-Time-HiRes.x86_64",
"perl-Time-Local.noarch",
"perl-TimeDate.noarch",
"perl-Try-Tiny.noarch",
"perl-Types-Serialiser.noarch",
"perl-URI.noarch",
"perl-UUID-Tiny.noarch",
"perl-Unicode-Normalize.x86_64",
"perl-WWW-RobotRules.noarch",
"perl-XML-NamespaceSupport.noarch",
"perl-XML-Parser.x86_64",
"perl-XML-SAX-Base.noarch",
"perl-XML-SAX.noarch",
"perl-XML-Simple.noarch",
"perl-common-sense.x86_64",
"perl-constant.noarch",
"perl-encoding.x86_64",
"perl-interpreter.x86_64",
"perl-libnet.noarch",
"perl-libs.x86_64",
"perl-libwww-perl.noarch",
"perl-macros.x86_64",
"perl-open.noarch",
"perl-parent.noarch",
"perl-podlators.noarch",
"perl-threads-shared.x86_64",
"perl-threads.x86_64",
"perl-version.x86_64",
"pinentry-gtk.x86_64",
"pinentry.x86_64",
"pinfo.x86_64",
"pipewire-libs.x86_64",
"pipewire.x86_64",
"pixman.x86_64",
"pkgconf-m4.noarch",
"pkgconf-pkg-config.x86_64",
"pkgconf.x86_64",
"plymouth-core-libs.x86_64",
"plymouth-graphics-libs.x86_64",
"plymouth-plugin-label.x86_64",
"plymouth-plugin-two-step.x86_64",
"plymouth-scripts.x86_64",
"plymouth-system-theme.x86_64",
"plymouth-theme-charge.x86_64",
"plymouth.x86_64",
"policycoreutils-python-utils.noarch",
"policycoreutils.x86_64",
"polkit-libs.x86_64",
"polkit-pkla-compat.x86_64",
"polkit.x86_64",
"poppler-data.noarch",
"poppler-glib.x86_64",
"poppler.x86_64",
"popt.x86_64",
"postgresql-contrib.x86_64",
"postgresql-libs.x86_64",
"postgresql-plperl.x86_64",
"postgresql-server.x86_64",
"postgresql.x86_64",
"ppp.x86_64",
"procps-ng.x86_64",
"psacct.x86_64",
"psmisc.x86_64",
"publicsuffix-list-dafsa.noarch",
"pulseaudio-libs-glib2.x86_64",
"pulseaudio-libs.x86_64",
"pulseaudio-module-bluetooth.x86_64",
"pulseaudio.x86_64",
"pycryptopp.x86_64",
"python-openstackclient-lang.noarch",
"python-oslo-i18n-lang.noarch",
"python-oslo-utils-lang.noarch",
"python2-SecretStorage.noarch",
"python2-appdirs.noarch",
"python2-asn1crypto.noarch",
"python2-babel.noarch",
"python2-backports-ssl_match_hostname.noarch",
"python2-backports.x86_64",
"python2-beaker.noarch",
"python2-cairo.x86_64",
"python2-cffi.x86_64",
"python2-chardet.noarch",
"python2-cinderclient.noarch",
"python2-cliff.noarch",
"python2-cmd2.noarch",
"python2-cryptography.x86_64",
"python2-dbus.x86_64",
"python2-debtcollector.noarch",
"python2-decorator.noarch",
"python2-deprecation.noarch",
"python2-dogpile-cache.noarch",
"python2-entrypoints.noarch",
"python2-enum34.noarch",
"python2-extras.noarch",
"python2-fixtures.noarch",
"python2-funcsigs.noarch",
"python2-futures.noarch",
"python2-glanceclient.noarch",
"python2-gobject-base.x86_64",
"python2-gobject.x86_64",
"python2-idna.noarch",
"python2-ipaddr.noarch",
"python2-ipaddress.noarch",
"python2-iso8601.noarch",
"python2-jmespath.noarch",
"python2-jsonpatch.noarch",
"python2-jsonpointer.noarch",
"python2-jsonschema.noarch",
"python2-keyring.noarch",
"python2-keystoneauth1.noarch",
"python2-keystoneclient.noarch",
"python2-libs.x86_64",
"python2-libvirt.x86_64",
"python2-libxml2.x86_64",
"python2-linecache2.noarch",
"python2-mako.noarch",
"python2-markupsafe.x86_64",
"python2-mimeparse.noarch",
"python2-monotonic.noarch",
"python2-msgpack.x86_64",
"python2-munch.noarch",
"python2-netaddr.noarch",
"python2-netifaces.x86_64",
"python2-neutronclient.noarch",
"python2-novaclient.noarch",
"python2-openstackclient.noarch",
"python2-openstacksdk.noarch",
"python2-os-client-config.noarch",
"python2-os-service-types.noarch",
"python2-osc-lib.noarch",
"python2-oslo-config.noarch",
"python2-oslo-i18n.noarch",
"python2-oslo-serialization.noarch",
"python2-oslo-utils.noarch",
"python2-paste.noarch",
"python2-pbr.noarch",
"python2-pip.noarch",
"python2-ply.noarch",
"python2-positional.noarch",
"python2-prettytable.noarch",
"python2-pyOpenSSL.noarch",
"python2-pycparser.noarch",
"python2-pyparsing.noarch",
"python2-pysocks.noarch",
"python2-pytz.noarch",
"python2-pyyaml.x86_64",
"python2-repoze-lru.noarch",
"python2-requests.noarch",
"python2-requestsexceptions.noarch",
"python2-rfc3986.noarch",
"python2-setuptools.noarch",
"python2-simplejson.x86_64",
"python2-six.noarch",
"python2-stevedore.noarch",
"python2-tempita.noarch",
"python2-testtools.noarch",
"python2-traceback2.noarch",
"python2-unicodecsv.noarch",
"python2-unittest2.noarch",
"python2-urllib3.noarch",
"python2-warlock.noarch",
"python2-wrapt.x86_64",
"python2-xpyb.x86_64",
"python2.x86_64",
"python3-IPy.noarch",
"python3-SecretStorage.noarch",
"python3-abrt-addon.x86_64",
"python3-abrt.x86_64",
"python3-adal.noarch",
"python3-asn1crypto.noarch",
"python3-audit.x86_64",
"python3-augeas.noarch",
"python3-azure-sdk.noarch",
"python3-beautifulsoup4.noarch",
"python3-bind.noarch",
"python3-boto3.noarch",
"python3-botocore.noarch",
"python3-cairo.x86_64",
"python3-cairocffi.noarch",
"python3-cffi.x86_64",
"python3-chardet.noarch",
"python3-clufter.noarch",
"python3-cryptography.x86_64",
"python3-cssselect.noarch",
"python3-dateutil.noarch",
"python3-dbus.x86_64",
"python3-decorator.noarch",
"python3-dmidecode.x86_64",
"python3-dnf-plugins-core.noarch",
"python3-dnf.noarch",
"python3-docutils.noarch",
"python3-entrypoints.noarch",
"python3-fasteners.noarch",
"python3-firewall.noarch",
"python3-gflags.noarch",
"python3-gobject-base.x86_64",
"python3-gobject.x86_64",
"python3-google-api-client.noarch",
"python3-gpg.x86_64",
"python3-hawkey.x86_64",
"python3-html5lib.noarch",
"python3-httplib2.noarch",
"python3-idna.noarch",
"python3-iniparse.noarch",
"python3-isodate.noarch",
"python3-jmespath.noarch",
"python3-jwt.noarch",
"python3-keyring.noarch",
"python3-libcomps.x86_64",
"python3-librepo.x86_64",
"python3-libreport.x86_64",
"python3-libs.x86_64",
"python3-libselinux.x86_64",
"python3-libsemanage.x86_64",
"python3-libxml2.x86_64",
"python3-lxml.x86_64",
"python3-msrest.noarch",
"python3-msrestazure.noarch",
"python3-oauth2client.noarch",
"python3-oauthlib.noarch",
"python3-pexpect.noarch",
"python3-pip.noarch",
"python3-ply.noarch",
"python3-policycoreutils.noarch",
"python3-ptyprocess.noarch",
"python3-pyOpenSSL.noarch",
"python3-pyasn1-modules.noarch",
"python3-pyasn1.noarch",
"python3-pycparser.noarch",
"python3-pycurl.x86_64",
"python3-pydbus.noarch",
"python3-pysocks.noarch",
"python3-pyxdg.noarch",
"python3-requests-oauthlib.noarch",
"python3-requests.noarch",
"python3-rpm.x86_64",
"python3-rsa.noarch",
"python3-s3transfer.noarch",
"python3-setools.x86_64",
"python3-setuptools.noarch",
"python3-six.noarch",
"python3-slip-dbus.noarch",
"python3-slip.noarch",
"python3-smartcols.x86_64",
"python3-sssdconfig.noarch",
"python3-suds.noarch",
"python3-systemd.x86_64",
"python3-trollius.noarch",
"python3-uritemplate.noarch",
"python3-urllib3.noarch",
"python3-webencodings.noarch",
"python3-xcffib.noarch",
"python3.x86_64",
"qemu-block-curl.x86_64",
"qemu-block-dmg.x86_64",
"qemu-block-gluster.x86_64",
"qemu-block-iscsi.x86_64",
"qemu-block-nfs.x86_64",
"qemu-block-rbd.x86_64",
"qemu-block-ssh.x86_64",
"qemu-common.x86_64",
"qemu-img.x86_64",
"qemu-kvm-core.x86_64",
"qemu-kvm.x86_64",
"qemu-system-x86-core.x86_64",
"qemu-system-x86.x86_64",
"qrencode-libs.x86_64",
"qtile.noarch",
"quota-nls.noarch",
"quota.x86_64",
"radvd.x86_64",
"ratpoison.x86_64",
"rdma-core.x86_64",
"readline.x86_64",
"realmd.x86_64",
"redhat-menus.noarch",
"resource-agents.x86_64",
"rest.x86_64",
"rlwrap.x86_64",
"rng-tools.x86_64",
"rolekit.noarch",
"rootfiles.noarch",
"rp-pppoe.x86_64",
"rpcbind.x86_64",
"rpm-build-libs.x86_64",
"rpm-libs.x86_64",
"rpm-ostree-libs.x86_64",
"rpm-plugin-selinux.x86_64",
"rpm.x86_64",
"rsync.x86_64",
"rsyslog.x86_64",
"rtkit.x86_64",
"ruby-irb.noarch",
"ruby-libs.x86_64",
"ruby.x86_64",
"rubygem-backports.noarch",
"rubygem-bigdecimal.x86_64",
"rubygem-did_you_mean.noarch",
"rubygem-ethon.noarch",
"rubygem-ffi.x86_64",
"rubygem-io-console.x86_64",
"rubygem-json.x86_64",
"rubygem-multi_json.noarch",
"rubygem-mustermann.noarch",
"rubygem-open4.noarch",
"rubygem-openssl.x86_64",
"rubygem-psych.x86_64",
"rubygem-rack-protection.noarch",
"rubygem-rack-test.noarch",
"rubygem-rack.noarch",
"rubygem-rdoc.noarch",
"rubygem-sinatra.noarch",
"rubygem-tilt.noarch",
"rubygems.noarch",
"rubypick.noarch",
"rxvt-unicode.x86_64",
"rygel.x86_64",
"samba-client-libs.x86_64",
"samba-common-libs.x86_64",
"samba-common.noarch",
"satyr.x86_64",
"sbc.x86_64",
"sbd.x86_64",
"screen.x86_64",
"seabios-bin.noarch",
"seavgabios-bin.noarch",
"sed.x86_64",
"selinux-policy-targeted.noarch",
"selinux-policy.noarch",
"setroubleshoot-plugins.noarch",
"setroubleshoot-server.x86_64",
"setroubleshoot.x86_64",
"setup.noarch",
"setuptool.x86_64",
"sg3_utils-libs.x86_64",
"sg3_utils.x86_64",
"sgabios-bin.noarch",
"shadow-utils.x86_64",
"shared-mime-info.x86_64",
"sheepdog.x86_64",
"shim-x64.x86_64",
"sil-abyssinica-fonts.noarch",
"sil-mingzat-fonts.noarch",
"sil-nuosu-fonts.noarch",
"sil-padauk-fonts.noarch",
"slang.x86_64",
"smartmontools.x86_64",
"smc-fonts-common.noarch",
"smc-meera-fonts.noarch",
"smp_utils-libs.x86_64",
"smp_utils.x86_64",
"snappy.x86_64",
"sos.noarch",
"sound-theme-freedesktop.noarch",
"soxr.x86_64",
"speexdsp.x86_64",
"spice-glib.x86_64",
"spice-gtk3.x86_64",
"spice-server.x86_64",
"spice-vdagent.x86_64",
"sqlite-libs.x86_64",
"sqlite.x86_64",
"sssd-ad.x86_64",
"sssd-client.x86_64",
"sssd-common-pac.x86_64",
"sssd-common.x86_64",
"sssd-ipa.x86_64",
"sssd-krb5-common.x86_64",
"sssd-krb5.x86_64",
"sssd-ldap.x86_64",
"sssd-nfs-idmap.x86_64",
"sssd.x86_64",
"st.x86_64",
"startup-notification.x86_64",
"stix-fonts.noarch",
"sudo.x86_64",
"switcheroo-control.x86_64",
"symlinks.x86_64",
"systemd-container.x86_64",
"systemd-libs.x86_64",
"systemd-pam.x86_64",
"systemd-udev.x86_64",
"systemd.x86_64",
"tabish-eeyek-fonts.noarch",
"taglib.x86_64",
"tar.x86_64",
"tcp_wrappers-libs.x86_64",
"tcp_wrappers.x86_64",
"tcpdump.x86_64",
"teamd.x86_64",
"telepathy-filesystem.noarch",
"telepathy-glib.x86_64",
"telepathy-logger.x86_64",
"telnet.x86_64",
"thai-scalable-fonts-common.noarch",
"thai-scalable-waree-fonts.noarch",
"tigervnc-license.noarch",
"tigervnc-server-minimal.x86_64",
"tigervnc-server.x86_64",
"time.x86_64",
"timedatex.x86_64",
"totem-pl-parser.x86_64",
"traceroute.x86_64",
"tracker-miners.x86_64",
"tracker.x86_64",
"tree.x86_64",
"tzdata.noarch",
"u2f-hidraw-policy.x86_64",
"udisks2-iscsi.x86_64",
"udisks2.x86_64",
"unbound-libs.x86_64",
"unzip.x86_64",
"upower.x86_64",
"urw-base35-bookman-fonts.noarch",
"urw-base35-c059-fonts.noarch",
"urw-base35-d050000l-fonts.noarch",
"urw-base35-fonts-common.noarch",
"urw-base35-fonts.noarch",
"urw-base35-gothic-fonts.noarch",
"urw-base35-nimbus-mono-ps-fonts.noarch",
"urw-base35-nimbus-roman-fonts.noarch",
"urw-base35-nimbus-sans-fonts.noarch",
"urw-base35-p052-fonts.noarch",
"urw-base35-standard-symbols-ps-fonts.noarch",
"urw-base35-z003-fonts.noarch",
"usb_modeswitch-data.noarch",
"usb_modeswitch.x86_64",
"usbredir.x86_64",
"usbutils.x86_64",
"usermode.x86_64",
"userspace-rcu.x86_64",
"util-linux-user.x86_64",
"util-linux.x86_64",
"uuid.x86_64",
"vconfig.x86_64",
"vim-common.x86_64",
"vim-enhanced.x86_64",
"vim-filesystem.noarch",
"vim-minimal.x86_64",
"vino.x86_64",
"virglrenderer.x86_64",
"virt-install.noarch",
"virt-manager-common.noarch",
"virt-manager.noarch",
"vlgothic-fonts.noarch",
"volume_key-libs.x86_64",
"vte-profile.x86_64",
"vte291.x86_64",
"webkit2gtk3-jsc.x86_64",
"webkit2gtk3-plugin-process-gtk2.x86_64",
"webkit2gtk3.x86_64",
"webrtc-audio-processing.x86_64",
"wget.x86_64",
"which.x86_64",
"wireless-tools.x86_64",
"woff2.x86_64",
"words.noarch",
"wpa_supplicant.x86_64",
"wvdial.x86_64",
"xcb-util-cursor.x86_64",
"xcb-util-image.x86_64",
"xcb-util-keysyms.x86_64",
"xcb-util-renderutil.x86_64",
"xcb-util-wm.x86_64",
"xcb-util-xrm.x86_64",
"xcb-util.x86_64",
"xdg-desktop-portal-gtk.x86_64",
"xdg-desktop-portal.x86_64",
"xdg-utils.noarch",
"xen-libs.x86_64",
"xen-licenses.x86_64",
"xfsprogs.x86_64",
"xkeyboard-config.noarch",
"xml-common.noarch",
"xmlrpc-c-client.x86_64",
"xmlrpc-c.x86_64",
"xmlsec1-openssl.x86_64",
"xmlsec1.x86_64",
"xmonad-basic.x86_64",
"xmonad-core.x86_64",
"xorg-x11-apps.x86_64",
"xorg-x11-drv-ati.x86_64",
"xorg-x11-drv-evdev.x86_64",
"xorg-x11-drv-fbdev.x86_64",
"xorg-x11-drv-intel.x86_64",
"xorg-x11-drv-libinput.x86_64",
"xorg-x11-drv-nouveau.x86_64",
"xorg-x11-drv-openchrome.x86_64",
"xorg-x11-drv-qxl.x86_64",
"xorg-x11-drv-vesa.x86_64",
"xorg-x11-drv-vmware.x86_64",
"xorg-x11-drv-wacom-serial-support.x86_64",
"xorg-x11-drv-wacom.x86_64",
"xorg-x11-font-utils.x86_64",
"xorg-x11-fonts-misc.noarch",
"xorg-x11-server-Xorg.x86_64",
"xorg-x11-server-Xwayland.x86_64",
"xorg-x11-server-common.x86_64",
"xorg-x11-server-utils.x86_64",
"xorg-x11-utils.x86_64",
"xorg-x11-xauth.x86_64",
"xorg-x11-xbitmaps.noarch",
"xorg-x11-xinit.x86_64",
"xorg-x11-xkb-utils.x86_64",
"xterm-resize.x86_64",
"xterm.x86_64",
"xz-libs.x86_64",
"xz.x86_64",
"yajl.x86_64",
"zd1211-firmware.noarch",
"zenity.x86_64",
"zfs-fuse.x86_64",
"zip.x86_64",
"zlib.x86_64",
];
return(0);
}