###############################################################################
# #
# IPFire.org - A linux based firewall #
-# Copyright (C) 2007 Michael Tremer & Christian Schmidt #
+# Copyright (C) 2007-2015 IPFire Team <info@ipfire.org> #
# #
# 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 #
# #
###############################################################################
+ ### Clean up our environment
+ #
+ delete @ENV{qw(IFS CDPATH ENV BASH_ENV PATH)};
+ $< = $>;
+
require "/opt/pakfire/lib/functions.pl";
my $interactive = 1;
#
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;
}
exit 1;
}
- &Pakfire::message("");
- &Pakfire::message("");
- &Pakfire::message("PAKFIRE INFO: Packages to install:");
- foreach $pak (sort @paks) {
- my $size = &Pakfire::getsize("$pak");
- $size = &Pakfire::beautifysize($size);
- &Pakfire::message("PAKFIRE INFO: $pak \t - $size");
- }
-
if (@deps) {
my %sort = map{ $_, 1 } @deps;
- @deps = sort keys %sort;
+ @deps = keys %sort;
&Pakfire::message("");
&Pakfire::message("PAKFIRE INFO: Packages to install for dependencies:");
}
- foreach $dep (sort @deps) {
+ foreach $dep (@deps) {
my $size = &Pakfire::getsize("$dep");
$size = &Pakfire::beautifysize($size);
&Pakfire::message("PAKFIRE INFO: $dep \t - $size");
}
+
+ &Pakfire::message("");
+ &Pakfire::message("");
+ &Pakfire::message("PAKFIRE INFO: Packages to install:");
+ foreach $pak (@paks) {
+ my $size = &Pakfire::getsize("$pak");
+ $size = &Pakfire::beautifysize($size);
+ &Pakfire::message("PAKFIRE INFO: $pak \t - $size");
+ }
my $totalsize;
foreach $pak (@all) {
&Pakfire::logger("PAKFIRE INFO: Interaction skipped.");
}
- my %sort = map{ $_, 1 } @all;
- @all = sort keys %sort;
+# my %sort = map{ $_, 1 } @all;
+# @all = sort keys %sort;
### Download first
- foreach $pak (sort @all) {
+ foreach $pak (@all) {
&Pakfire::getpak("$pak", "");
}
&Pakfire::message("");
- foreach $pak (sort @all) {
+ foreach $pak (@deps) {
&Pakfire::setuppak("$pak") if ($pak ne "");
}
+
+ foreach $pak (@paks) {
+ &Pakfire::setuppak("$pak") if ($pak ne "");
+ }
+
+
} elsif ("$ARGV[0]" eq "remove") {
shift;
} elsif ("$ARGV[0]" eq "upgrade") {
&Pakfire::upgradecore();
my @upgradepaks = &Pakfire::dblist("upgrade", "noweb");
- my @temp;
-
- foreach (@upgradepaks) {
- @temp = &Pakfire::resolvedeps("$_");
- foreach (@temp) { push(@upgradepaks,$_) if $_; }
- }
-
+
if (@upgradepaks) {
+ # Resolve the dependencies of the to be upgraded packages
+ my @deps = &Pakfire::resolvedeps_recursive(@upgradepaks);
+
&Pakfire::message("");
&Pakfire::message("PAKFIRE UPGR: We are going to install all packages listed above.");
if ($interactive) {
}
}
- ### Download first
- foreach (sort @upgradepaks) {
- &Pakfire::getpak("$_", "");
+ # Download packages
+ foreach $pak (@upgradepaks) {
+ &Pakfire::getpak("$pak", "");
}
-
- foreach (sort @upgradepaks) {
- &Pakfire::upgradepak("$_");
+
+ # Download dependencies
+ foreach $pak (@deps) {
+ &Pakfire::getpak("$pak", "");
+ }
+
+ # Install dependencies first
+ foreach $pak (@deps) {
+ &Pakfire::setuppak("$pak");
+ }
+
+ # Install all upgrades
+ foreach $pak (@upgradepaks) {
+ &Pakfire::upgradepak("$pak");
}
} elsif ("$ARGV[0]" eq "list") {