#!/usr/bin/perl require "/opt/pakfire/lib/functions.pl"; my $interactive = 1; &Pakfire::logger("### IPFire Pakfire $Conf::version started!"); &Pakfire::checkcryptodb; ### Check if we are running as root # my $user = qx(whoami); chomp($user); unless ( "$user" eq "root" ) { &Pakfire::message("You must run pakfire as user root!"); exit 1; } unless (@ARGV) { &Pakfire::usage; } foreach (@ARGV) { if ("$_" =~ "^-") { $interactive = 0 if ("$_" eq "--non-interactive"); $interactive = 0 if ("$_" eq "-y"); } } if ("$ARGV[0]" eq "install") { &Pakfire::lock("on"); shift; ### Make sure that the list is not outdated. &Pakfire::dbgetlist("noforce"); open(FILE, "<$Conf::dbdir/lists/packages_list.db"); my @db = ; close(FILE); my $dep; my @deps; my $pak; my @paks; my @temp; my @templine; my $found = 0; my @all; foreach $pak (@ARGV) { unless ("$pak" =~ "^-") { $found = 0; foreach (@db) { @templine = split(/;/,$_); if ("$templine[0]" eq "$pak" ) { push(@paks,$pak); push(@all,$pak); @temp = &Pakfire::resolvedeps("$pak"); foreach $dep (@temp) { push(@deps,$dep) if $dep; push(@all,$dep) if $dep; } $found = 1; break; } } &Pakfire::message("\nThe pak \"$pak\" is not known. Please try running \"pakfire update\".") if ($found == 0); } } &Pakfire::message("\n\n### Packages to install:"); foreach (sort @paks) { my $size = &Pakfire::getsize("$_"); $size = &Pakfire::beautifysize($size); &Pakfire::message("# $_ \t\t - $size"); } &Pakfire::message("\n### Packages to install for dependencies:") if @deps; foreach (sort @deps) { my $size = &Pakfire::getsize("$_"); $size = &Pakfire::beautifysize($size); &Pakfire::message("# $_ \t\t - $size"); } my $totalsize; foreach (@all) { $totalsize = ($totalsize + &Pakfire::getsize("$_")); } $totalsize = &Pakfire::beautifysize($totalsize); &Pakfire::message("\n### Total size: \t ~ $totalsize\n"); if ($interactive) { &Pakfire::message("Is this okay? [y/N]"); my $ret = ; chomp($ret); &Pakfire::logger("Answer: $ret"); if ( $ret ne "y" ) { &Pakfire::message("Installation aborted."); exit 1; } } ### Download first foreach (sort @all) { &Pakfire::message("# --> Downloading: $_"); &Pakfire::getpak("$_", ""); } foreach (sort @all) { &Pakfire::setuppak("$_"); } &Pakfire::lock("off"); } elsif ("$ARGV[0]" eq "remove") { } elsif ("$ARGV[0]" eq "update") { my $force = "noforce"; &Pakfire::makeuuid(); &Pakfire::senduuid(); &Pakfire::getmirrors(); $force = "force" if ("$ARGV[1]" eq "--force"); &Pakfire::dbgetlist("$force"); } elsif ("$ARGV[0]" eq "upgrade") { my @upgradepaks = &Pakfire::dblist("upgrade", "noweb"); my @temp; foreach (@upgradepaks) { @temp = &Pakfire::resolvedeps("$_"); foreach (@temp) { push(@upgradepaks,$_) if $_; } } if (@upgradepaks) { &Pakfire::message(""); &Pakfire::message("We are going to install all packages listed above."); if ($interactive) { &Pakfire::message("Is this okay? [y/N]"); my $ret = ; chomp($ret); &Pakfire::logger("Answer: $ret"); if ( $ret ne "y" ) { &Pakfire::message("Installation aborted."); exit 1; } } } ### Download first foreach (sort @upgradepaks) { &Pakfire::message("# --> Downloading: $_"); &Pakfire::getpak("$_", ""); } foreach (sort @upgradepaks) { &Pakfire::upgradepak("$_"); } } elsif ("$ARGV[0]" eq "list") { &Pakfire::dblist("all", "noweb"); } elsif ("$ARGV[0]" eq "resolvedeps") { foreach (@ARGV) { next if ("$_" eq "resolvedeps"); &Pakfire::resolvedeps("$_"); } } else { &Pakfire::usage; } exit 0;