From 1455d67711a5353adabdba8183d3bc603ea7f216 Mon Sep 17 00:00:00 2001 From: Oliver Tappe Date: Mon, 12 Feb 2007 21:44:09 +0000 Subject: * added perl-ified slxos-setup script and the relevant perl-modules, still not done, but nearly there git-svn-id: http://svn.openslx.org/svn/openslx/trunk@698 95ad53e4-c205-0410-b2fa-d234c58c8868 --- installer/OpenSLX/OSSetup/Distro/Base.pm | 90 +++ installer/OpenSLX/OSSetup/Distro/SUSE_10_1.pm | 52 ++ installer/OpenSLX/OSSetup/Distro/SUSE_10_2.pm | 52 ++ installer/OpenSLX/OSSetup/Engine.pm | 650 +++++++++++++++++++++ installer/OpenSLX/OSSetup/MetaPackager/Base.pm | 68 +++ installer/OpenSLX/OSSetup/MetaPackager/yum.pm | 71 +++ installer/OpenSLX/OSSetup/Packager/Base.pm | 84 +++ installer/OpenSLX/OSSetup/Packager/rpm.pm | 88 +++ installer/slxos-setup | 143 +++++ installer/systems/suse101/settings | 2 +- lib/OpenSLX/Basics.pm | 2 +- lib/distro-info/suse-10.1/prereqfiles/etc/group | 33 ++ lib/distro-info/suse-10.1/prereqfiles/etc/passwd | 14 + lib/distro-info/suse-10.1/prereqfiles/etc/shadow | 14 + lib/distro-info/suse-10.1/settings | 107 ++++ lib/distro-info/suse-10.1/settings.local | 8 + .../gpg-pubkey-0dfb3188-41ed929b.asc | 17 + .../gpg-pubkey-1d061a62-427a396f.asc | 19 + .../gpg-pubkey-307e3d54-44201d5d.asc | 13 + .../gpg-pubkey-3d25d3d9-36e12d04.asc | 30 + .../gpg-pubkey-9c800aca-40d8063e.asc | 37 ++ .../suse-10.1/trusted-package-keys/pubring.gpg | Bin 0 -> 4330 bytes lib/distro-info/suse-10.2/prereqfiles/etc/group | 33 ++ lib/distro-info/suse-10.2/prereqfiles/etc/passwd | 14 + lib/distro-info/suse-10.2/prereqfiles/etc/shadow | 14 + lib/distro-info/suse-10.2/settings | 111 ++++ lib/distro-info/suse-10.2/settings.local | 8 + 27 files changed, 1772 insertions(+), 2 deletions(-) create mode 100644 installer/OpenSLX/OSSetup/Distro/Base.pm create mode 100644 installer/OpenSLX/OSSetup/Distro/SUSE_10_1.pm create mode 100644 installer/OpenSLX/OSSetup/Distro/SUSE_10_2.pm create mode 100644 installer/OpenSLX/OSSetup/Engine.pm create mode 100644 installer/OpenSLX/OSSetup/MetaPackager/Base.pm create mode 100644 installer/OpenSLX/OSSetup/MetaPackager/yum.pm create mode 100644 installer/OpenSLX/OSSetup/Packager/Base.pm create mode 100644 installer/OpenSLX/OSSetup/Packager/rpm.pm create mode 100755 installer/slxos-setup create mode 100644 lib/distro-info/suse-10.1/prereqfiles/etc/group create mode 100644 lib/distro-info/suse-10.1/prereqfiles/etc/passwd create mode 100644 lib/distro-info/suse-10.1/prereqfiles/etc/shadow create mode 100644 lib/distro-info/suse-10.1/settings create mode 100644 lib/distro-info/suse-10.1/settings.local create mode 100644 lib/distro-info/suse-10.1/trusted-package-keys/gpg-pubkey-0dfb3188-41ed929b.asc create mode 100644 lib/distro-info/suse-10.1/trusted-package-keys/gpg-pubkey-1d061a62-427a396f.asc create mode 100644 lib/distro-info/suse-10.1/trusted-package-keys/gpg-pubkey-307e3d54-44201d5d.asc create mode 100644 lib/distro-info/suse-10.1/trusted-package-keys/gpg-pubkey-3d25d3d9-36e12d04.asc create mode 100644 lib/distro-info/suse-10.1/trusted-package-keys/gpg-pubkey-9c800aca-40d8063e.asc create mode 100644 lib/distro-info/suse-10.1/trusted-package-keys/pubring.gpg create mode 100644 lib/distro-info/suse-10.2/prereqfiles/etc/group create mode 100644 lib/distro-info/suse-10.2/prereqfiles/etc/passwd create mode 100644 lib/distro-info/suse-10.2/prereqfiles/etc/shadow create mode 100644 lib/distro-info/suse-10.2/settings create mode 100644 lib/distro-info/suse-10.2/settings.local diff --git a/installer/OpenSLX/OSSetup/Distro/Base.pm b/installer/OpenSLX/OSSetup/Distro/Base.pm new file mode 100644 index 00000000..cc0f7fd9 --- /dev/null +++ b/installer/OpenSLX/OSSetup/Distro/Base.pm @@ -0,0 +1,90 @@ +# Base.pm - provides empty base of the OpenSLX OSSetup API. +# +# (c) 2006 - OpenSLX.com +# +# Oliver Tappe +# +package OpenSLX::OSSetup::Distro::Base; + +use vars qw($VERSION); +$VERSION = 1.01; # API-version . implementation-version + +use strict; +use Carp; +use File::Basename; +use OpenSLX::Basics; + +################################################################################ +### interface methods +################################################################################ +sub new +{ + confess "Creating OpenSLX::OSSetup::System::Base-objects directly makes no sense!"; +} + +sub initialize +{ + my $self = shift; + my $engine = shift; + + $self->{'engine'} = $engine; + + $self->{'stage1a-binaries'} = { + "$openslxConfig{'share-path'}/busybox/busybox" => 'bin', + }; + + $self->{'stage1b-faked-files'} = [ + '/etc/mtab', + ]; + + $self->{'stage1c-faked-files'} = [ + ]; +} + +sub fixPrerequiredFiles +{ +} + +1; +################################################################################ + +=pod + +=head1 NAME + +OpenSLX::OSSetup::System::Base - the base class for all OSSetup backends + +=head1 SYNOPSIS + + package OpenSLX::OSSetup::coolnewOS; + + use vars qw(@ISA $VERSION); + @ISA = ('OpenSLX::OSSetup::Base'); + $VERSION = 1.01; + + use coolnewOS; + + sub new + { + my $class = shift; + my $self = {}; + return bless $self, $class; + } + + # override all methods of OpenSLX::OSSetup::Base in order to implement + # a full OS-setup backend + ... + +I> + +=head1 DESCRIPTION + +This class defines the OSSetup interface for the OpenSLX. + +Aim of the OSSetup abstraction is to make it possible to install a large set +of different operating systems transparently. + +... + +=cut diff --git a/installer/OpenSLX/OSSetup/Distro/SUSE_10_1.pm b/installer/OpenSLX/OSSetup/Distro/SUSE_10_1.pm new file mode 100644 index 00000000..ebf8902b --- /dev/null +++ b/installer/OpenSLX/OSSetup/Distro/SUSE_10_1.pm @@ -0,0 +1,52 @@ +# SUSE_10_2.pm +# - provides SUSE-10.1-specific overrides of the OpenSLX OSSetup API. +# +# (c) 2006 - OpenSLX.com +# +# Oliver Tappe +# +package OpenSLX::OSSetup::Distro::SUSE_10_1; + +use vars qw(@ISA $VERSION); +@ISA = ('OpenSLX::OSSetup::Distro::Base'); +$VERSION = 1.01; # API-version . implementation-version + +use strict; +use Carp; +use OpenSLX::Basics; +use OpenSLX::OSSetup::Distro::Base 1.01; + +################################################################################ +### implementation +################################################################################ +sub new +{ + my $class = shift; + my $self = { + 'base-name' => 'suse-10.1', + }; + return bless $self, $class; +} + +sub initialize +{ + my $self = shift; + my $engine = shift; + + $self->SUPER::initialize($engine); + $self->{'packager-type'} = 'rpm'; + $self->{'meta-packager-type'} = $ENV{SLX_META_PACKAGER} || 'yum'; + $ENV{YAST_IS_RUNNING} = "instsys"; +} + +sub fixPrerequiredFiles +{ + my $self = shift; + my $stage1cDir = shift; + + if (system("chown root: $stage1cDir/etc/{group,passwd,shadow}")) { + die _tr("unable to fix pre-required files (%s)", $!); + } +} + +1; \ No newline at end of file diff --git a/installer/OpenSLX/OSSetup/Distro/SUSE_10_2.pm b/installer/OpenSLX/OSSetup/Distro/SUSE_10_2.pm new file mode 100644 index 00000000..59c2353c --- /dev/null +++ b/installer/OpenSLX/OSSetup/Distro/SUSE_10_2.pm @@ -0,0 +1,52 @@ +# SUSE_10_2.pm +# - provides SUSE-10.2-specific overrides of the OpenSLX OSSetup API. +# +# (c) 2006 - OpenSLX.com +# +# Oliver Tappe +# +package OpenSLX::OSSetup::Distro::SUSE_10_2; + +use vars qw(@ISA $VERSION); +@ISA = ('OpenSLX::OSSetup::Distro::Base'); +$VERSION = 1.01; # API-version . implementation-version + +use strict; +use Carp; +use OpenSLX::Basics; +use OpenSLX::OSSetup::Distro::Base 1.01; + +################################################################################ +### implementation +################################################################################ +sub new +{ + my $class = shift; + my $self = { + 'base-name' => 'suse-10.2', + }; + return bless $self, $class; +} + +sub initialize +{ + my $self = shift; + my $engine = shift; + + $self->SUPER::initialize($engine); + $self->{'packager-type'} = 'rpm'; + $self->{'meta-packager-type'} = $ENV{SLX_META_PACKAGER} || 'yum'; + $ENV{YAST_IS_RUNNING} = "instsys"; +} + +sub fixPrerequiredFiles +{ + my $self = shift; + my $stage1cDir = shift; + + if (system("chown root: $stage1cDir/etc/{group,passwd,shadow}")) { + die _tr("unable to fix pre-required files (%s)", $!); + } +} + +1; \ No newline at end of file diff --git a/installer/OpenSLX/OSSetup/Engine.pm b/installer/OpenSLX/OSSetup/Engine.pm new file mode 100644 index 00000000..b17a094b --- /dev/null +++ b/installer/OpenSLX/OSSetup/Engine.pm @@ -0,0 +1,650 @@ +# Engine.pm - provides driver enginge for the OSSetup API. +# +# (c) 2006 - OpenSLX.com +# +# Oliver Tappe +# +package OpenSLX::OSSetup::Engine; + +use vars qw($VERSION); +$VERSION = 1.01; # API-version . implementation-version + +use strict; +use Carp; +use File::Basename; +use OpenSLX::Basics; + +################################################################################ +### interface methods +################################################################################ +sub new +{ + my $class = shift; + + my $self = { + }; + + return bless $self, $class; +} + +sub initialize +{ + my $self = shift; + my $distroName = shift; + my $protectSystemPath = shift; + + # load module for the requested distro: + $distroName = uc($distroName); + $distroName =~ tr[-.][_]; + my $distroModule = "OpenSLX::OSSetup::Distro::$distroName"; + unless (eval "require $distroModule") { + if ($! == 2) { + die _tr("Distro-module <%s> not found!\n", $distroModule); + } else { + die _tr("Unable to load distro-module <%s> (%s)\n", $distroModule, $@); + } + } + my $modVersion = $distroModule->VERSION; + if ($modVersion < 1.01) { + die _tr('Could not load module <%s> (Version <%s> required, but <%s> found)', + $distroModule, 1.01, $modVersion); + } + $distroModule->import; + my $distro = $distroModule->new; + $distro->initialize($self); + $self->{distro} = $distro; + + # setup path to distribution-specific info: + my $distroInfoDir = "../lib/distro-info/$distro->{'base-name'}"; + if (!-d $distroInfoDir) { + die _tr("unable to find distro-info for system '%s'", $distro->{'base-name'})."\n"; + } + $self->{'distro-info-dir'} = $distroInfoDir; + $self->readDistroInfo(); + + $self->setupSystemPaths($protectSystemPath); + + $self->createPackager(); + $self->createMetaPackager(); +} + +sub setupStage1A +{ + my $self = shift; + + vlog 1, "setting up stage1a for $self->{distro}->{'base-name'}..."; + $self->stage1A_createBusyboxEnvironment(); + $self->stage1A_setupResolver(); + $self->stage1A_copyPrerequiredFiles(); + $self->stage1A_copyTrustedPackageKeys(); + $self->stage1A_createRequiredFiles(); +} + +sub setupStage1B +{ + my $self = shift; + + vlog 1, "setting up stage1b for $self->{distro}->{'base-name'}..."; + $self->stage1B_chrootAndBootstrap(); +} + +sub setupStage1C +{ + my $self = shift; + + vlog 1, "setting up stage1c for $self->{distro}->{'base-name'}..."; + $self->stage1C_chrootAndInstallBasicSystem(); +} + +sub setupStage1D +{ + my $self = shift; + + vlog 1, "setting up stage1d for $self->{distro}->{'base-name'}..."; + $self->stage1D_setupPackageSources(); + $self->stage1D_updateBasicSystem(); + $self->stage1D_installPackageSelection(); +} + +sub setupStage1 +{ + my $self = shift; + + $self->setupStage1A(); + my $pid = fork(); + if (!$pid) { + # child, execute the tasks that involve a chrooted environment: + $self->setupStage1B(); + $self->setupStage1C(); + exit 0; + } + + # parent, wait for child to do its work inside the chroot + waitpid($pid, 0); + $self->stage1C_cleanupBasicSystem(); + $self->setupStage1D(); +} + +sub setupRepositories +{ + my $self = shift; + + $self->setupStage1D(); +} + +sub fixPrerequiredFiles +{ +} + +################################################################################ +### implementation methods +################################################################################ +sub readDistroInfo +{ + my $self = shift; + + vlog 1, "reading configuration info for $self->{distro}->{'base-name'}..."; + my (%repository, + %selection, + $base_url, + $package_subdir, + $prereq_packages, + $bootstrap_prereq_packages, + $bootstrap_packages); + foreach my $fn ('settings', 'settings.local') { + my $file = "$self->{'distro-info-dir'}/$fn"; + if (-e $file) { + vlog 3, "reading configuration file $file..."; + my $config = slurpFile($file); + if (!eval $config) { + die _tr("error in config-file <%s> (%s)", $file, $@)."\n"; + } + } + } + $self->{'distro-info'} = { + 'package-subdir' => $package_subdir, + 'prereq-packages' => $prereq_packages, + 'bootstrap-prereq-packages' => $bootstrap_prereq_packages, + 'bootstrap-packages' => $bootstrap_packages, + 'repository' => \%repository, + 'selection' => \%selection, + }; + if ($openslxConfig{'verbose-level'} >= 2) { + # dump distro-info: + foreach my $r (sort keys %repository) { + vlog 2, "repository '$r':"; + foreach my $k (sort keys %{$repository{$r}}) { + vlog 2, "\t$k = '$repository{$r}->{$k}'"; + } + } + foreach my $s (sort keys %selection) { + my @selLines = split "\n", $selection{$s}; + vlog 2, "selection '$s':"; + foreach my $sl (@selLines) { + vlog 2, "\t$sl"; + } + } + } +} + +sub setupSystemPaths +{ + my $self = shift; + my $protectSystemPath = shift; + + $self->{'system-path'} + = "$openslxConfig{'stage1-path'}/$self->{distro}->{'base-name'}"; + vlog 1, "system will be installed to '$self->{'system-path'}'"; + if ($protectSystemPath && -e $self->{'system-path'}) { + die _tr("'%s' already exists, giving up!", $self->{'system-path'}); + } + + # specify individual paths for the respective substages: + $self->{stage1aDir} = "$self->{'system-path'}/stage1a"; + $self->{stage1bSubdir} = 'slxbootstrap'; + $self->{stage1cSubdir} = 'slxfinal'; + + # we create *all* of the above folders by creating stage1cDir: + my $stage1cDir + = "$self->{'stage1aDir'}/$self->{'stage1bSubdir'}/$self->{'stage1cSubdir'}"; + if (system("mkdir -p $stage1cDir")) { + die _tr("unable to create directory '%s', giving up! (%s)", + $stage1cDir, $!); + } +} + +sub createPackager +{ + my $self = shift; + + my $packagerModule + = "OpenSLX::OSSetup::Packager::$self->{distro}->{'packager-type'}"; + unless (eval "require $packagerModule") { + if ($! == 2) { + die _tr("Packager-module <%s> not found!\n", $packagerModule); + } else { + die _tr("Unable to load packager-module <%s> (%s)\n", $packagerModule, $@); + } + } + my $modVersion = $packagerModule->VERSION; + if ($modVersion < 1.01) { + die _tr('Could not load module <%s> (Version <%s> required, but <%s> found)', + $packagerModule, 1.01, $modVersion); + } + $packagerModule->import; + my $packager = $packagerModule->new; + $packager->initialize($self); + $self->{'packager'} = $packager; +} + +sub createMetaPackager +{ + my $self = shift; + + my $metaPackagerModule + = "OpenSLX::OSSetup::MetaPackager::$self->{distro}->{'meta-packager-type'}"; + unless (eval "require $metaPackagerModule") { + if ($! == 2) { + die _tr("Meta-packager-module <%s> not found!\n", $metaPackagerModule); + } else { + die _tr("Unable to load meta-packager-module <%s> (%s)\n", $metaPackagerModule, $@); + } + } + my $modVersion = $metaPackagerModule->VERSION; + if ($modVersion < 1.01) { + die _tr('Could not load module <%s> (Version <%s> required, but <%s> found)', + $metaPackagerModule, 1.01, $modVersion); + } + $metaPackagerModule->import; + my $metaPackager = $metaPackagerModule->new; + $metaPackager->initialize($self); + $self->{'meta-packager'} = $metaPackager; +} + +sub selectBaseURL +{ + my $self = shift; + my $repoInfo = shift; + + my $baseURL = $repoInfo->{url}; + if (!defined $baseURL) { + my @baseURLs = string2Array($repoInfo->{urls}); + # TODO: insert a closest mirror algorithm here! + $baseURL = $baseURLs[0]; + } + return $baseURL; +} + +sub stage1A_createBusyboxEnvironment +{ + my $self = shift; + + # copy busybox and all required binaries into stage1a-dir: + vlog 1, "creating busybox-environment..."; + copyFile("$openslxConfig{'share-path'}/busybox/busybox", + "$self->{stage1aDir}/bin"); + + # determine all required libraries and copy those, too: + vlog 2, "calling slxldd for busybox"; + my $requiredLibsStr = `slxldd $openslxConfig{'share-path'}/busybox/busybox`; + chomp $requiredLibsStr; + vlog 2, "slxldd results:\n$requiredLibsStr"; + foreach my $lib (split "\n", $requiredLibsStr) { + vlog 3, "copying lib '$lib'"; + my $libDir = dirname($lib); + copyFile($lib, "$self->{stage1aDir}/$libDir"); + } + + # create all needed links to busybox: + my $links + = slurpFile("$openslxConfig{'share-path'}/busybox/busybox.links"); + foreach my $linkTarget (split "\n", $links) { + linkFile('/bin/busybox', "$self->{stage1aDir}/$linkTarget"); + } +} + +sub stage1A_setupResolver +{ + my $self = shift; + + copyFile('/etc/resolv.conf', "$self->{stage1aDir}/etc"); + copyFile('/lib/libresolv*', "$self->{stage1aDir}/lib"); + copyFile('/lib/libnss_dns*', "$self->{stage1aDir}/lib"); + + my $stage1cDir + = "$self->{'stage1aDir'}/$self->{'stage1bSubdir'}/$self->{'stage1cSubdir'}"; + copyFile('/etc/resolv.conf', "$stage1cDir/etc"); +} + +sub stage1A_copyPrerequiredFiles +{ + my $self = shift; + + return unless -d "$self->{'distro-info-dir'}/prereqfiles"; + + vlog 2, "copying folder with pre-required files..."; + my $stage1cDir + = "$self->{'stage1aDir'}/$self->{'stage1bSubdir'}/$self->{'stage1cSubdir'}"; + my $cmd = qq[ + tar --exclude=.svn -cp -C $self->{'distro-info-dir'}/prereqfiles . \\ + | tar -xp -C $stage1cDir + ]; + if (system($cmd)) { + die _tr("unable to copy folder with pre-required files to folder <%s> (%s)", + $stage1cDir, $!); + } + $self->{distro}->fixPrerequiredFiles($stage1cDir); +} + +sub stage1A_copyTrustedPackageKeys +{ + my $self = shift; + + return unless -d "$self->{'distro-info-dir'}/trusted-package-keys"; + + vlog 2, "copying folder with trusted package keys..."; + my $stage1bDir + = "$self->{'stage1aDir'}/$self->{'stage1bSubdir'}"; + my $cmd = qq[ + tar --exclude=.svn -cp -C $self->{'distro-info-dir'} trusted-package-keys \\ + | tar -xp -C $stage1bDir + ]; + if (system($cmd)) { + die _tr("unable to copy folder with trusted package keys to folder <%s> (%s)", + $stage1bDir, $!); + } + system("chmod 444 $stage1bDir/trusted-package-keys/*"); + + # install ultimately trusted keys (from distributor): + my $stage1cDir + = "$stage1bDir/$self->{'stage1cSubdir'}"; + my $keyDir = "$self->{'distro-info-dir'}/trusted-package-keys"; + copyFile("$keyDir/pubring.gpg", "$stage1cDir/usr/lib/rpm/gnupg"); +} + +sub stage1A_createRequiredFiles +{ + my $self = shift; + + vlog 2, "creating required files..."; + # fake all files required by stage1b (by creating them empty): + my $stage1bDir + = "$self->{'stage1aDir'}/$self->{'stage1bSubdir'}"; + foreach my $fake (@{$self->{distro}->{'stage1b-faked-files'}}) { + fakeFile("$stage1bDir/$fake"); + } + + # fake all files required by stage1c (by creating them empty): + my $stage1cDir + = "$stage1bDir/$self->{'stage1cSubdir'}"; + foreach my $fake (@{$self->{distro}->{'stage1c-faked-files'}}) { + fakeFile("$stage1cDir/$fake"); + } + + mkdir "$stage1cDir/dev"; + if (system("mknod $stage1cDir/dev/null c 1 3")) { + die _tr("unable to create node <%s> (%s)", "$stage1cDir/dev/null", $!); + } +} + +sub stage1B_chrootAndBootstrap +{ + my $self = shift; + + vlog 2, "chrooting into $self->{stage1aDir}..."; + # chdir into stage1aDir... + chdir $self->{stage1aDir} + or die _tr("unable to chdir into <%s> (%s)", $self->{stage1aDir}, $!); + # ...do chroot + chroot "." + or die _tr("unable to chroot into <%s> (%s)", $self->{stage1aDir}, $!); + + $ENV{PATH} = "/bin:/sbin:/usr/bin:/usr/sbin"; + + # chdir into slxbootstrap, as we want to drop packages into there: + chdir "/$self->{stage1bSubdir}" + or die _tr("unable to chdir into <%s> (%s)", "/$self->{stage1bSubdir}", $!); + + # fetch prerequired packages: + my $baseURL + = $self->selectBaseURL($self->{'distro-info'}->{repository}->{base}); + my $pkgDirURL = $baseURL; + if (length($self->{'distro-info'}->{'package-subdir'})) { + $pkgDirURL .= "/$self->{'distro-info'}->{'package-subdir'}"; + } + my @pkgs = string2Array($self->{'distro-info'}->{'prereq-packages'}); + my @prereqPkgs = downloadFilesFrom(\@pkgs, $pkgDirURL); + $self->{packager}->unpackPackages(\@prereqPkgs); + + @pkgs = string2Array($self->{'distro-info'}->{'bootstrap-prereq-packages'}); + my @bootstrapPrereqPkgs = downloadFilesFrom(\@pkgs, $pkgDirURL); + $self->{'local-bootstrap-prereq-packages'} = \@bootstrapPrereqPkgs; + + @pkgs = string2Array($self->{'distro-info'}->{'bootstrap-packages'}); + my @bootstrapPkgs = downloadFilesFrom(\@pkgs, $pkgDirURL); + my @allPkgs = (@prereqPkgs, @bootstrapPrereqPkgs, @bootstrapPkgs); + $self->{'local-bootstrap-packages'} = \@allPkgs; +} + +sub stage1C_chrootAndInstallBasicSystem +{ + my $self = shift; + + my $stage1bDir = "/$self->{stage1bSubdir}"; + vlog 2, "chrooting into $stage1bDir..."; + # chdir into stage1bDir... + chdir $stage1bDir + or die _tr("unable to chdir into <%s> (%s)", $stage1bDir, $!); + # ...do chroot + chroot "." + or die _tr("unable to chroot into <%s> (%s)", $stage1bDir, $!); + + $ENV{PATH} = "/bin:/sbin:/usr/bin:/usr/sbin"; + my $stage1cDir = "/$self->{stage1cSubdir}"; + + # install all prerequired bootstrap packages + $self->{packager}->installPrerequiredPackages( + $self->{'local-bootstrap-prereq-packages'}, $stage1cDir + ); + + # import any additional trusted package keys to rpm-DB: + my $keyDir = "/trusted-package-keys"; + opendir(KEYDIR, $keyDir) + or die _tr("unable to opendir <%s> (%s)", $keyDir, $!); + my @keyFiles + = map { "$keyDir/$_" } + grep { $_ !~ m[^(\.\.?|pubring.gpg)$] } + readdir(KEYDIR); + closedir(KEYDIR); + $self->{packager}->importTrustedPackageKeys(\@keyFiles, $stage1cDir); + + # install all other bootstrap packages + $self->{packager}->installPackages( + $self->{'local-bootstrap-packages'}, $stage1cDir + ); +} + +sub stage1C_cleanupBasicSystem +{ + my $self = shift; + + my $stage1cDir + = "$self->{'stage1aDir'}/$self->{'stage1bSubdir'}/$self->{'stage1cSubdir'}"; + if (system("mv $stage1cDir/* $self->{'system-path'}/")) { + die _tr("unable to move final setup to <%s> (%s)", + $self->{'system-path'}, $!); + } + if (system("rm -rf $self->{stage1aDir}")) { + die _tr("unable to remove temporary folder <%s> (%s)", + $self->{stage1aDir}, $!); + } +} + +sub stage1D_setupPackageSources() +{ + my $self = shift; + + vlog 1, "setting up package sources for meta packager..."; + my ($rk, $repo); + while(($rk, $repo) = each %{$self->{'distro-info'}->{repository}}) { + vlog 2, "setting up package source $rk..."; + $self->{'meta-packager'}->setupPackageSource($rk, $repo); + } +} + +sub stage1D_updateBasicSystem() +{ + my $self = shift; + + # chdir into systemDir... + my $systemDir = $self->{'system-path'}; + vlog 2, "chrooting into $systemDir..."; + chdir $systemDir + or die _tr("unable to chdir into <%s> (%s)", $systemDir, $!); + # ...do chroot + chroot "." + or die _tr("unable to chroot into <%s> (%s)", $systemDir, $!); + + vlog 1, "updating basic system..."; + $self->{'meta-packager'}->updateBasicSystem(); +} + +sub stage1D_installPackageSelection +{ + my $self = shift; + + vlog 1, "installing package selection..."; +} + +################################################################################ +### utility functions +################################################################################ +sub copyFile +{ + my $fileName = shift; + my $dirName = shift; + + my $baseName = basename($fileName); + my $targetName = "$dirName/$baseName"; + if (!-e $targetName) { + my $targetDir = dirname($targetName); + system("mkdir -p $targetDir") unless -d $targetDir; + if (system("cp -p $fileName $targetDir/")) { + die _tr("unable to copy file '%s' to dir '%s' (%s)", + $fileName, $targetDir, $!); + } + } +} + +sub fakeFile +{ + my $fullPath = shift; + + my $targetDir = dirname($fullPath); + system("mkdir", "-p", $targetDir) unless -d $targetDir; + if (system("touch", $fullPath)) { + die _tr("unable to create file '%s' (%s)", + $fullPath, $!); + } +} + +sub linkFile +{ + my $linkTarget = shift; + my $linkName = shift; + + my $targetDir = dirname($linkName); + system("mkdir -p $targetDir") unless -d $targetDir; + if (system("ln -s $linkTarget $linkName")) { + die _tr("unable to create link '%s' to '%s' (%s)", + $linkName, $linkTarget, $!); + } +} + +sub slurpFile +{ + my $file = shift; + open(F, "< $file") + or die _tr("could not open file '%s' for reading! (%s)", $file, $!); + $/ = undef; + my $text = ; + close(F); + return $text; +} + +sub string2Array +{ + my $str = shift; + + return + map { $_ =~ s[^\s*(.+?)\s*$][$1]; $_ } + grep { length($_) > 0 } split "\n", $str; +} + +sub downloadFilesFrom +{ + my $files = shift; + my $baseURL = shift; + + my @foundFiles; + foreach my $fileVariantStr (@$files) { + my $foundFile; + foreach my $file (split '\s+', $fileVariantStr) { + vlog 2, "fetching $file..."; + if (system("wget", "$baseURL/$file") == 0) { + $foundFile = basename($file); + last; + } + } + if (!defined $foundFile) { + die _tr("unable to fetch <%s> from <%s> (%s)", $fileVariantStr, + $baseURL, $!); + } + push @foundFiles, $foundFile; + } + return @foundFiles; +} + +1; +################################################################################ + +=pod + +=head1 NAME + +OpenSLX::OSSetup::System::Base - the base class for all OSSetup backends + +=head1 SYNOPSIS + + package OpenSLX::OSSetup::coolnewOS; + + use vars qw(@ISA $VERSION); + @ISA = ('OpenSLX::OSSetup::Base'); + $VERSION = 1.01; + + use coolnewOS; + + sub new + { + my $class = shift; + my $self = {}; + return bless $self, $class; + } + + # override all methods of OpenSLX::OSSetup::Base in order to implement + # a full OS-setup backend + ... + +I> + +=head1 DESCRIPTION + +This class defines the OSSetup interface for the OpenSLX. + +Aim of the OSSetup abstraction is to make it possible to install a large set +of different operating systems transparently. + +... + +=cut diff --git a/installer/OpenSLX/OSSetup/MetaPackager/Base.pm b/installer/OpenSLX/OSSetup/MetaPackager/Base.pm new file mode 100644 index 00000000..0baa1a84 --- /dev/null +++ b/installer/OpenSLX/OSSetup/MetaPackager/Base.pm @@ -0,0 +1,68 @@ +# Base.pm - provides empty base of the OpenSLX OSSetup::MetaPackager API. +# +# (c) 2006 - OpenSLX.com +# +# Oliver Tappe +# +package OpenSLX::OSSetup::MetaPackager::Base; + +use vars qw($VERSION); +$VERSION = 1.01; # API-version . implementation-version + +use strict; +use Carp; + +################################################################################ +### interface methods +################################################################################ +sub new +{ + confess "Creating OpenSLX::OSSetup::MetaPackager::Base-objects directly makes no sense!"; +} + +sub initialize +{ + my $self = shift; + my $engine = shift; + + $self->{'engine'} = $engine; +} + +sub setupPackageSource +{ +} + +1; +################################################################################ + +=pod + +=head1 NAME + +OpenSLX::OSSetup::MetaPackager::Base - the base class for all OSSetup::MetaPackagers + +=head1 SYNOPSIS + + package OpenSLX::OSSetup::MetaPackager::coolnewpkg; + + use vars qw(@ISA $VERSION); + @ISA = ('OpenSLX::OSSetup::MetaPackager::Base'); + $VERSION = 1.01; + + use coolnewpkg; + + sub new + { + my $class = shift; + my $self = {}; + return bless $self, $class; + } + + # override all methods of OpenSLX::OSSetup::MetaPackager::Base in order to + # implement the support for a new meta-packager + ... + +I> + +=cut diff --git a/installer/OpenSLX/OSSetup/MetaPackager/yum.pm b/installer/OpenSLX/OSSetup/MetaPackager/yum.pm new file mode 100644 index 00000000..3673266d --- /dev/null +++ b/installer/OpenSLX/OSSetup/MetaPackager/yum.pm @@ -0,0 +1,71 @@ +# yum.pm +# - provides yum-specific overrides of the OpenSLX::OSSetup::MetaPackager API. +# +# (c) 2006 - OpenSLX.com +# +# Oliver Tappe +# +package OpenSLX::OSSetup::MetaPackager::yum; + +use vars qw(@ISA $VERSION); +@ISA = ('OpenSLX::OSSetup::MetaPackager::Base'); +$VERSION = 1.01; # API-version . implementation-version + +use strict; +use Carp; +use OpenSLX::Basics; +use OpenSLX::OSSetup::MetaPackager::Base 1.01; + +################################################################################ +### implementation +################################################################################ +sub new +{ + my $class = shift; + my $self = { + 'name' => 'yum', + }; + return bless $self, $class; +} + +sub initialize +{ + my $self = shift; + my $engine = shift; + + $self->SUPER::initialize($engine); + $ENV{LC_ALL} = 'POSIX'; +} + +sub setupPackageSource +{ + my $self = shift; + my $repoName = shift; + my $repoInfo = shift; + + my $repoURL = $self->{engine}->selectBaseURL($repoInfo); + if (length($repoInfo->{'repo-subdir'})) { + $repoURL .= "/$repoInfo->{'repo-subdir'}"; + } + my $repoDescr = "[$repoName]\nname=$repoInfo->{name}\nbaseurl=$repoURL\n"; + system("cp /proc/cpuinfo $self->{engine}->{'system-path'}/proc"); + system("mkdir -p $self->{engine}->{'system-path'}/etc/yum.repos.d"); + my $repoFile + = "$self->{engine}->{'system-path'}/etc/yum.repos.d/$repoName.repo"; + open(REPO, "> $repoFile") + or die _tr("unable to create repo-file <%s> (%s)", $repoFile, $1); + print REPO $repoDescr; + close(REPO); +} + +sub updateBasicSystem +{ + my $self = shift; + + if (system("yum -y update")) { + die _tr("unable to update basic system (%s)", $!); + } + system('rm /proc/cpuinfo'); +} + +1; \ No newline at end of file diff --git a/installer/OpenSLX/OSSetup/Packager/Base.pm b/installer/OpenSLX/OSSetup/Packager/Base.pm new file mode 100644 index 00000000..ca0fbbae --- /dev/null +++ b/installer/OpenSLX/OSSetup/Packager/Base.pm @@ -0,0 +1,84 @@ +# Base.pm - provides empty base of the OpenSLX OSSetup::Packager API. +# +# (c) 2006 - OpenSLX.com +# +# Oliver Tappe +# +package OpenSLX::OSSetup::Packager::Base; + +use vars qw($VERSION); +$VERSION = 1.01; # API-version . implementation-version + +use strict; +use Carp; + +################################################################################ +### interface methods +################################################################################ +sub new +{ + confess "Creating OpenSLX::OSSetup::Packager::Base-objects directly makes no sense!"; +} + +sub initialize +{ + my $self = shift; + my $distro = shift; + + $self->{'distro'} = $distro; +} + +sub unpackPackages +{ +} + +sub unpackPackages +{ +} + +sub importTrustedPackageKeys +{ +} + +sub installPrerequiredPackages +{ +} + +sub installPackages +{ +} + +1; +################################################################################ + +=pod + +=head1 NAME + +OpenSLX::OSSetup::Packager::Base - the base class for all OSSetup::Packagers + +=head1 SYNOPSIS + + package OpenSLX::OSSetup::Packager::coolnewpkg; + + use vars qw(@ISA $VERSION); + @ISA = ('OpenSLX::OSSetup::Packager::Base'); + $VERSION = 1.01; + + use coolnewpkg; + + sub new + { + my $class = shift; + my $self = {}; + return bless $self, $class; + } + + # override all methods of OpenSLX::OSSetup::Packager::Base in order to + # implement the support for a new packager + ... + +I> + +=cut diff --git a/installer/OpenSLX/OSSetup/Packager/rpm.pm b/installer/OpenSLX/OSSetup/Packager/rpm.pm new file mode 100644 index 00000000..2fb2755b --- /dev/null +++ b/installer/OpenSLX/OSSetup/Packager/rpm.pm @@ -0,0 +1,88 @@ +# rpm.pm +# - provides rpm-specific overrides of the OpenSLX::OSSetup::Packager API. +# +# (c) 2006 - OpenSLX.com +# +# Oliver Tappe +# +package OpenSLX::OSSetup::Packager::rpm; + +use vars qw(@ISA $VERSION); +@ISA = ('OpenSLX::OSSetup::Packager::Base'); +$VERSION = 1.01; # API-version . implementation-version + +use strict; +use Carp; +use OpenSLX::Basics; +use OpenSLX::OSSetup::Packager::Base 1.01; + +################################################################################ +### implementation +################################################################################ +sub new +{ + my $class = shift; + my $self = { + 'name' => 'rpm', + }; + return bless $self, $class; +} + +sub unpackPackages +{ + my $self = shift; + my $pkgs = shift; + + foreach my $pkg (@$pkgs) { + vlog 2, "unpacking package $pkg..."; + if (system("ash", "-c", "rpm2cpio $pkg | cpio -i -d")) { + die _tr("unable to unpack package <%s> (%s)", $pkg, $!); + } + } +} + +sub importTrustedPackageKeys +{ + my $self = shift; + my $keyFiles = shift; + my $finalPath = shift; + + return unless defined $keyFiles; + + foreach my $keyFile (@$keyFiles) { + vlog 2, "importing package key $keyFile..."; + if (system("rpm", "--root=$finalPath", "--import", "$keyFile")) { + die _tr("unable to import package key <%s> (%s)", $keyFile, $!); + } + } +} + +sub installPrerequiredPackages +{ + my $self = shift; + my $pkgs = shift; + my $finalPath = shift; + + return unless defined $pkgs && scalar(@$pkgs); + + if (system("rpm", "--root=$finalPath", "-ivh", "--nodeps", "--noscripts", + "--force", @$pkgs)) { + die _tr("error during prerequired-package-installation (%s)", $!); + } + system("rm", "-rf", "$finalPath/var/lib/rpm"); +} + +sub installPackages +{ + my $self = shift; + my $pkgs = shift; + my $finalPath = shift; + + return unless defined $pkgs && scalar(@$pkgs); + + if (system("rpm", "--root=$finalPath", "-ivh", @$pkgs)) { + die _tr("error during package-installation (%s)", $!); + } +} + +1; \ No newline at end of file diff --git a/installer/slxos-setup b/installer/slxos-setup new file mode 100755 index 00000000..30aa82dd --- /dev/null +++ b/installer/slxos-setup @@ -0,0 +1,143 @@ +#! /usr/bin/perl +# +# slxos-setup - +# +# (c) 2006 - OpenSLX.com +# +# Oliver Tappe +# +use strict; + +my $abstract = q[ +slxos-setup + This script installs an operating system into a folder that can be used as + a stage1 system for OpenSLX. +]; + +use Getopt::Long qw(:config pass_through); +use Pod::Usage; + +# add the folder this script lives in and the lib-folder to perl's +# search path for modules: +use FindBin; +use lib "$FindBin::RealBin"; +use lib "$FindBin::RealBin/../lib"; + +use OpenSLX::Basics; +use OpenSLX::OSSetup::Engine; + +if ($> != 0) { + die _tr("Sorry, this script can only be executed by the superuser!\n"); +} + +my ( + $helpReq, + $manReq, + $listReq, + $setupRepos, + $verbose, + $versionReq, +); + +GetOptions( + 'help|?' => \$helpReq, + 'list' => \$listReq, + 'man' => \$manReq, + 'setup-repos' => \$setupRepos, + 'verbose' => \$verbose, + 'version' => \$versionReq, +) or pod2usage(2); +pod2usage(-msg => $abstract, -verbose => 0, -exitval => 1) if $helpReq; +pod2usage(-verbose => 2) if $manReq; +if ($versionReq) { + system('slxversion'); + exit 1; +} + +my @supportedDistros = ( + 'debian-3.1', + 'debian-4.0', + 'fedora-6', + 'fedora-6-x86_64', + 'mandriva-2007.0', + 'suse-9.3', + 'suse-10.0', + 'suse-10.0-x86_64', + 'suse-10.1', + 'suse-10.1-x86_64', + 'suse-10.2', + 'suse-10.2-x86_64', + 'ubuntu-6.10', +); + +openslxInit(); + +if ($listReq) { + print _tr("List of supported distros:\n\t"); + print join("\n\t", @supportedDistros)."\n"; + exit 1; +} + +if (scalar(@ARGV) != 1) { + print STDERR _tr("You need to specify exactly one distro name!\n"); + pod2usage(2); +} + +my $distroName = $ARGV[0]; +if (!grep { /^$distroName$/ } @supportedDistros) { + print _tr("Sorry, distro '%s' is unsupported.\n", $distroName); + print _tr("List of supported distros:\n\t"); + print join("\n\t", @supportedDistros)."\n"; + exit 1; +} + +# we chdir into the script's folder such that all relative paths have +# a known starting point: +chdir($FindBin::RealBin) + or die _tr("can't chdir to script-path <%> (%s)", $FindBin::RealBin, $!); + +# create ossetup-engine and start it: +my $engine = OpenSLX::OSSetup::Engine->new; +if ($setupRepos) { + $engine->initialize($distroName, 0); + $engine->setupRepositories(); +} else { + $engine->initialize($distroName, 1); + $engine->setupStage1(); +} + +__END__ + +=head1 NAME + +slxos-setup - OpenSLX-script to install an operating system into a folder which +will be used as a stage1 system for OpenSLX. + +=head1 SYNOPSIS + +slxos-setup [options] + + Options: + --help brief help message + --man show full documentation + --version show version + +=head1 OPTIONS + +=over 8 + +=item B<--help> + +Prints a brief help message and exits. + +=item B<--man> + +Prints the manual page and exits. + +=item B<--version> + +Prints the version and exits. + +=back + +=cut \ No newline at end of file diff --git a/installer/systems/suse101/settings b/installer/systems/suse101/settings index bff9516a..8f0d223c 100644 --- a/installer/systems/suse101/settings +++ b/installer/systems/suse101/settings @@ -99,7 +99,7 @@ i586/libxml2-python-2.6.23-15.i586.rpm i586/python-2.4.2-18.i586.rpm i586/python-elementtree-1.2.6-18.i586.rpm i586/python-sqlite-1.1.6-17.i586.rpm -i586/python-urlgrabber-2.9.7-15.i586.rpm +i586/python-urlgrabber-2.9.7-15.i586.rpm i586/rpm-python-4.4.2-40.i586.rpm i586/sqlite-3.2.8-14.i586.rpm i586/yum-2.4.2-13.i586.rpm diff --git a/lib/OpenSLX/Basics.pm b/lib/OpenSLX/Basics.pm index db643dd8..3800d717 100644 --- a/lib/OpenSLX/Basics.pm +++ b/lib/OpenSLX/Basics.pm @@ -261,7 +261,7 @@ sub _tr my $formatStr = $translations{$trKey}; if (!defined $formatStr) { - vlog 1, "Translation key '$trKey' not found."; + vlog 2, "Translation key '$trKey' not found."; $formatStr = $trOrig; } return sprintf($formatStr, @_); diff --git a/lib/distro-info/suse-10.1/prereqfiles/etc/group b/lib/distro-info/suse-10.1/prereqfiles/etc/group new file mode 100644 index 00000000..505cb221 --- /dev/null +++ b/lib/distro-info/suse-10.1/prereqfiles/etc/group @@ -0,0 +1,33 @@ +root:x:0: +bin:x:1:daemon +daemon:x:2: +sys:x:3: +tty:x:5: +disk:x:6: +lp:x:7: +www:x:8: +kmem:x:9: +wheel:x:10: +mail:x:12: +news:x:13: +uucp:x:14: +shadow:x:15: +dialout:x:16: +audio:x:17: +floppy:x:19: +cdrom:x:20: +console:x:21: +utmp:x:22: +public:x:32: +video:x:33: +games:x:40: +xok:x:41: +trusted:x:42: +modem:x:43: +ftp:x:49: +man:x:62: +users:x:100: +nobody:x:65533: +nogroup:x:65534:nobody +messagebus:!:101: +haldaemon:!:102: diff --git a/lib/distro-info/suse-10.1/prereqfiles/etc/passwd b/lib/distro-info/suse-10.1/prereqfiles/etc/passwd new file mode 100644 index 00000000..9b8fc4fe --- /dev/null +++ b/lib/distro-info/suse-10.1/prereqfiles/etc/passwd @@ -0,0 +1,14 @@ +root:x:0:0:root:/root:/bin/bash +bin:x:1:1:bin:/bin:/bin/bash +daemon:x:2:2:Daemon:/sbin:/bin/bash +lp:x:4:7:Printing daemon:/var/spool/lpd:/bin/bash +mail:x:8:12:Mailer daemon:/var/spool/clientmqueue:/bin/false +news:x:9:13:News system:/etc/news:/bin/bash +uucp:x:10:14:Unix-to-Unix CoPy system:/etc/uucp:/bin/bash +games:x:12:100:Games account:/var/games:/bin/bash +man:x:13:62:Manual pages viewer:/var/cache/man:/bin/bash +wwwrun:x:30:8:WWW daemon apache:/var/lib/wwwrun:/bin/false +ftp:x:40:49:FTP account:/srv/ftp:/bin/bash +nobody:x:65534:65533:nobody:/var/lib/nobody:/bin/bash +messagebus:x:100:101:User for D-Bus:/var/run/dbus:/bin/false +haldaemon:x:101:102:User for haldaemon:/var/run/hal:/bin/false diff --git a/lib/distro-info/suse-10.1/prereqfiles/etc/shadow b/lib/distro-info/suse-10.1/prereqfiles/etc/shadow new file mode 100644 index 00000000..cd100a5a --- /dev/null +++ b/lib/distro-info/suse-10.1/prereqfiles/etc/shadow @@ -0,0 +1,14 @@ +root::13481:::::: +bin:*:13481:::::: +daemon:*:13481:::::: +lp:*:13481:::::: +mail:*:13481:::::: +news:*:13481:::::: +uucp:*:13481:::::: +games:*:13481:::::: +man:*:13481:::::: +wwwrun:*:13481:::::: +ftp:*:13481:::::: +nobody:*:13481:::::: +messagebus:!:13481:0::7::: +haldaemon:!:13481:0::7::: diff --git a/lib/distro-info/suse-10.1/settings b/lib/distro-info/suse-10.1/settings new file mode 100644 index 00000000..b4b7d219 --- /dev/null +++ b/lib/distro-info/suse-10.1/settings @@ -0,0 +1,107 @@ +$repository{base} = { + 'urls' => " + http://ftp.gwdg.de/pub/opensuse/distribution/SL-10.1/inst-source + ftp://suse.inode.at/opensuse/distribution/SL-10.1/inst-source + http://mirrors.uol.com.br/pub/suse/distribution/SL-10.1/inst-source + ftp://klid.dk/opensuse/distribution/SL-10.1/inst-source + ftp://ftp.estpak.ee/pub/suse/opensuse/distribution/SL-10.1/inst-source + ftp://ftp.jaist.ac.jp/pub/Linux/openSUSE/distribution/SL-10.1/inst-source + ", + 'name' => 'SUSE Linux 10.1', + 'repo-subdir' => 'suse', +}; + +$repository{base_update} = { + 'urls' => " + http://ftp.gwdg.de/pub/suse/update/10.1 + ", + 'name' => 'SUSE Linux 10.1 updates', + 'repo-subdir' => '', +}; + +$package_subdir = 'suse'; + +$prereq_packages = " + i586/bzip2-1.0.3-15.i586.rpm + i586/glibc-2.4-25.i586.rpm i586/glibc-2.4-31.1.i586.rpm + i586/popt-1.7-268.i586.rpm + i586/rpm-4.4.2-40.i586.rpm i586/rpm-4.4.2-43.4.i586.rpm + i586/zlib-1.2.3-13.i586.rpm +"; + +$bootstrap_prereq_packages = ""; + +$bootstrap_packages = " + i586/aaa_base-10.1-41.i586.rpm + i586/aaa_skel-2006.3.29-5.i586.rpm i586/aaa_skel-2006.5.19-0.2.i586.rpm + i586/ash-1.6.1-13.i586.rpm + i586/bash-3.1-22.i586.rpm i586/bash-3.1-24.3.i586.rpm + i586/blocxx-1.0.0-15.i586.rpm + i586/coreutils-5.93-20.i586.rpm + i586/cpio-2.6-17.i586.rpm + i586/cracklib-2.8.6-12.i586.rpm + i586/cyrus-sasl-2.1.21-18.i586.rpm + i586/db-4.3.29-13.i586.rpm + i586/diffutils-2.8.7-15.i586.rpm + i586/e2fsprogs-1.38-25.i586.rpm + i586/expat-2.0.0-11.i586.rpm + i586/file-4.16-13.i586.rpm i586/file-4.16-15.4.i586.rpm + i586/filesystem-10.1-5.i586.rpm + i586/fillup-1.42-116.i586.rpm + i586/findutils-4.2.27-12.i586.rpm + i586/gawk-3.1.5-18.i586.rpm + i586/gdbm-1.8.3-241.i586.rpm + i586/gpg-1.4.2-23.i586.rpm i586/gpg-1.4.2-23.7.i586.rpm + i586/grep-2.5.1a-18.i586.rpm + i586/gzip-1.3.5-157.i586.rpm i586/gzip-1.3.5-159.5.i586.rpm + i586/info-4.8-20.i586.rpm + i586/insserv-1.04.0-18.i586.rpm + i586/irqbalance-0.09-58.i586.rpm + i586/kernel-default-2.6.16.21-0.25.i586.rpm + i586/libacl-2.2.34-12.i586.rpm + i586/libattr-2.4.28-14.i586.rpm + i586/libcom_err-1.38-25.i586.rpm + i586/libgcc-4.1.0-25.i586.rpm + i586/libstdc++-4.1.0-25.i586.rpm + i586/libxcrypt-2.4-10.i586.rpm + i586/libzio-0.1-15.i586.rpm + i586/limal-1.1.6-8.i586.rpm + i586/limal-bootloader-1.1.2-7.i586.rpm + i586/limal-perl-1.1.6-8.i586.rpm + i586/logrotate-3.7.3-11.i586.rpm + i586/mdadm-2.2-30.i586.rpm + i586/mingetty-0.9.6s-86.i586.rpm + i586/mkinitrd-1.2-103.i586.rpm i586/mkinitrd-1.2-106.19.i586.rpm + i586/mktemp-1.5-742.i586.rpm + i586/module-init-tools-3.2.2-32.i586.rpm i586/module-init-tools-3.2.2-32.13.i586.rpm + i586/ncurses-5.5-16.i586.rpm + i586/net-tools-1.60-581.i586.rpm + i586/openldap2-client-2.3.19-18.i586.rpm + i586/openssl-0.9.8a-16.i586.rpm i586/openssl-0.9.8a-18.10.i586.rpm + i586/pam-0.99.3.0-25.i586.rpm i586/pam-0.99.3.0-29.3.i586.rpm + i586/pciutils-2.2.1-14.i586.rpm + i586/pcre-6.4-12.i586.rpm + i586/perl-5.8.8-12.i586.rpm + i586/perl-Bootloader-0.2.20-7.i586.rpm i586/perl-Bootloader-0.2.27-0.4.i586.rpm + i586/perl-gettext-1.05-11.i586.rpm + i586/permissions-2006.2.24-8.i586.rpm + i586/readline-5.1-22.i586.rpm + i586/reiserfs-3.6.19-17.i586.rpm + i586/sed-4.1.4-15.i586.rpm + i586/suse-release-10.1-9.i586.rpm + i586/sysvinit-2.86-19.i586.rpm + i586/udev-085-29.i586.rpm i586/udev-085-30.15.i586.rpm + i586/util-linux-2.12r-35.i586.rpm + noarch/suse-build-key-1.0-685.noarch.rpm + i586/libxml2-2.6.23-13.i586.rpm + i586/libxml2-python-2.6.23-15.i586.rpm + i586/python-2.4.2-18.i586.rpm + i586/python-elementtree-1.2.6-18.i586.rpm + i586/python-sqlite-1.1.6-17.i586.rpm + i586/python-urlgrabber-2.9.7-15.i586.rpm + i586/rpm-python-4.4.2-40.i586.rpm + i586/sqlite-3.2.8-14.i586.rpm + i586/yum-2.4.2-13.i586.rpm +"; + +$selection{default} = "list any packagenames here"; diff --git a/lib/distro-info/suse-10.1/settings.local b/lib/distro-info/suse-10.1/settings.local new file mode 100644 index 00000000..cfd2e2cf --- /dev/null +++ b/lib/distro-info/suse-10.1/settings.local @@ -0,0 +1,8 @@ +# Use local installation sources. +$repository{base}->{url} = 'ftp://localhost/pub/opensuse/distribution/SL-10.1/inst-source'; +$repository{base_update}->{url} = 'ftp://localhost/pub/suse/update/10.1'; + +# Add a new selection: +$selection{kde} = "$selection{default} kdepim3 +even more packagenames here +and more"; diff --git a/lib/distro-info/suse-10.1/trusted-package-keys/gpg-pubkey-0dfb3188-41ed929b.asc b/lib/distro-info/suse-10.1/trusted-package-keys/gpg-pubkey-0dfb3188-41ed929b.asc new file mode 100644 index 00000000..7ec5c58d --- /dev/null +++ b/lib/distro-info/suse-10.1/trusted-package-keys/gpg-pubkey-0dfb3188-41ed929b.asc @@ -0,0 +1,17 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1.4.2 (GNU/Linux) + +mQGiBEHtkpsRBACRHiXh3olS++6/Mp9N7ByGMmjaaE+Y8cJQLUPG1myrbW5aogIP +0WenayhGbbgOHNWgd5dQ8KQpYYFoQuUHjFYzj5MvgrdOENOvD7ZNJ6+EmbkNh5cV +zUYfNG9jdiGweZkyA1sh8DYS0JiUmQ4CzaBD/DotB/dCmDcyuNQFiw4qKwCglQah +ATyueBRsOiXl0NIs1uB6dkkD/1A2YmQ6te1q38a1J+a8os6bDlMZhVnkZdhJdw6x +eBwUb9XS0n7hyt/AKCcBnrDEUQJuhBMNgzctJvbuMv27yRMANAXZDQkp0ip/yHLJ +PhUdSNTTRHOL9bV3t+JuZ9xmuclprwyrrJYUkEESXNc0tkuczHBP2c/RqA3OxYHt +hrHLA/9Pqe2gEleeo8l26u/uFXs2dtwjh8EZmdhHoqGcOlpYR4DyAg2D+jYfh3RI +oPzIwRlHVUR1ii5h8iPi98BVuEvukwfbbQ1K22Jwzxt6w3ihCXBKWKbeC3ElIMfA +hVMchLFUbTAw+yodO/u3NHxKQ34+ginid9dVyxV5T0gpDEEHObQrT3BlbiBFbnRl +cnByaXNlIFNlcnZlciA8c3VwcG9ydEBub3ZlbGwuY29tPoheBBMRAgAeBQJB7ZKb +AhsDBgsJCAcDAgMVAgMDFgIBAh4BAheAAAoJEHPSXWMN+zGID4oAoJPTGZbZApW+ +tuU422mHYGwoqgjrAJ9fhzRhRbV3YsOxKUomNeuIfmWGXA== +=Qv5+ +-----END PGP PUBLIC KEY BLOCK----- diff --git a/lib/distro-info/suse-10.1/trusted-package-keys/gpg-pubkey-1d061a62-427a396f.asc b/lib/distro-info/suse-10.1/trusted-package-keys/gpg-pubkey-1d061a62-427a396f.asc new file mode 100644 index 00000000..47973627 --- /dev/null +++ b/lib/distro-info/suse-10.1/trusted-package-keys/gpg-pubkey-1d061a62-427a396f.asc @@ -0,0 +1,19 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1.4.2 (GNU/Linux) + +mQGiBEJ6OW8RBACVVHdTmdbEyYl7irkqhcpW0a7dDSxTR1+dHzhBKUqXs7K46XTj +hfJfkHRgejAchbC6p+KEGBU/zTpa0O413WHBhYcaOFafMThDaiN70htBDocx0cNd +Octd4ZIgHXH6dqVS7gkfh1+oLyl54N86PAPrwa0h9chuj5lliHoTvKCdNwCggtw9 +UNWr+Qe7FpL9qb3w1lzyaWsD/joTRsVu1DYmlmFgib5OGkht0uIF8YjLg5ubeyqm +sm7dfeN2fo+DgRE7HYHAzEDPbtI+1t97xQo5EJuIWCjqtzF4o/H9OuT4B/rpDtIA +SiJN2+ZhPwxSddBOfYhv46WcKnSZLyfIEu+KOMlI1RxhkGEjPE9mX2y7DtgXRM6K +v5b8A/4rfX1eRugm45S2ghS8sTsJRoigbdIEA7eZIBWiKAZP+IgP6F3oUPoh2rwF +HfxwERWoFgBQYV4cIBKszn86+WY+PQdHv9B0C/TVHoJfrO0vqv9RmWRwDzCVzdiq +Fpy6hBs/KhLxUs1IYdsOgucYBUpmLBXWxEMjD9sQiUPhsiqjorQ9YnVpbGRAbm92 +ZWxsLmNvbSAoTm92ZWxsIExpbnV4IFByb2R1Y3RzKSA8c3VwcG9ydEBub3ZlbGwu +Y29tPohfBBMRAgAfBQJCejlvBQkJZgGABAsHAwIDFQIDAxYCAQIeAQIXgAAKCRAq +/hZCHQYaYp2yAJoD28kmYjNdM9W6Lssz5HpNWQBODACdHL9KRgNNfzl81er81rT+ +e5Q4N+mITAQTEQIADAUCQtOtxgWDCQyNKQAKCRCoTtronIAKyo1iAJ48A995oM0h +AwtfFLFJ6ZsX4Fvq4wCfdTR6BbImJj3tmhYn3tC+Vy84ciQ= +=Za9P +-----END PGP PUBLIC KEY BLOCK----- diff --git a/lib/distro-info/suse-10.1/trusted-package-keys/gpg-pubkey-307e3d54-44201d5d.asc b/lib/distro-info/suse-10.1/trusted-package-keys/gpg-pubkey-307e3d54-44201d5d.asc new file mode 100644 index 00000000..5319bfe8 --- /dev/null +++ b/lib/distro-info/suse-10.1/trusted-package-keys/gpg-pubkey-307e3d54-44201d5d.asc @@ -0,0 +1,13 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1.4.2 (GNU/Linux) + +mIsERCAdXQEEAL7MrBTz+3SBWpCm2ae2yaDqV3ezQcs2JlvqidJVhsZqQe9/jkxi +KTEQW5+TXF/+BlQSiebunRI7oo3+9U8GyRCgs1sf+yRQWMLzZqRaarzRhw9w+Ihl +edtqYl6/U2JZCb8Adp6d7RzlRliJdJ/VtsfXj2ef7Dwu7elOVSsmaBdtAAYptChT +dVNFIFBhY2thZ2UgU2lnbmluZyBLZXkgPGJ1aWxkQHN1c2UuZGU+iLgEEwECACIF +AkQgHV0CGwMFCQQ9AoAECwcDAgMVAgMDFgIBAh4BAheAAAoJEOOlw2Awfj1UjUIE +AIf3SLlrfj2RsCDjyYThXen+A/WTYDPbY+NYmmVvFQilHNQY9ZrJ5cNohRQu6hA+ +Sccrf11Uy24tTHWSTzuG9VzFeeIAcIU02XHar0w3QbvTk6IqeG+OZlfOGJj1sdx4 +JKwpwk9mSdrq2ELhrkPZiVWS7RmRkPr2klwYgKGWbmOJ +=ZmDA +-----END PGP PUBLIC KEY BLOCK----- diff --git a/lib/distro-info/suse-10.1/trusted-package-keys/gpg-pubkey-3d25d3d9-36e12d04.asc b/lib/distro-info/suse-10.1/trusted-package-keys/gpg-pubkey-3d25d3d9-36e12d04.asc new file mode 100644 index 00000000..ead21308 --- /dev/null +++ b/lib/distro-info/suse-10.1/trusted-package-keys/gpg-pubkey-3d25d3d9-36e12d04.asc @@ -0,0 +1,30 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1.4.2 (GNU/Linux) + +mQENAzbhLQQAAAEIAKAkXHe0lWRBXLpn38hMHy03F0I4Sszmoc8aaKJrhfhyMlOA +BqvklPLE2f9UrI4Xc860gH79ZREwAgPt0pi6+SleNFLNcNFAuuHMLQOOsaMFatbz +JR9i4m/lf6q929YROu5zB48rBAlcfTm+IBbijaEdnqpwGib45wE/Cfy6FAttBHQh +1Kp+r/jPbf1mYAvljUfHKuvbg8t2EIQz/5yGp+n5trn9pElfQO2cRBq8LFpf1l+U +P7EKjFmlOq+Gs/fF98/dP3DfniSd78LQPq5vp8RL8nr/o2i7jkAQ33m4f1wOBWd+ +cZovrKXYlXiR+Bf7m2hpZo+/sAzhd7LmAD0l09kABRG0JVN1U0UgU2VjdXJpdHkg +VGVhbSA8c2VjdXJpdHlAc3VzZS5kZT6JARUDBRA24S1H5Fiyh7HKPEUBAVcOB/9b +yHYji1/+4Xc2GhvXK0FSJN0MGgeXgW47yxDL7gmR4mNgjlIOUHZj0PEpVjWepOJ7 +tQS3L9oP6cpj1Fj/XxuLbkp5VCQ61hpt54coQAvYrnT9rtWEGN+xmwejT1WmYmDJ +xG+EGBXKr+XP69oIUl1E2JO3rXeklulgjqRKos4cdXKgyjWZ7CP9V9daRXDtje63 +Om8gwSdU/nCvhdRIWp/Vwbf7Ia8iZr9OJ5YuQl0DBG4qmGDDrvImgPAFkYFzwlqo +choXFQ9y0YVCV41DnR+GYhwl2qBd81T8aXhihEGPIgaw3g8gd8B5o6mPVgl+nJqI +BkEYGBusiag2pS6qwznZiQEVAwUQNuEtBHey5gA9JdPZAQFtOAf+KVh939b0J94u +v/kpg4xs1LthlhquhbHcKNoVTNspugiC3qMPyvSX4XcBr2PC0cVkS4Z9PY9iCfT+ +x9WM96g39dAF+le2CCx7XISk9XXJ4ApEy5g4AuK7NYgAJd39PPbERgWnxjxir9g0 +Ix30dS30bW39D+3NPU5Ho9TD/B7UDFvYT5AWHl3MGwo3a1RhTs6sfgL7yQ3U+mvq +MkTExZb5mfN1FeaYKMopoI4VpzNVeGxQWIz67VjJHVyUlF20ekOz4kWVgsxkc8G2 +saqZd6yv2EwqYTi8BDAduweP33KrQc4KDDommQNDOXxaKOeCoESIdM4p7Esdjq1o +L0oixF12CohGBBARAgAGBQI7HmHDAAoJEJ5A4xAACqukTlQAoI4QzP9yjPohY7OU +F7J3eKBTzp25AJ42BmtSd3pvm5ldmognWF3Trhp+GYkAlQMFEDe3O8IWkDf+zvyS +FQEBAfkD/3GG5UgJj18UhYmh1gfjIlDcPAeqMwSytEHDENmHC+vlZQ/p0mT9tPiW +tp34io54mwr+bLPN8l6B5GJNkbGvH6M+mO7R8Lj4nHL6pyAv3PQr83WyLHcaX7It +Klj371/4yzKV6qpz43SGRK4MacLo2rNZ/dNej7lwPCtzCcFYwqkiiEYEEBECAAYF +AjoaQqQACgkQx1KqMrDf94ArewCfWnTUDG5gNYkmHG4bYL8fQcizyA4An2eVo/n+ +3J2KRWSOhpAMsnMxtPbB +=Ay23 +-----END PGP PUBLIC KEY BLOCK----- diff --git a/lib/distro-info/suse-10.1/trusted-package-keys/gpg-pubkey-9c800aca-40d8063e.asc b/lib/distro-info/suse-10.1/trusted-package-keys/gpg-pubkey-9c800aca-40d8063e.asc new file mode 100644 index 00000000..b49e52d2 --- /dev/null +++ b/lib/distro-info/suse-10.1/trusted-package-keys/gpg-pubkey-9c800aca-40d8063e.asc @@ -0,0 +1,37 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1.4.2 (GNU/Linux) + +mQGiBDnu9IERBACT8Y35+2vv4MGVKiLEMOl9GdST6MCkYS3yEKeueNWc+z/0Kvff +4JctBsgs47tjmiI9sl0eHjm3gTR8rItXMN6sJEUHWzDP+Y0PFPboMvKx0FXl/A0d +M+HFrruCgBlWt6FA+okRySQiliuI5phwqkXefl9AhkwR8xocQSVCFxcwvwCglVcO +QliHu8jwRQHxlRE0tkwQQI0D+wfQwKdvhDplxHJ5nf7U8c/yE/vdvpN6lF0tmFrK +XBUX+K7u4ifrZlQvj/81M4INjtXreqDiJtr99Rs6xa0ScZqITuZC4CWxJa9GynBE +D3+D2t1V/f8l0smsuYoFOF7Ib49IkTdbtwAThlZp8bEhELBeGaPdNCcmfZ66rKUd +G5sRA/9ovnc1krSQF2+sqB9/o7w5/q2qiyzwOSTnkjtBUVKn4zLUOf6aeBAoV6NM +CC3Kj9aZHfA+ND0ehPaVGJgjaVNFhPi4x0e7BULdvgOoAqajLfvkURHAeSsxXIoE +myW/xC1sBbDkDUIBSx5oej73XCZgnj/inphRqGpsb+1nKFvF+rQoU3VTRSBQYWNr +YWdlIFNpZ25pbmcgS2V5IDxidWlsZEBzdXNlLmRlPohiBBMRAgAiBQJA2AY+AhsD +BQkObd+9BAsHAwIDFQIDAxYCAQIeAQIXgAAKCRCoTtronIAKypCfAJ9RuZ6ZSV7Q +W4pTgTIxQ+ABPp0sIwCffG9bCNnrETPlgOn+dGEkAWegKL+IRgQQEQIABgUCOnBe +UgAKCRCeQOMQAAqrpNzOAKCL512FZvv4VZx94TpbA9lxyoAejACeOO1HIbActAev +k5MUBhNeLZa/qM2JARUDBRA6cGBvd7LmAD0l09kBATWnB/9An5vfiUUE1VQnt+T/ +EYklES3tXXaJJp9pHMa4fzFa8jPVtv5UBHGee3XoUNDVwM2OgSEISZxbzdXGnqIl +cT08TzBUD9i579uifklLsnr35SJDZ6ram51/CWOnnaVhUzneOA9gTPSr+/fT3WeV +nwJiQCQ30kNLWVXWATMnsnT486eAOlT6UNBPYQLpUprF5Yryk23pQUPAgJENDEqe +U6iIO9Ot1ZPtB0lniw+/xCi13D360o1tZDYOp0hHHJN3D3EN8C1yPqZd5CvvznYv +B6bWBIpWcRgdn2DUVMmpU661jwqGlRz1F84JG/xe4jGuzgpJt9IXSzyohEJB6XG5 ++D0BuQINBDnu9JIQCACEkdBN6Mxf5WvqDWkcMRy6wnrd9DYJ8UUTmIT2iQf07tRU +KJJ9v0JXfx2Z4d08IQSMNRaq4VgSe+PdYgIy0fbj23Via5/gO7fJEpD2hd2f+pMn +OWvH2rOOIbeYfuhzAc6BQjAKtmgR0ERUTafTM9Wb6F13CNZZNZfDqnFDP6L12w3z +3F7FFXkz07Rs3AIto1ZfYZd4sCSpMr/0S5nLrHbIvGLp271hhQBeRmmoGEKO2JRe +lGgUJ2CUzOdtwDIKT0LbCpvaP8PVnYF5IFoYJIWRHqlEt5ucTXstZy7vYjL6vTP4 +l5xs+LIOkNmPhqmfsgLzVo0UaLt80hOwc4NvDCOLAAMGB/9g+9V3ORzw4LvO1pwR +YJqfDKUq/EJ0rNMMD4N8RLpZRhKHKJUm9nNHLbksnlZwrbSTM5LpC/U6sheLP+l0 +bLVoq0lmsCcUSyh+mY6PxWirLIWCn/IAZAGnXb6Zd6TtIJlGG6pqUN8QxGJYQnon +l0uTJKHJENbI9sWHQdcTtBMc34gorHFCo1Bcvpnc1LFLrWn7mfoGx6INQjf3HGQp +MXAWuSBQhzkazY6vaWFpa8bBJ+gKbBuySWzNm3rFtT5HRKMWpO+M9bHp4d+puY0L +1YwN1OMatcMMpcWnZpiWiR83oi32+xtWUY2U7Ae38mMag8zFbpeqPQUsDv9V7CAJ +1dbriEwEGBECAAwFAkDYBnoFCQ5t3+gACgkQqE7a6JyACspnpgCfRbYwxT3iq+9l +/PgNTUNTZOlof2oAn25y0eGi0371jap9kOV6uq71sUuO +=pJli +-----END PGP PUBLIC KEY BLOCK----- diff --git a/lib/distro-info/suse-10.1/trusted-package-keys/pubring.gpg b/lib/distro-info/suse-10.1/trusted-package-keys/pubring.gpg new file mode 100644 index 00000000..3e5ccffa Binary files /dev/null and b/lib/distro-info/suse-10.1/trusted-package-keys/pubring.gpg differ diff --git a/lib/distro-info/suse-10.2/prereqfiles/etc/group b/lib/distro-info/suse-10.2/prereqfiles/etc/group new file mode 100644 index 00000000..505cb221 --- /dev/null +++ b/lib/distro-info/suse-10.2/prereqfiles/etc/group @@ -0,0 +1,33 @@ +root:x:0: +bin:x:1:daemon +daemon:x:2: +sys:x:3: +tty:x:5: +disk:x:6: +lp:x:7: +www:x:8: +kmem:x:9: +wheel:x:10: +mail:x:12: +news:x:13: +uucp:x:14: +shadow:x:15: +dialout:x:16: +audio:x:17: +floppy:x:19: +cdrom:x:20: +console:x:21: +utmp:x:22: +public:x:32: +video:x:33: +games:x:40: +xok:x:41: +trusted:x:42: +modem:x:43: +ftp:x:49: +man:x:62: +users:x:100: +nobody:x:65533: +nogroup:x:65534:nobody +messagebus:!:101: +haldaemon:!:102: diff --git a/lib/distro-info/suse-10.2/prereqfiles/etc/passwd b/lib/distro-info/suse-10.2/prereqfiles/etc/passwd new file mode 100644 index 00000000..9b8fc4fe --- /dev/null +++ b/lib/distro-info/suse-10.2/prereqfiles/etc/passwd @@ -0,0 +1,14 @@ +root:x:0:0:root:/root:/bin/bash +bin:x:1:1:bin:/bin:/bin/bash +daemon:x:2:2:Daemon:/sbin:/bin/bash +lp:x:4:7:Printing daemon:/var/spool/lpd:/bin/bash +mail:x:8:12:Mailer daemon:/var/spool/clientmqueue:/bin/false +news:x:9:13:News system:/etc/news:/bin/bash +uucp:x:10:14:Unix-to-Unix CoPy system:/etc/uucp:/bin/bash +games:x:12:100:Games account:/var/games:/bin/bash +man:x:13:62:Manual pages viewer:/var/cache/man:/bin/bash +wwwrun:x:30:8:WWW daemon apache:/var/lib/wwwrun:/bin/false +ftp:x:40:49:FTP account:/srv/ftp:/bin/bash +nobody:x:65534:65533:nobody:/var/lib/nobody:/bin/bash +messagebus:x:100:101:User for D-Bus:/var/run/dbus:/bin/false +haldaemon:x:101:102:User for haldaemon:/var/run/hal:/bin/false diff --git a/lib/distro-info/suse-10.2/prereqfiles/etc/shadow b/lib/distro-info/suse-10.2/prereqfiles/etc/shadow new file mode 100644 index 00000000..cd100a5a --- /dev/null +++ b/lib/distro-info/suse-10.2/prereqfiles/etc/shadow @@ -0,0 +1,14 @@ +root::13481:::::: +bin:*:13481:::::: +daemon:*:13481:::::: +lp:*:13481:::::: +mail:*:13481:::::: +news:*:13481:::::: +uucp:*:13481:::::: +games:*:13481:::::: +man:*:13481:::::: +wwwrun:*:13481:::::: +ftp:*:13481:::::: +nobody:*:13481:::::: +messagebus:!:13481:0::7::: +haldaemon:!:13481:0::7::: diff --git a/lib/distro-info/suse-10.2/settings b/lib/distro-info/suse-10.2/settings new file mode 100644 index 00000000..98521087 --- /dev/null +++ b/lib/distro-info/suse-10.2/settings @@ -0,0 +1,111 @@ +$repository{base} = { + 'urls' => " + http://ftp.gwdg.de/pub/opensuse/distribution/10.2/repo/oss + ftp://suse.inode.at/opensuse/distribution/10.2/repo/oss + http://mirrors.uol.com.br/pub/suse/distribution/10.2/repo/oss + ftp://klid.dk/opensuse/distribution/10.2/repo/oss + ftp://ftp.estpak.ee/pub/suse/opensuse/distribution/10.2/repo/oss + ftp://ftp.jaist.ac.jp/pub/Linux/openSUSE/distribution/10.2/repo/oss + ", + 'name' => 'openSUSE 10.2', + 'repo-subdir' => '', +}; + +$repository{base_update} = { + 'urls' => " + http://ftp.gwdg.de/pub/suse/update/10.2 + ", + 'name' => 'openSUSE 10.2 updates', + 'repo-subdir' => 'suse', +}; + +$package_subdir = 'suse'; + +$prereq_packages = " + i586/bzip2-1.0.3-36.i586.rpm + i586/glibc-2.5-25.i586.rpm + i586/popt-1.7-304.i586.rpm + i586/rpm-4.4.2-76.i586.rpm + i586/zlib-1.2.3-33.i586.rpm +"; + +$bootstrap_prereq_packages = ""; + +$bootstrap_packages = " + i586/aaa_base-10.2-38.i586.rpm + i586/aaa_skel-2006.5.19-20.i586.rpm + i586/audit-libs-1.2.6-20.i586.rpm + i586/bash-3.1-55.i586.rpm + i586/blocxx-1.0.0-36.i586.rpm + i586/coreutils-6.4-10.i586.rpm + i586/cpio-2.6-40.i586.rpm + i586/cracklib-2.8.9-20.i586.rpm + i586/cyrus-sasl-2.1.22-28.i586.rpm + i586/db-4.4.20-16.i586.rpm + i586/diffutils-2.8.7-38.i586.rpm + i586/e2fsprogs-1.39-21.i586.rpm + i586/file-4.17-23.i586.rpm + i586/filesystem-10.2-22.i586.rpm + i586/fillup-1.42-138.i586.rpm + i586/findutils-4.2.28-24.i586.rpm + i586/gawk-3.1.5-41.i586.rpm + i586/gdbm-1.8.3-261.i586.rpm + i586/gpg-1.4.5-24.i586.rpm + i586/grep-2.5.1a-40.i586.rpm + i586/gzip-1.3.5-178.i586.rpm + i586/info-4.8-43.i586.rpm + i586/insserv-1.04.0-42.i586.rpm + i586/irqbalance-0.09-80.i586.rpm + i586/kernel-default-2.6.18.2-34.i586.rpm + i586/libacl-2.2.34-33.i586.rpm + i586/libattr-2.4.28-38.i586.rpm + i586/libcom_err-1.39-21.i586.rpm + i586/libgcc41-4.1.2_20061115-5.i586.rpm + i586/libstdc++41-4.1.2_20061115-5.i586.rpm + i586/libvolume_id-103-12.i586.rpm + i586/libxcrypt-2.4-30.i586.rpm + i586/libzio-0.2-20.i586.rpm + i586/limal-1.2.9-5.i586.rpm + i586/limal-bootloader-1.2.4-6.i586.rpm + i586/limal-perl-1.2.9-5.i586.rpm + i586/logrotate-3.7.4-21.i586.rpm + i586/mdadm-2.5.3-17.i586.rpm + i586/mingetty-0.9.6s-107.i586.rpm + i586/mkinitrd-1.2-149.i586.rpm + i586/mktemp-1.5-763.i586.rpm + i586/module-init-tools-3.2.2-62.i586.rpm + i586/ncurses-5.5-42.i586.rpm + i586/net-tools-1.60-606.i586.rpm + i586/openldap2-client-2.3.27-25.i586.rpm + i586/openssl-0.9.8d-17.i586.rpm + i586/openSUSE-release-10.2-35.i586.rpm + i586/pam-0.99.6.3-24.i586.rpm + i586/pciutils-2.2.4-13.i586.rpm + i586/pcre-6.7-21.i586.rpm + i586/perl-5.8.8-32.i586.rpm + i586/perl-Bootloader-0.4.5-3.i586.rpm + i586/perl-gettext-1.05-31.i586.rpm + i586/permissions-2006.11.13-5.i586.rpm + i586/readline-5.1-55.i586.rpm + i586/reiserfs-3.6.19-37.i586.rpm + i586/sed-4.1.5-21.i586.rpm + i586/sysvinit-2.86-47.i586.rpm + i586/udev-103-12.i586.rpm + i586/util-linux-2.12r-61.i586.rpm + noarch/pciutils-ids-2006.11.18-2.noarch.rpm + noarch/suse-build-key-1.0-707.noarch.rpm + i586/glib2-2.12.4-15.i586.rpm + i586/gnome-filesystem-0.1-288.i586.rpm + i586/libxml2-2.6.26-26.i586.rpm + i586/libxml2-python-2.6.26-29.i586.rpm + i586/rpm-python-4.4.2-76.i586.rpm + i586/python-2.5-19.i586.rpm + i586/python-sqlite-1.1.8-11.i586.rpm + i586/python-urlgrabber-3.1.0-18.i586.rpm + i586/python-xml-2.5-19.i586.rpm + i586/sqlite-3.3.8-14.i586.rpm + i586/yum-3.0.1-9.i586.rpm + i586/yum-metadata-parser-1.0.2-23.i586.rpm +"; + +$selection{default} = "list any packagenames here"; diff --git a/lib/distro-info/suse-10.2/settings.local b/lib/distro-info/suse-10.2/settings.local new file mode 100644 index 00000000..12750a41 --- /dev/null +++ b/lib/distro-info/suse-10.2/settings.local @@ -0,0 +1,8 @@ +# Use local installation sources. +# $repository{base}->{url} = "ftp://gab/pub/opensuse/distribution/10.2/repo/oss"; +# $repository{update}->{url} = "ftp://gab/pub/suse/update/10.2"; + +# Add a new selection: +$selection{kde} = "$selection{default} kdepim3 +even more packagenames here +and more"; -- cgit v1.2.3-55-g7522