* Got tools/anvil-manage-install-target to now properly build the install repo source! Installing guests is now working, at a base level. Still need to add Anvil! specific stuff, and firewall support. Also decided to emulate the upstream 'Packages' directory structure and moved all packages in to subdirectories based on the first letter of the package.

* Bumped the default PXE menu timeout to 10 minutes.

Signed-off-by: Digimer <digimer@alteeve.ca>
main
Digimer 6 years ago
parent ea65fa08aa
commit 7f5ac528ab
  1. 1
      Anvil/Tools.pm
  2. 2
      html/skins/alteeve/pxe.txt
  3. 2
      notes
  4. 26
      share/words.xml
  5. 288
      tools/anvil-manage-install-target

@ -942,6 +942,7 @@ sub _set_paths
'chown' => "/usr/bin/chown",
cp => "/usr/bin/cp",
createdb => "/usr/bin/createdb",
createrepo => "/usr/bin/createrepo",
createuser => "/usr/bin/createuser",
dmidecode => "/usr/sbin/dmidecode",
dnf => "/usr/bin/dnf",

@ -433,7 +433,7 @@ sub system_call
default vesamenu.c32
# Time out and use the default menu option. Defined as tenths of a second.
TIMEOUT 600
TIMEOUT 6000
# Prompt the user. Set to '1' to automatically choose the default option. This
# is really meant for files matched to MAC addresses.

@ -1,5 +1,7 @@
NEXT; - Copy os/isolinux/* stuff from syslinux-nonlinux
Explanation of 'comps.xml' (package grouping) - https://pagure.io/fedora-comps
dnf -y install perl-Net-Netmask perl-Text-Diff dnf-utils hdparm lsscsi createrepo dhcp kernel-core syslinux tftp-server
Firewall config stuff.

@ -115,14 +115,11 @@ The '-y' option prevents a confirmation prompt.
<key name="message_0075">The peer: [#!variable!host!#] is now in the database. Proceeding.</key>
<key name="message_0076">The job the peer add us has been registered. It should add us as soon as it looks for new jobs (generally within a second or two).</key>
<key name="message_0077">
About to try to download aproximately: [#!variable!packages!#] packages needed for installing Anvil! machines to:
- [#!variable!directory!#].
NOTE: Please be patient!
The 'dnf' cache will be cleared to ensure the freshest RPMs are download. This will cause a delay
before output starts to appear. Once started, each RPM will be reported after it is downloaded. Large
RPMs may cause the output to appear stalled. You can verify that the download it proceeding by using
'df -s #!variable!directory!#' to verify the number is increasing.
'df -hs #!variable!directory!#' to verify the numbers are increasing.
</key>
<key name="message_0078">Output: [#!variable!line!#].</key>
<key name="message_0079">Error: [#!variable!line!#].</key>
@ -131,7 +128,7 @@ NOTE: Please be patient!
<key name="message_0081">Will boot the next device as configured in your BIOS in # second{,s}.</key>
<key name="message_0082"><![CDATA[Press the <tab> key to edit the boot parameters of the highlighted option.]]></key>
<key name="message_0083">Editing of this option is disabled.</key>
<key name="message_0084">Install a ^Striker dashboard (Fedora 28 64-bit)</key>
<key name="message_0084">^1. Install a Striker dashboard (Fedora 28 64-bit)</key>
<!-- Keep help text wrapped within the area shown directly below for the 'help' section of PXE 'default' meny entry. -->
<!-- /-----------------------------------------------------------------------------------------------------------\ -->
<key name="message_0085">
@ -143,7 +140,7 @@ NOTE: Please be patient!
*** THERE WILL BE NO FURTHER PROMPT! PROCEED CAREFULLY! ***
</key>
<!-- \-----------------------------------------------------------------------------------------------------------/ -->
<key name="message_0086">Install an Anvil! ^Node (Fedora 28 64-bit)</key>
<key name="message_0086">^2. Install an Anvil! Node (Fedora 28 64-bit)</key>
<!-- Keep help text wrapped within the area shown directly below for the 'help' section of PXE 'default' meny entry. -->
<!-- /-----------------------------------------------------------------------------------------------------------\ -->
<key name="message_0087">
@ -156,7 +153,7 @@ NOTE: Please be patient!
*** THERE WILL BE NO FURTHER PROMPT! PROCEED CAREFULLY! ***
</key>
<!-- \-----------------------------------------------------------------------------------------------------------/ -->
<key name="message_0088">Install an Anvil! ^Disaster Recover Host (Fedora 28 64-bit)</key>
<key name="message_0088">^3. Install an Anvil! Disaster Recover Host (Fedora 28 64-bit)</key>
<key name="message_0089">
<!-- Keep help text wrapped within the area shown directly below for the 'help' section of PXE 'default' meny entry. -->
<!-- /-----------------------------------------------------------------------------------------------------------\ -->
@ -219,9 +216,12 @@ NOTE: Please be patient!
<key name="message_0115">Striker Dashboard</key>
<key name="message_0116">Anvil! Node</key>
<key name="message_0117">Dsaster Recovery (DR) Host</key>
<key name="message_0118"></key>
<key name="message_0119"></key>
<key name="message_0120"></key>
<key name="message_0118">Regenerating the source repository metadata.</key>
<key name="message_0119">[ Error ] - The comps.xml file: [#!variable!comps_xml!#] was not found. This provides package group information required for Install Target guests. Is 'anvil-striker-extra' installed?</key>
<key name="message_0120">
About to try to download aproximately: [#!variable!packages!#] packages needed to:
- [#!variable!directory!#].
</key>
<key name="message_0121"></key>
<!-- Log entries -->
@ -718,6 +718,12 @@ The update appears to have not completed successfully. The output was:
<key name="error_0042">No BCN interface found. Unable to configure the install target feature yet.</key>
<key name="error_0043">Failed to write or update the file: [#!variable!file!#]. Please see the system log for more information.</key>
<key name="error_0044">This is not a configured Striker dashboard, exiting.</key>
<key name="error_0045">
[ Error ] - There was a problem downloading packages. The error was:
====
#!variable!error!#
====
</key>
<!-- These are units, words and so on used when displaying information. -->
<key name="unit_0001">Yes</key>

@ -17,6 +17,8 @@
# 3 = Failed to write or update a configuration file.
# 4 = Not a striker dashboard (or isn't yet).
# 5 = Not running as the 'root' user.
# 6 = The 'comps,xml' file provided by anvil-striker-extra was not found.
# 7 = A package failed to download to our repo
#
# TODO:
# - Support building the install target by mounting the ISO and checking /mnt/shared/incoming for needed
@ -53,7 +55,7 @@ $anvil->Get->switches;
if (($< != 0) && ($> != 0))
{
# Not root
$anvil->Log->entry({source => $THIS_FILE, line => __LINE__, level => 0, key => "error_0005"});
print $anvil->Words->string({key => "error_0005"})."\n";
$anvil->nice_exit({code => 5});
}
@ -539,10 +541,20 @@ sub update_install_source
### TODO: Make this only run once every 24 hours (track in the database;
### 'system::install-target::source-updated').
### 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}};
# 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 }});
print $anvil->Words->string({key => "message_0077", variables => {
directory => "/var/www/html/".$anvil->data->{host_os}{os_type}."/".$anvil->data->{host_os}{os_arch}."/os/Packages/*",
}})."\n";
# Loop through each letter directory
foreach my $letter (sort {$a cmp $b} keys %{$anvil->data->{packages}})
{
my $download_path = "/var/www/html/".$anvil->data->{host_os}{os_type}."/".$anvil->data->{host_os}{os_arch}."/os/Packages/".$letter;
my $array_size = @{$anvil->data->{packages}{$letter}};
$anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 2, list => {
letter => $letter,
download_path => $download_path,
array_size => $array_size,
}});
@ -550,18 +562,14 @@ sub update_install_source
{
$anvil->Storage->make_directory({debug => 2, directory => $download_path, mode => "0775"});
}
print $anvil->Words->string({key => "message_0077", variables => {
print $anvil->Words->string({key => "message_0120", 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}})
foreach my $package (sort {$a cmp $b} @{$anvil->data->{packages}{$letter}})
{
# Append the package to the active shell call.
$shell_call .= " ".$package;
@ -584,6 +592,7 @@ sub update_install_source
# Now we'll loop, printing output, until the handle dies.
my $alive = 1;
my $last_stdout_line = 0;
my $error_out = "";
while($alive)
{
# Are we still alive?
@ -613,10 +622,52 @@ sub update_install_source
$last_stdout_line = $this_stdout_line;
$anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 3, list => { last_stdout_line => $last_stdout_line }});
if ($line =~ /^Error: /)
{
$error_out .= $line."\n";
$anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 2, list => { error_out => $error_out }});
}
}
}
}
$anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 2, list => { error_out => $error_out }});
if ($error_out)
{
# Something went wrong, exit.
print $anvil->Words->string({key => "error_0045", variables => { error => $error_out }})."\n";
$anvil->nice_exit({code => 7});
}
}
# Create the repodata
print $anvil->Words->string({key => "message_0118"})."\n";
my $repo_path = "/var/www/html/".$anvil->data->{host_os}{os_type}."/".$anvil->data->{host_os}{os_arch}."/os";
my $comps_xml = $repo_path."/comps.xml";
if (not -e $comps_xml)
{
# We can't install properly without the comps.xml file, it provides grouping needed by the
# guest OS install.
print $anvil->Words->string({key => "message_0119", variables => { comps_xml => $comps_xml }})."\n";
$anvil->nice_exit({code => 6});
}
$anvil->Storage->copy_file({
debug => 2,
source_file => $comps_xml,
target_file => $repo_path."/repodata/comps.xml",
overwrite => 1,
});
if (not -e $repo_path."/repodata/comps.xml")
{
# Something appears to have happened and it failed to copy.
print $anvil->Words->string({key => "message_0119", variables => { comps_xml => $comps_xml }})."\n";
$anvil->nice_exit({code => 6});
}
$output = "";
$output = $anvil->System->call({debug => 2, shell_call => $anvil->data->{path}{exe}{createrepo}." -g ".$comps_xml." ".$repo_path });
$anvil->Log->variables({source => $THIS_FILE, line => __LINE__, level => 2, list => { output => $output }});
return(0);
}
@ -625,25 +676,13 @@ sub load_packages
{
my ($anvil) = @_;
### NOTE:
### python3-rpm, rpm, rpm-build-libs, rpm-libs, rpm-plugin-selinux, rpm-sign-libs
### TODO: These need to be sorted into groups by their first letter, and those groups need to go under Packages
# 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",
$anvil->data->{packages} = {
a => [
"aajohan-comfortaa-fonts.noarch",
"abattis-cantarell-fonts.noarch",
"abrt-addon-ccpp.x86_64",
@ -705,6 +744,8 @@ sub load_packages
"avahi-glib.x86_64",
"avahi-libs.x86_64",
"awesome.x86_64",
],
b => [
"b43-fwcutter.x86_64",
"b43-openfwwf.noarch",
"basesystem.noarch",
@ -729,6 +770,8 @@ sub load_packages
"bubblewrap.x86_64",
"bzip2-libs.x86_64",
"bzip2.x86_64",
],
c => [
"c-ares.x86_64",
"ca-certificates.noarch",
"cairo-gobject.x86_64",
@ -783,6 +826,8 @@ sub load_packages
"cyrus-sasl-lib.x86_64",
"cyrus-sasl-plain.x86_64",
"cyrus-sasl.x86_64",
],
d => [
"dbus-glib.x86_64",
"dbus-libs.x86_64",
"dbus-x11.x86_64",
@ -831,6 +876,8 @@ sub load_packages
"drbd.x86_64",
"dwm.x86_64",
"dzen2.x86_64",
],
e => [
"e2fsprogs-libs.x86_64",
"e2fsprogs.x86_64",
"ebtables.x86_64",
@ -856,6 +903,8 @@ sub load_packages
"exiv2-libs.x86_64",
"exiv2.x86_64",
"expat.x86_64",
],
f => [
"f28-backgrounds-base.noarch",
"fedora-gpg-keys.noarch",
"fedora-icon-theme.noarch",
@ -948,6 +997,8 @@ sub load_packages
"fwupd.x86_64",
"fwupdate-efi.x86_64",
"fwupdate-libs.x86_64",
],
g => [
"gawk.x86_64",
"gc.x86_64",
"gcc.x86_64",
@ -963,10 +1014,11 @@ sub load_packages
"geoclue2-libs.x86_64",
"geoclue2.x86_64",
"geocode-glib.x86_64",
"GeoIP-GeoLite-data.noarch",
"GeoIP.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",
@ -989,6 +1041,7 @@ sub load_packages
"ghc-transformers.x86_64",
"ghc-unix.x86_64",
"ghc-utf8-string.x86_64",
"ghc-X11.x86_64",
"ghc-xmonad.x86_64",
"giflib.x86_64",
"gjs.x86_64",
@ -1111,8 +1164,12 @@ sub load_packages
"gvfs.x86_64",
"gvnc.x86_64",
"gzip.x86_64",
],
h => [
"harfbuzz-icu.x86_64",
"harfbuzz.x86_64",
"hddtemp.x86_64",
"hdparm.x86_64",
"hicolor-icon-theme.noarch",
"hostname.x86_64",
"htop.x86_64",
@ -1129,6 +1186,8 @@ sub load_packages
"hypervkvpd.x86_64",
"hypervvssd.x86_64",
"hyphen.x86_64",
],
i => [
"i3.x86_64",
"i3status.x86_64",
"ibus-gtk2.x86_64",
@ -1178,6 +1237,8 @@ sub load_packages
"iwl6000g2b-firmware.noarch",
"iwl6050-firmware.noarch",
"iwl7260-firmware.noarch",
],
j => [
"jansson.x86_64",
"jasper-libs.x86_64",
"jbig2dec-libs.x86_64",
@ -1188,6 +1249,8 @@ sub load_packages
"json-glib.x86_64",
"julietaula-montserrat-fonts.noarch",
"jwhois.x86_64",
],
k => [
"kbd-legacy.noarch",
"kbd-misc.noarch",
"kbd.x86_64",
@ -1204,36 +1267,10 @@ sub load_packages
"kmod.x86_64",
"kpartx.x86_64",
"krb5-libs.x86_64",
],
l => [
"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",
@ -1325,6 +1362,7 @@ sub load_packages
"libgxps.x86_64",
"libibverbs.x86_64",
"libical.x86_64",
"libICE.x86_64",
"libicu.x86_64",
"libidn.x86_64",
"libidn2.x86_64",
@ -1337,6 +1375,8 @@ sub load_packages
"libiptcdata.x86_64",
"libiscsi.x86_64",
"libjpeg-turbo.x86_64",
"libkcapi.x86_64",
"libkcapi-hmaccalc.x86_64",
"libksba.x86_64",
"libldb.x86_64",
"liblogging-stdlog.x86_64",
@ -1411,6 +1451,7 @@ sub load_packages
"libsepol.x86_64",
"libsigc++20.x86_64",
"libsigsegv.x86_64",
"libSM.x86_64",
"libsmartcols.x86_64",
"libsmbclient.x86_64",
"libsmbios.x86_64",
@ -1497,17 +1538,44 @@ sub load_packages
"libwebp.x86_64",
"libwsman1.x86_64",
"libwvstreams.x86_64",
"libX11-common.noarch",
"libX11-xcb.x86_64",
"libX11.x86_64",
"libXau.x86_64",
"libXaw.x86_64",
"libxcb.x86_64",
"libXcomposite.x86_64",
"libxcrypt-common.noarch",
"libxcrypt-devel.x86_64",
"libxcrypt.x86_64",
"libXcursor.x86_64",
"libXdamage.x86_64",
"libxdg-basedir.x86_64",
"libXdmcp.x86_64",
"libXext.x86_64",
"libXfixes.x86_64",
"libXfont2.x86_64",
"libXft.x86_64",
"libXi.x86_64",
"libXinerama.x86_64",
"libxkbcommon-x11.x86_64",
"libxkbcommon.x86_64",
"libxkbfile.x86_64",
"libxklavier.x86_64",
"libxml2.x86_64",
"libXmu.x86_64",
"libXpm.x86_64",
"libXrandr.x86_64",
"libXrender.x86_64",
"libxshmfence.x86_64",
"libxslt.x86_64",
"libXt.x86_64",
"libXtst.x86_64",
"libXv.x86_64",
"libXvMC.x86_64",
"libXxf86dga.x86_64",
"libXxf86misc.x86_64",
"libXxf86vm.x86_64",
"libyaml.x86_64",
"libzapojit.x86_64",
"libzstd.x86_64",
@ -1534,6 +1602,7 @@ sub load_packages
"lohit-telugu-fonts.noarch",
"lrzsz.x86_64",
"lsof.x86_64",
"lsscsi.x86_64",
"lttng-ust.x86_64",
"lua-expat.x86_64",
"lua-json.noarch",
@ -1548,6 +1617,8 @@ sub load_packages
"lz4.x86_64",
"lzo.x86_64",
"lzop.x86_64",
],
'm' => [
"mailcap.noarch",
"make.x86_64",
"man-db.x86_64",
@ -1558,8 +1629,8 @@ sub load_packages
"mesa-dri-drivers.x86_64",
"mesa-filesystem.x86_64",
"mesa-libEGL.x86_64",
"mesa-libGL.x86_64",
"mesa-libgbm.x86_64",
"mesa-libGL.x86_64",
"mesa-libglapi.x86_64",
"mesa-libxatracker.x86_64",
"metacity.x86_64",
@ -1569,6 +1640,8 @@ sub load_packages
"mobile-broadband-provider-info.noarch",
"mod_dnssd.x86_64",
"mod_http2.x86_64",
"ModemManager-glib.x86_64",
"ModemManager.x86_64",
"mokutil.x86_64",
"mozilla-filesystem.x86_64",
"mozjs52.x86_64",
@ -1576,6 +1649,8 @@ sub load_packages
"mtdev.x86_64",
"mtr.x86_64",
"mutter.x86_64",
],
n => [
"nano.x86_64",
"nautilus-extensions.x86_64",
"nautilus.x86_64",
@ -1589,6 +1664,14 @@ sub load_packages
"net-tools.x86_64",
"netcf-libs.x86_64",
"nettle.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",
"newt.x86_64",
"nfs-utils.x86_64",
"nm-connection-editor.x86_64",
@ -1607,6 +1690,8 @@ sub load_packages
"ntfsprogs.x86_64",
"numactl-libs.x86_64",
"numad.x86_64",
],
o => [
"open-vm-tools-desktop.x86_64",
"open-vm-tools.x86_64",
"openbox-libs.x86_64",
@ -1630,12 +1715,17 @@ sub load_packages
"ostree-libs.x86_64",
"ostree.x86_64",
"overpass-fonts.noarch",
],
p => [
"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",
"PackageKit-glib.x86_64",
"PackageKit-gstreamer-plugin.x86_64",
"PackageKit.x86_64",
"paktype-naskh-basic-fonts.noarch",
"pam.x86_64",
"pam_krb5.x86_64",
@ -1656,14 +1746,16 @@ sub load_packages
"pcsc-lite.x86_64",
"perl-AnyEvent-I3.noarch",
"perl-AnyEvent.x86_64",
"perl-CGI.noarch",
"perl-Carp.noarch",
"perl-CGI.noarch",
"perl-common-sense.x86_64",
"perl-Compress-Raw-Bzip2.x86_64",
"perl-Compress-Raw-Zlib.x86_64",
"perl-DBD-Pg.x86_64",
"perl-DBI.x86_64",
"perl-constant.noarch",
"perl-Data-Dump.noarch",
"perl-Data-Dumper.x86_64",
"perl-DBD-Pg.x86_64",
"perl-DBI.x86_64",
"perl-Digest-HMAC.noarch",
"perl-Digest-MD5.x86_64",
"perl-Digest-SHA.x86_64",
@ -1673,6 +1765,7 @@ sub load_packages
"perl-Email-Valid.noarch",
"perl-Encode-Locale.noarch",
"perl-Encode.x86_64",
"perl-encoding.x86_64",
"perl-Errno.x86_64",
"perl-Exporter.noarch",
"perl-File-Listing.noarch",
@ -1690,6 +1783,7 @@ sub load_packages
"perl-HTTP-Message.noarch",
"perl-HTTP-Negotiate.noarch",
"perl-HTTP-Tiny.noarch",
"perl-interpreter.x86_64",
"perl-IO-Compress.noarch",
"perl-IO-HTML.noarch",
"perl-IO-Socket-IP.noarch",
@ -1697,24 +1791,31 @@ sub load_packages
"perl-IO.x86_64",
"perl-JSON-XS.x86_64",
"perl-JSON.noarch",
"perl-LWP-MediaTypes.noarch",
"perl-libnet.noarch",
"perl-libs.x86_64",
"perl-libwww-perl.noarch",
"perl-Log-Journald.x86_64",
"perl-MIME-Base64.x86_64",
"perl-LWP-MediaTypes.noarch",
"perl-macros.x86_64",
"perl-MailTools.noarch",
"perl-Math-BigInt.noarch",
"perl-Math-Complex.noarch",
"perl-MIME-Base64.x86_64",
"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-NTLM.noarch",
"perl-open.noarch",
"perl-parent.noarch",
"perl-PathTools.x86_64",
"perl-Pod-Escapes.noarch",
"perl-Pod-Perldoc.noarch",
"perl-Pod-Simple.noarch",
"perl-Pod-Usage.noarch",
"perl-podlators.noarch",
"perl-Proc-Simple.noarch",
"perl-Scalar-List-Utils.x86_64",
"perl-Socket.x86_64",
@ -1727,34 +1828,23 @@ sub load_packages
"perl-TermReadKey.x86_64",
"perl-Text-ParseWords.noarch",
"perl-Text-Tabs+Wrap.noarch",
"perl-threads-shared.x86_64",
"perl-threads.x86_64",
"perl-Time-HiRes.x86_64",
"perl-Time-Local.noarch",
"perl-TimeDate.noarch",
"perl-Try-Tiny.noarch",
"perl-Types-Serialiser.noarch",
"perl-Unicode-Normalize.x86_64",
"perl-URI.noarch",
"perl-UUID-Tiny.noarch",
"perl-Unicode-Normalize.x86_64",
"perl-version.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",
@ -1799,7 +1889,6 @@ sub load_packages
"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",
@ -1867,8 +1956,8 @@ sub load_packages
"python2-ply.noarch",
"python2-positional.noarch",
"python2-prettytable.noarch",
"python2-pyOpenSSL.noarch",
"python2-pycparser.noarch",
"python2-pyOpenSSL.noarch",
"python2-pyparsing.noarch",
"python2-pysocks.noarch",
"python2-pytz.noarch",
@ -1877,6 +1966,7 @@ sub load_packages
"python2-requests.noarch",
"python2-requestsexceptions.noarch",
"python2-rfc3986.noarch",
"python2-SecretStorage.noarch",
"python2-setuptools.noarch",
"python2-simplejson.x86_64",
"python2-six.noarch",
@ -1891,8 +1981,6 @@ sub load_packages
"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",
@ -1931,6 +2019,7 @@ sub load_packages
"python3-httplib2.noarch",
"python3-idna.noarch",
"python3-iniparse.noarch",
"python3-IPy.noarch",
"python3-isodate.noarch",
"python3-jmespath.noarch",
"python3-jwt.noarch",
@ -1952,12 +2041,12 @@ sub load_packages
"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-pyOpenSSL.noarch",
"python3-pysocks.noarch",
"python3-pyxdg.noarch",
"python3-requests-oauthlib.noarch",
@ -1965,6 +2054,7 @@ sub load_packages
"python3-rpm.x86_64",
"python3-rsa.noarch",
"python3-s3transfer.noarch",
"python3-SecretStorage.noarch",
"python3-setools.x86_64",
"python3-setuptools.noarch",
"python3-six.noarch",
@ -1980,6 +2070,8 @@ sub load_packages
"python3-webencodings.noarch",
"python3-xcffib.noarch",
"python3.x86_64",
],
'q' => [
"qemu-block-curl.x86_64",
"qemu-block-dmg.x86_64",
"qemu-block-gluster.x86_64",
@ -1997,6 +2089,8 @@ sub load_packages
"qtile.noarch",
"quota-nls.noarch",
"quota.x86_64",
],
r => [
"radvd.x86_64",
"ratpoison.x86_64",
"rdma-core.x86_64",
@ -2015,6 +2109,7 @@ sub load_packages
"rpm-libs.x86_64",
"rpm-ostree-libs.x86_64",
"rpm-plugin-selinux.x86_64",
"rpm-sign-libs.x86_64",
"rpm.x86_64",
"rsync.x86_64",
"rsyslog.x86_64",
@ -2044,6 +2139,8 @@ sub load_packages
"rubypick.noarch",
"rxvt-unicode.x86_64",
"rygel.x86_64",
],
's' => [
"samba-client-libs.x86_64",
"samba-common-libs.x86_64",
"samba-common.noarch",
@ -2051,6 +2148,8 @@ sub load_packages
"sbc.x86_64",
"sbd.x86_64",
"screen.x86_64",
"SDL.x86_64",
"SDL2.x86_64",
"seabios-bin.noarch",
"seavgabios-bin.noarch",
"sed.x86_64",
@ -2110,6 +2209,8 @@ sub load_packages
"systemd-pam.x86_64",
"systemd-udev.x86_64",
"systemd.x86_64",
],
t => [
"tabish-eeyek-fonts.noarch",
"taglib.x86_64",
"tar.x86_64",
@ -2134,6 +2235,8 @@ sub load_packages
"tracker.x86_64",
"tree.x86_64",
"tzdata.noarch",
],
u => [
"u2f-hidraw-policy.x86_64",
"udisks2-iscsi.x86_64",
"udisks2.x86_64",
@ -2161,6 +2264,8 @@ sub load_packages
"util-linux-user.x86_64",
"util-linux.x86_64",
"uuid.x86_64",
],
v => [
"vconfig.x86_64",
"vim-common.x86_64",
"vim-enhanced.x86_64",
@ -2175,6 +2280,8 @@ sub load_packages
"volume_key-libs.x86_64",
"vte-profile.x86_64",
"vte291.x86_64",
],
w => [
"webkit2gtk3-jsc.x86_64",
"webkit2gtk3-plugin-process-gtk2.x86_64",
"webkit2gtk3.x86_64",
@ -2186,6 +2293,8 @@ sub load_packages
"words.noarch",
"wpa_supplicant.x86_64",
"wvdial.x86_64",
],
x => [
"xcb-util-cursor.x86_64",
"xcb-util-image.x86_64",
"xcb-util-keysyms.x86_64",
@ -2222,10 +2331,10 @@ sub load_packages
"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-server-Xorg.x86_64",
"xorg-x11-server-Xwayland.x86_64",
"xorg-x11-utils.x86_64",
"xorg-x11-xauth.x86_64",
"xorg-x11-xbitmaps.noarch",
@ -2235,13 +2344,18 @@ sub load_packages
"xterm.x86_64",
"xz-libs.x86_64",
"xz.x86_64",
],
'y' => [
"yajl.x86_64",
],
z => [
"zd1211-firmware.noarch",
"zenity.x86_64",
"zfs-fuse.x86_64",
"zip.x86_64",
"zlib.x86_64",
];
],
};
return(0);
}

Loading…
Cancel
Save