X-Git-Url: http://git.ipfire.org/?p=people%2Fpmueller%2Fipfire-2.x.git;a=blobdiff_plain;f=src%2Fpakfire%2Fpakfire;h=a9981fd8325f7f867d334d405b48a9895097237f;hp=750e6e00b3bc5b3b649ee104061d34f77cf652ae;hb=d046fed05c9773b774b446f13c2eb7d9afb08ffe;hpb=e3670217a27c6f0f7430f2582e72e6c2a7e3d660 diff --git a/src/pakfire/pakfire b/src/pakfire/pakfire index 750e6e00b3..a9981fd832 100644 --- a/src/pakfire/pakfire +++ b/src/pakfire/pakfire @@ -1,8 +1,33 @@ #!/usr/bin/perl +############################################################################### +# # +# IPFire.org - A linux based firewall # +# Copyright (C) 2007 Michael Tremer & Christian Schmidt # +# # +# This program is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see . # +# # +############################################################################### + + ### Clean up our environment + # + delete @ENV{qw(IFS CDPATH ENV BASH_ENV PATH)}; + $< = $>; require "/opt/pakfire/lib/functions.pl"; my $interactive = 1; + my $force = "noforce"; &Pakfire::logger("PAKFIRE INFO: IPFire Pakfire $Conf::version started!"); &Pakfire::checkcryptodb; @@ -25,10 +50,16 @@ # if ( $0 =~ /pakfire-update$/ ) { &Pakfire::message("CRON INFO: Running an update"); + my $random = int(rand(60)); + &Pakfire::logger("CRON INFO: Waiting for $random seconds."); + sleep($random); $ARGV[0] = "update"; $interactive = 0; } elsif ( $0 =~ /pakfire-upgrade$/ ) { &Pakfire::message("CRON INFO: Running an upgrade"); + my $random = int(rand(3600)); + &Pakfire::logger("CRON INFO: Waiting for $random seconds."); + sleep($random); $ARGV[0] = "upgrade"; $interactive = 0; } @@ -45,6 +76,10 @@ # Turn off shell colors - Bad for displaying in webinterface $Pakfire::enable_colors = 0 if ("$_" eq "--no-colors"); + + # Turn on force mode + $force = "force" if ("$_" eq "-f" ); + $force = "force" if ("$_" eq "--force" ); } } @@ -207,12 +242,14 @@ } elsif ("$ARGV[0]" eq "update") { &Pakfire::makeuuid(); &Pakfire::senduuid(); - &Pakfire::getmirrors(); - &Pakfire::dbgetlist("force"); + &Pakfire::getmirrors("$force"); + &Pakfire::dbgetlist("$force"); + &Pakfire::getcoredb("$force"); } elsif ("$ARGV[0]" eq "upgrade") { + &Pakfire::upgradecore(); my @upgradepaks = &Pakfire::dblist("upgrade", "noweb"); - my @temp; + my @temp, $pak; foreach (@upgradepaks) { @temp = &Pakfire::resolvedeps("$_"); @@ -235,12 +272,15 @@ } ### Download first - foreach (sort @upgradepaks) { - &Pakfire::getpak("$_", ""); + foreach $pak (sort @upgradepaks) { + system("mv $Conf::dbdir/meta/meta-$pak $Conf::dbdir/meta/old-meta-$pak"); + &Pakfire::getpak("$pak", ""); } - foreach (sort @upgradepaks) { - &Pakfire::upgradepak("$_"); + foreach $pak (sort @upgradepaks) { + if (&Pakfire::upgradepak("$pak")) { + system("mv $Conf::dbdir/meta/old-meta-$pak $Conf::dbdir/meta/meta-$pak"); + } } } elsif ("$ARGV[0]" eq "list") { @@ -257,10 +297,22 @@ next if ("$_" =~ "^-"); &Pakfire::resolvedeps("$_"); } + } elsif ("$ARGV[0]" eq "enable") { + if ("$ARGV[1]" eq "updates") { + system("ln -s ../../opt/pakfire/pakfire /etc/fcron.daily/pakfire-update"); + } elsif ("$ARGV[1]" eq "upgrades") { + system("ln -s ../../opt/pakfire/pakfire /etc/fcron.daily/pakfire-upgrade"); + } + } elsif ("$ARGV[0]" eq "disable") { + if ("$ARGV[1]" eq "updates") { + system("rm -f /etc/fcron.daily/pakfire-update"); + } elsif ("$ARGV[1]" eq "upgrades") { + system("rm -f /etc/fcron.daily/pakfire-upgrade"); + } } else { &Pakfire::usage; } -&Pakfire::logger("PAKFIRE INFO: Pakfire has finished. Closing."); + &Pakfire::logger("PAKFIRE INFO: Pakfire has finished. Closing."); -exit 0; + exit 0;