]> git.ipfire.org Git - ipfire-2.x.git/blobdiff - src/pakfire/pakfire
IPFire-Seeder gebaut...
[ipfire-2.x.git] / src / pakfire / pakfire
index 008382ce7ed8230505ac355a880422338cb20f5f..91d5fe7d5e2daa517a9433e7a0d43d1150c64419 100644 (file)
          exit 1;
        }
        
+       ### Check if there are running some other pakfire processes
+       #
+       #my $return = `pidof pakfire`;
+       #chomp($return);
+       #if ($return) {
+       #       &Pakfire::message("There are running some other pakfire processes...");
+       #       exit 1;
+       #}
+       
+       ### Check if we are started by another name
+       #
+       if ( $0 =~ /pakfire-update$/ ) {
+               &Pakfire::message("Running an update started by fcron.");
+               $ARGV[0] = "update";
+               $interactive = 0;
+       } elsif ( $0 =~ /pakfire-upgrade$/ ) {
+               &Pakfire::message("Running an upgrade started by fcron.");
+               $ARGV[0] = "upgrade";
+               $interactive = 0;
+       }
+       
        unless (@ARGV) {
                &Pakfire::usage;
        }
@@ -28,7 +49,6 @@
        }
 
        if ("$ARGV[0]" eq "install") {
-               &Pakfire::lock("on");
                shift;
                
                ### Make sure that the list is not outdated. 
                my @temp;
                my @templine;
                my $found = 0;
+               my $return;
                my @all;
                foreach $pak (@ARGV) {
                        unless ("$pak" =~ "^-") {
+                               $return = &Pakfire::isinstalled($pak);
+                               if ($return eq 0) {
+                                       &Pakfire::message("Package $pak is already installed.");
+                                       next; 
+                               }
                                $found = 0;
                                foreach (@db) {
                                        @templine = split(/;/,$_);
                                                break;
                                        }
                                }
-                               &Pakfire::message("\nThe pak \"$pak\" is not known. Please try running \"pakfire update\".") if ($found == 0);
+                               &Pakfire::message("");
+                               &Pakfire::message("The pak \"$pak\" is not known. Please try running \"pakfire update\".") if ($found == 0);
                        }
                }
+               
+               unless (@paks) {
+                       &Pakfire::message("No packages to install. Exiting...");
+                       exit 1;
+               }
 
-               &Pakfire::message("\n\n### Packages to install:");
-               foreach (sort @paks) {
-                 my $size = &Pakfire::getsize("$_");
+               &Pakfire::message("");
+               &Pakfire::message("");
+               &Pakfire::message("### Packages to install:");
+               foreach $pak (sort @paks) {
+                 my $size = &Pakfire::getsize("$pak");
                        $size = &Pakfire::beautifysize($size);
-                 &Pakfire::message("# $_  \t\t - $size");
+                 &Pakfire::message("# $pak  \t\t - $size");
                }
                
-               &Pakfire::message("\n### Packages to install for dependencies:") if @deps;
-               foreach (sort @deps) {
-                 my $size = &Pakfire::getsize("$_");
+               if (@deps) {
+                       my %sort = map{ $_, 1 } @deps;
+                       @deps = sort keys %sort;
+                       &Pakfire::message("");
+                       &Pakfire::message("### Packages to install for dependencies:");
+               }
+               foreach $dep (sort @deps) {
+                 my $size = &Pakfire::getsize("$dep");
                        $size = &Pakfire::beautifysize($size);
-                 &Pakfire::message("# $_  \t\t - $size");
+                 &Pakfire::message("# $dep  \t\t - $size");
                }
                
                my $totalsize;
-               foreach (@all) {
-                       $totalsize = ($totalsize + &Pakfire::getsize("$_"));
+               foreach $pak (@all) {
+                       $totalsize = ($totalsize + &Pakfire::getsize("$pak"));
                }
                $totalsize = &Pakfire::beautifysize($totalsize);
-               &Pakfire::message("\n### Total size: \t ~ $totalsize\n");
+               &Pakfire::message("");
+               &Pakfire::message("### Total size: \t ~ $totalsize");
+               &Pakfire::message("");
                
                if ($interactive) {
                  &Pakfire::message("Is this okay? [y/N]");
                          exit 1;
                        }
                }
+               
+               my %sort = map{ $_, 1 } @all;
+               @all = sort keys %sort;
 
                ### Download first
-               foreach (sort @all) {
-                       &Pakfire::message("# --> Downloading: $_");
-                       &Pakfire::getpak("$_", "");
+               foreach $pak (sort @all) {
+                       &Pakfire::message("# --> Downloading: $pak");
+                       &Pakfire::getpak("$pak", "");
                }
 
-               foreach (sort @all) {
-                       &Pakfire::setuppak("$_");
+               foreach $pak (sort @all) {
+                       &Pakfire::setuppak("$pak") if ($pak ne "");
                }
-               &Pakfire::lock("off");
                
        } elsif ("$ARGV[0]" eq "remove") {