From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.haj.ipfire.org (localhost [127.0.0.1]) by mail02.haj.ipfire.org (Postfix) with ESMTP id 4Zvrh15Fd3z332Z for ; Sat, 10 May 2025 16:20:33 +0000 (UTC) Received: from mail01.ipfire.org (mail01.haj.ipfire.org [172.28.1.202]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mail01.haj.ipfire.org", Issuer "R10" (verified OK)) by mail02.haj.ipfire.org (Postfix) with ESMTPS id 4Zvrgy1jMVz2yv7 for ; Sat, 10 May 2025 16:20:30 +0000 (UTC) Received: from resqmta-c2p-570919.sys.comcast.net (resqmta-c2p-570919.sys.comcast.net [IPv6:2001:558:fd00:56::3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mail01.ipfire.org (Postfix) with ESMTPS id 4Zvrgs0CXjz15J for ; Sat, 10 May 2025 16:20:24 +0000 (UTC) Authentication-Results: mail01.ipfire.org; dkim=pass header.d=comcastmailservice.net header.s=20211018a header.b="V6smCv/z"; spf=none (mail01.ipfire.org: domain of stephen@firemypi.org has no SPF policy when checking 2001:558:fd00:56::3) smtp.mailfrom=stephen@firemypi.org; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=lists.ipfire.org; s=202003rsa; t=1746894029; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding:dkim-signature; bh=NdthcyawnEBeVr1R1L+ZWCxAphfSzgNdvICb3vcwacM=; b=xAJ+UCBdyYJknU5rmS6REoKXD8B6kJhn2HrryZwxzjI3gAXZGysaqwq1morHpQBhCQ2U11 oWO0qYk9LNqE/sfKjQ9ZCabp42yabkQ9lYX6PNoYLZl0Qmalv5xv/UNBtDw/Qpt45FAtE+ 8uMOoZ2Q+mjLYg5YGIiZ6WaaWO+6y0te/8DGIShxdrILU/jt6tnwztJrBPdnBwS288W7Q7 myGEBy0fQqRWPsbra+J/5293NOyFTJDOaeVq/QpEe/wuncA4bRZ9E7rRKGrC/LkmQtgXy0 iQxDze+g/QHygtztIaG4pkRhDORtvdi/dTY383ID19tTc1RY0mYl+BG2ccIzpQ== ARC-Seal: i=1; s=202003rsa; d=lists.ipfire.org; t=1746894029; a=rsa-sha256; cv=none; b=V50laZ47dxd3OZahNJKI891o+Z7qIRasWHM7ya+hvcm6oQYb9bBM4FQjHVPolcPwJF8Yqa WRAzuPxE6Ram8uXy5z2g4gNqIi398maHqjsg2CkOsqLDndY3TL98OfCnU5WnMjWv8xgH+M I+Z7VqFIHGgzcpsh9iSoL2FnMdXnQwsFWfNXZg1moodyzo06mvMH8OW5aWZpysfYeLbSNr NKV3kYoW9aTjIB72oxsud5cRLh7+Ngt5iuJUKnzRQhwj6vI71J2NHpPAT3WzfgZsvW01tv 2UEGZx3IULOWOgMDOipKN4GFbGJ/WNiS6vsyJR944g5DjSKmBMz1GT9i0glo+Q== ARC-Authentication-Results: i=1; mail01.ipfire.org; dkim=pass header.d=comcastmailservice.net header.s=20211018a header.b="V6smCv/z"; spf=none (mail01.ipfire.org: domain of stephen@firemypi.org has no SPF policy when checking 2001:558:fd00:56::3) smtp.mailfrom=stephen@firemypi.org; dmarc=none Received: from resomta-c2p-555921.sys.comcast.net ([96.102.18.229]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 256/256 bits) (Client did not present a certificate) by resqmta-c2p-570919.sys.comcast.net with ESMTPS id Dmi6uArQmhsrzDmvzuUInT; Sat, 10 May 2025 16:20:19 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=comcastmailservice.net; s=20211018a; t=1746894020; bh=NdthcyawnEBeVr1R1L+ZWCxAphfSzgNdvICb3vcwacM=; h=Received:Received:From:To:Subject:Date:Message-ID:MIME-Version: Content-Type:Xfinity-Spam-Result; b=V6smCv/zBKDZtHOu+3uUk0UVXzIz1Xo4mMGZ4t1lu4ibQwGQjPt2jLbxx8vHUdrgS Lckwlz5aiwE5PzStHELzjysajuzy8Ye46O65Gvztz929HWPaNUJYDl2rOAqwaHOzhK nq+6fPPr4MA8Ui1lcVIIfN08hvH9F/8AI23guxHNDgm0JGM16GkSPoQK4OX7WpC6By lPh8nbRRgfdkaivrK9/wXZazfgybwXf4oDTDUVXldQ4uDpTNHRHb1kccx9fSVPT3Jm CWBEvfbY9Yix6Aq6zs/vmALB5IjX1+09nvtQutiDOcZSL1nGrxlLURu2CC1hzpoCrg tyNFzDSFQVFdQ== Received: from lambda.localdomain ([75.70.122.243]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 256/256 bits) (Client did not present a certificate) by resomta-c2p-555921.sys.comcast.net with ESMTPSA id DmvwuQfjkoCr5DmvxuU146; Sat, 10 May 2025 16:20:18 +0000 From: Stephen Cuka To: development@lists.ipfire.org Cc: Stephen Cuka Subject: [PATCH] pakfire.cgi: Changes to install and remove confirmation pages Date: Sat, 10 May 2025 10:19:37 -0600 Message-ID: <20250510161942.2310286-1-stephen@firemypi.org> X-Mailer: git-send-email 2.43.0 Precedence: list List-Id: List-Subscribe: , List-Unsubscribe: , List-Post: List-Help: Sender: Mail-Followup-To: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-CMAE-Envelope: MS4xfBgB1vxFQ/IsOhtYCq/ASjOAyf0qWa/CsUEp+qglVdfrjU8q322wb87KuoNi4qIC9uSjoDKGvRb46HWBYGCEW99vx6VaQopDsqsh3+7RGpyCokZdC02H Q7h1ejwFD3wZV+V8X1vNIbtL+qM9xrZMcOx9+AAcAj24lK/JAlDav6o/jCVhY6XmAX2u/bVy8powyfBH9nymZH51eYHDdmAFzIaAhJMgqa7QqGr7L9OEk5cQ jBkafSu31uTKppprdnG8Gg== X-Rspamd-Server: mail01.haj.ipfire.org X-Rspamd-Queue-Id: 4Zvrgs0CXjz15J X-Spamd-Result: default: False [0.20 / 11.00]; BAYES_HAM(-3.00)[100.00%]; HFILTER_HELO_5(3.00)[resqmta-c2p-570919.sys.comcast.net]; MID_CONTAINS_FROM(1.00)[]; NEURAL_HAM(-1.00)[-1.000]; R_MIXED_CHARSET(0.73)[]; IP_REPUTATION_HAM(-0.22)[asn: 7922(-0.21), country: US(-0.01), ip: 2001:558:fd00:56::(0.00)]; R_DKIM_ALLOW(-0.20)[comcastmailservice.net:s=20211018a]; MIME_GOOD(-0.10)[text/plain]; MX_GOOD(-0.01)[]; ARC_NA(0.00)[]; FUZZY_RATELIMITED(0.00)[rspamd.com]; MIME_TRACE(0.00)[0:+]; RCPT_COUNT_TWO(0.00)[2]; DMARC_NA(0.00)[firemypi.org]; R_SPF_NA(0.00)[no SPF record]; RCVD_TLS_ALL(0.00)[]; DKIM_TRACE(0.00)[comcastmailservice.net:+]; RCVD_COUNT_TWO(0.00)[2]; FROM_EQ_ENVFROM(0.00)[]; FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; TO_MATCH_ENVRCPT_SOME(0.00)[]; DKIM_REPUTATION(0.00)[0]; RECEIVED_SPAMHAUS_PBL(0.00)[75.70.122.243:received]; ASN(0.00)[asn:7922, ipnet:2001:558::/29, country:US]; RCVD_VIA_SMTP_AUTH(0.00)[]; ARC_SIGNED(0.00)[lists.ipfire.org:s=202003rsa:i=1] X-Rspamd-Action: no action - On install confirmation page, add list of packages to install - if package is already installed, don't show it on the list - On install and remove confirmation pages, pad out translation of "Package:" to length of 10 so that the column spacing doesn't change for different languages. - Display dependencies for package(s) to remove in 'parent -> child' format. - Display packages in use in 'parent -> child' format. - Add translations for new text in all langs. - functional changes - When removing a package, remove it's dependencies. - Don't allow a package or dependency to be removed if other installed packages depend on it. Signed-off-by: Stephen Cuka --- doc/language_issues.de | 3 + doc/language_issues.en | 12 +- doc/language_issues.es | 3 + doc/language_issues.fr | 3 + doc/language_issues.it | 3 + doc/language_issues.nl | 3 + doc/language_issues.pl | 3 + doc/language_issues.ru | 3 + doc/language_issues.tr | 3 + html/cgi-bin/pakfire.cgi | 287 +++++++++++++++++++++++++++++++++------ langs/de/cgi-bin/de.pl | 9 ++ langs/en/cgi-bin/en.pl | 9 ++ langs/es/cgi-bin/es.pl | 9 ++ langs/fr/cgi-bin/fr.pl | 9 ++ langs/it/cgi-bin/it.pl | 9 ++ langs/nl/cgi-bin/nl.pl | 9 ++ langs/pl/cgi-bin/pl.pl | 9 ++ langs/ru/cgi-bin/ru.pl | 9 ++ langs/tr/cgi-bin/tr.pl | 9 ++ 19 files changed, 356 insertions(+), 48 deletions(-) diff --git a/doc/language_issues.de b/doc/language_issues.de index 9b15ac4f0..c1b777c35 100644 --- a/doc/language_issues.de +++ b/doc/language_issues.de @@ -636,8 +636,11 @@ WARNING: translation string unused: pakfire core update auto WARNING: translation string unused: pakfire dependecies found WARNING: translation string unused: pakfire health check WARNING: translation string unused: pakfire no dependecies found +WARNING: translation string unused: pakfire possible dependency WARNING: translation string unused: pakfire register WARNING: translation string unused: pakfire resolvdeps wait +WARNING: translation string unused: pakfire uninstall all +WARNING: translation string unused: pakfire uninstall package WARNING: translation string unused: pakfire update daily WARNING: translation string unused: password contains illegal characters WARNING: translation string unused: password crypting key diff --git a/doc/language_issues.en b/doc/language_issues.en index cd291da91..4cddceefd 100644 --- a/doc/language_issues.en +++ b/doc/language_issues.en @@ -1454,28 +1454,34 @@ WARNING: untranslated string: pakfire check deps = Checking dependencies... WARNING: untranslated string: pakfire configuration = Pakfire Configuration WARNING: untranslated string: pakfire confirm upgrades = Do you want to install all upgrades? WARNING: untranslated string: pakfire core update level = Core-Update-Level +WARNING: untranslated string: pakfire deps = Package dependencies: +WARNING: untranslated string: pakfire errors = Errors occurred: WARNING: untranslated string: pakfire finished = Pakfire has finished! Returning... WARNING: untranslated string: pakfire finished error = Pakfire has finished! Errors occurred, please check the log output before proceeding. WARNING: untranslated string: pakfire install = Install WARNING: untranslated string: pakfire install description = Please select one or more add-ons to install. WARNING: untranslated string: pakfire install package = Packages to install: +WARNING: untranslated string: pakfire installed = already installed WARNING: untranslated string: pakfire installed addons = Installed Add-ons: +WARNING: untranslated string: pakfire inuse = Packages in use: WARNING: untranslated string: pakfire invalid tree = Invalid repository selected +WARNING: untranslated string: pakfire keep = Packages to keep due to dependencies: WARNING: untranslated string: pakfire last core list update = Last core list update made WARNING: untranslated string: pakfire last package update = Last packages list update made WARNING: untranslated string: pakfire last serverlist update = Last server list update made WARNING: untranslated string: pakfire last update = Last update made -WARNING: untranslated string: pakfire possible dependency = There may be depending packages, here is a list of packages that need to be installed. +WARNING: untranslated string: pakfire no deps = No dependencies found. +WARNING: untranslated string: pakfire no remove = Due to dependencies, no packages can be removed. +WARNING: untranslated string: pakfire package = Package: WARNING: untranslated string: pakfire refresh list = Refresh List +WARNING: untranslated string: pakfire remove package = Packages to remove: WARNING: untranslated string: pakfire return = Return to Pakfire WARNING: untranslated string: pakfire system state = System Status WARNING: untranslated string: pakfire tree = Repository WARNING: untranslated string: pakfire tree stable = Stable WARNING: untranslated string: pakfire tree testing = Testing WARNING: untranslated string: pakfire tree unstable = Unstable -WARNING: untranslated string: pakfire uninstall all = Do you want to uninstall the following packages? WARNING: untranslated string: pakfire uninstall description = Please select one or more add-ons to remove. -WARNING: untranslated string: pakfire uninstall package = You want to uninstall the following packages: WARNING: untranslated string: pakfire updating = Updating pakfire database, please wait... WARNING: untranslated string: pakfire upgrade = Upgrade WARNING: untranslated string: pakfire upgrades = Available Upgrades: diff --git a/doc/language_issues.es b/doc/language_issues.es index 0d461c48d..7d4048dab 100644 --- a/doc/language_issues.es +++ b/doc/language_issues.es @@ -691,8 +691,11 @@ WARNING: translation string unused: pakfire core update auto WARNING: translation string unused: pakfire dependencies found WARNING: translation string unused: pakfire health check WARNING: translation string unused: pakfire no dependencies found +WARNING: translation string unused: pakfire possible dependency WARNING: translation string unused: pakfire register WARNING: translation string unused: pakfire resolvedeps wait +WARNING: translation string unused: pakfire uninstall all +WARNING: translation string unused: pakfire uninstall package WARNING: translation string unused: pakfire update daily WARNING: translation string unused: password contains illegal characters WARNING: translation string unused: password crypting key diff --git a/doc/language_issues.fr b/doc/language_issues.fr index 1fe0a9396..f9cd8ae65 100644 --- a/doc/language_issues.fr +++ b/doc/language_issues.fr @@ -666,8 +666,11 @@ WARNING: translation string unused: pakfire core update auto WARNING: translation string unused: pakfire dependencies found WARNING: translation string unused: pakfire health check WARNING: translation string unused: pakfire no dependencies found +WARNING: translation string unused: pakfire possible dependency WARNING: translation string unused: pakfire register WARNING: translation string unused: pakfire resolvedeps wait +WARNING: translation string unused: pakfire uninstall all +WARNING: translation string unused: pakfire uninstall package WARNING: translation string unused: pakfire update daily WARNING: translation string unused: password contains illegal characters WARNING: translation string unused: password crypting key diff --git a/doc/language_issues.it b/doc/language_issues.it index 195feec80..04bf0353d 100644 --- a/doc/language_issues.it +++ b/doc/language_issues.it @@ -620,8 +620,11 @@ WARNING: translation string unused: pakfire core update auto WARNING: translation string unused: pakfire dependencies found WARNING: translation string unused: pakfire health check WARNING: translation string unused: pakfire no dependencies found +WARNING: translation string unused: pakfire possible dependency WARNING: translation string unused: pakfire register WARNING: translation string unused: pakfire resolvedeps wait +WARNING: translation string unused: pakfire uninstall all +WARNING: translation string unused: pakfire uninstall package WARNING: translation string unused: pakfire update daily WARNING: translation string unused: password contains illegal characters WARNING: translation string unused: password crypting key diff --git a/doc/language_issues.nl b/doc/language_issues.nl index 22211c5dd..d37914f3d 100644 --- a/doc/language_issues.nl +++ b/doc/language_issues.nl @@ -619,8 +619,11 @@ WARNING: translation string unused: pakfire core update auto WARNING: translation string unused: pakfire dependencies found WARNING: translation string unused: pakfire health check WARNING: translation string unused: pakfire no dependencies found +WARNING: translation string unused: pakfire possible dependency WARNING: translation string unused: pakfire register WARNING: translation string unused: pakfire resolvedeps wait +WARNING: translation string unused: pakfire uninstall all +WARNING: translation string unused: pakfire uninstall package WARNING: translation string unused: pakfire update daily WARNING: translation string unused: password contains illegal characters WARNING: translation string unused: password crypting key diff --git a/doc/language_issues.pl b/doc/language_issues.pl index cb1700e0d..10fc61866 100644 --- a/doc/language_issues.pl +++ b/doc/language_issues.pl @@ -544,8 +544,11 @@ WARNING: translation string unused: pakfire core update auto WARNING: translation string unused: pakfire dependencies found WARNING: translation string unused: pakfire health check WARNING: translation string unused: pakfire no dependencies found +WARNING: translation string unused: pakfire possible dependency WARNING: translation string unused: pakfire register WARNING: translation string unused: pakfire resolvedeps wait +WARNING: translation string unused: pakfire uninstall all +WARNING: translation string unused: pakfire uninstall package WARNING: translation string unused: pakfire update daily WARNING: translation string unused: password contains illegal characters WARNING: translation string unused: password crypting key diff --git a/doc/language_issues.ru b/doc/language_issues.ru index 1e48a6543..5fb6a07b4 100644 --- a/doc/language_issues.ru +++ b/doc/language_issues.ru @@ -539,8 +539,11 @@ WARNING: translation string unused: pakfire core update auto WARNING: translation string unused: pakfire dependencies found WARNING: translation string unused: pakfire health check WARNING: translation string unused: pakfire no dependencies found +WARNING: translation string unused: pakfire possible dependency WARNING: translation string unused: pakfire register WARNING: translation string unused: pakfire resolvedeps wait +WARNING: translation string unused: pakfire uninstall all +WARNING: translation string unused: pakfire uninstall package WARNING: translation string unused: pakfire update daily WARNING: translation string unused: password contains illegal characters WARNING: translation string unused: password crypting key diff --git a/doc/language_issues.tr b/doc/language_issues.tr index a7c080da3..fd36e9eef 100644 --- a/doc/language_issues.tr +++ b/doc/language_issues.tr @@ -649,8 +649,11 @@ WARNING: translation string unused: pakfire core update auto WARNING: translation string unused: pakfire dependencies found WARNING: translation string unused: pakfire health check WARNING: translation string unused: pakfire no dependencies found +WARNING: translation string unused: pakfire possible dependency WARNING: translation string unused: pakfire register WARNING: translation string unused: pakfire resolvedeps wait +WARNING: translation string unused: pakfire uninstall all +WARNING: translation string unused: pakfire uninstall package WARNING: translation string unused: pakfire update daily WARNING: translation string unused: password contains illegal characters WARNING: translation string unused: password crypting key diff --git a/html/cgi-bin/pakfire.cgi b/html/cgi-bin/pakfire.cgi index 3cd5b1563..159d63c9d 100644 --- a/html/cgi-bin/pakfire.cgi +++ b/html/cgi-bin/pakfire.cgi @@ -319,7 +319,7 @@ END if (@errors) { chomp @errors; - print "\nErrors occurred:\n"; + print "\n$Lang::tr{'pakfire errors'}\n"; foreach (@errors) { print "$_\n"; @@ -339,40 +339,24 @@ END @all_deps = grep { ! $dedupe{ $_ }++ } @all_deps; # build dependencies tree - my @search = @pkgs_deps; - my @pkgs_deps_tree; - my @temp; - do - { - @temp = (); - foreach my $i (@search) - { - (my $child) = $i =~ /.+:(.+)/; - foreach my $j (@all_deps) - { - (my $all_deps_parent) = $j =~ /(.+):.+/; - (my $all_deps_child) = $j =~ /.+:(.+)/; - if ( $child eq $all_deps_parent ) - { - push @temp, "$i:$all_deps_child"; - } - } - } - push @pkgs_deps_tree, @temp; - @search = @temp; - } until ( ! (@search)); - + my @pkgs_deps_tree = build_tree(\@pkgs_deps, \@all_deps); push @pkgs_deps, @pkgs_deps_tree; - @pkgs_deps = sort @pkgs_deps; my @installed = get_package_names($instdir); - # display dependencies - print "\nPackage dependencies:\n"; + # display summary + print "\n$Lang::tr{'pakfire deps'}\n"; + my $package_display; + if ($mainsettings{'LANGUAGE'} eq "ru") + { + $package_display = $Lang::tr{'pakfire package'} . " "; + } else { + $package_display = sprintf("%-10s", $Lang::tr{'pakfire package'}); + } foreach my $i (@pkgs) { - print "\n Package: $i\n"; + print "\n $package_display $i\n"; if (grep (/^$i/, @pkgs_deps)) { foreach my $j (@pkgs_deps) @@ -382,16 +366,39 @@ END (my $child) = $j =~ /.+:(.+)/; if (grep (/$child/, @installed)) { - print " " . (arrow_format($j)) . " (already installed)\n"; + print " " . (arrow_format($j)) . " ($Lang::tr{'pakfire installed'})\n"; } else { - print " " . (arrow_format($j)) . "\n"; + print " " . (arrow_format($j)) . "\n"; } } } } else { - print " No dependencies found.\n"; + print " $Lang::tr{'pakfire no deps'}\n"; + } + } + + my @pkgs_install = @pkgs; + foreach my $i (@pkgs_deps) + { + (my $child) = $i =~ /.+:(.+)/; + push @pkgs_install, $child; + } + my %dedupe; + @pkgs_install = grep { ! $dedupe{ $_ }++ } @pkgs_install; + foreach my $i (@installed) + { + if (grep (/$i/, @pkgs_install)) + { + @pkgs_install = grep { $_ ne $i } @pkgs_install; } } + @pkgs_install = sort @pkgs_install; + + print "\n$Lang::tr{'pakfire install package'}\n\n"; + foreach (@pkgs_install) + { + print " $_\n"; + } print < @@ -418,34 +425,190 @@ END &Header::openbox("100%", "center", $Lang::tr{'remove'}); my @pkgs = split(/\|/, $cgiparams{'DELPAKS'}); - my @output = &General::system_output("/usr/local/bin/pakfire", "resolvedeps", "--no-colors", @pkgs); + print < - -

$Lang::tr{'pakfire uninstall package'} @{pkgs}
$Lang::tr{'pakfire possible dependency'}

-
+			
+			$Lang::tr{'pakfire remove package'}  
+END
+        foreach (my $i = 0; $i < $#pkgs; $i++)
+        {
+                print "$pkgs[$i], ";
+        }
+        print "$pkgs[$#pkgs]";
+
+        print <
+                        

$Lang::tr{'pakfire check deps'} +
 END
-	foreach (@output) {
-		$_ =~ s/\\[[0-1]\;[0-9]+m//g;
-		print "$_\n";
+
+ 	# get dependencies from metafiles
+	my $instdir = "/opt/pakfire/db/installed";
+	my @inst_deps = deps_from_metafiles($instdir);
+
+	# get package dependencies
+	my @pkgs_deps;
+	foreach my $i (@pkgs)
+	{
+		foreach my $j (@inst_deps)
+		{
+			(my $child) = $j =~ /.+:(.+)/;
+			if (grep(/^$i/, $j))
+			{
+				push @pkgs_deps, "$i:$child";
+			}
+		}
 	}
-	print <
 			
 		
-		
-			$Lang::tr{'pakfire uninstall all'}
+END
+	} else {
+		print <
+			
 		
 		
-			 
+			
+			$Lang::tr{'pakfire no remove'}
+			
 		
+END
+	}
+
+	print <
-			
+			
 			
- + - +END + + if (@pkgs_remove) + { + print ""; + } else { + print ""; + } + + print < @@ -803,3 +966,37 @@ sub arrow_format $line = substr($line, 0, -4); return $line; } + +# build dependencies tree from array of package +# dependencies +sub build_tree +{ + my $pref = $_[0]; + my $dref = $_[1]; + my @packages = @$pref; + my @deps = @$dref; + my @tree; + my @temp; + + do + { + @temp = (); + foreach my $i (@packages) + { + (my $child) = $i =~ /.+:(.+)/; + foreach my $j (@deps) + { + (my $deps_parent) = $j =~ /(.+):.+/; + (my $deps_child) = $j =~ /.+:(.+)/; + if ( $child eq $deps_parent ) + { + push @temp, "$i:$deps_child"; + } + } + } + push @tree, @temp; + @packages = @temp; + } until ( ! (@packages)); + + return @tree; +} diff --git a/langs/de/cgi-bin/de.pl b/langs/de/cgi-bin/de.pl index 52e0d8f47..7bb50c30d 100644 --- a/langs/de/cgi-bin/de.pl +++ b/langs/de/cgi-bin/de.pl @@ -2016,22 +2016,31 @@ 'pakfire core update auto' => 'Core- und Add-on-Updates automatisch installieren:', 'pakfire core update level' => 'Core-Update-Level', 'pakfire dependecies found' => 'Abhängigkeiten gefunden:', +'pakfire deps' => 'Paketabhängigkeiten:', +'pakfire errors' => 'Es sind Fehler aufgetreten:', 'pakfire finished' => 'Pakfire ist fertig! Kehre zurück...', 'pakfire finished error' => 'Pakfire ist fertig! Fehler sind aufgetreten, bitte überprüfen Sie die Log-Ausgabe, bevor Sie fortfahren.', 'pakfire health check' => 'Mirrors auf Erreichbarkeit prüfen (Ping):', 'pakfire install' => 'Installieren', 'pakfire install description' => 'Bitte wählen Sie ein oder mehrere Add-Ons zur Installation aus.', 'pakfire install package' => 'Zu installierende Pakete:', +'pakfire installed' => 'bereits installiert', 'pakfire installed addons' => 'Installierte Add-ons:', +'pakfire inuse' => 'Verwendete Pakete:', 'pakfire invalid tree' => '', +'pakfire keep' => 'Aufgrund von Abhängigkeiten aufzubewahrende Pakete:', 'pakfire last core list update' => 'Letztes Corelisten Update ist', 'pakfire last package update' => 'Letztes Paketlisten Update ist', 'pakfire last serverlist update' => 'Letztes Serverlisten Update ist', 'pakfire last update' => 'Letztes Update ist', 'pakfire no dependecies found' => 'Keine Abhängigkeiten gefunden.', +'pakfire no deps' => 'Keine Abhängigkeiten gefunden.', +'pakfire no remove' => 'Aufgrund von Abhängigkeiten können keine Pakete entfernt werden.', +'pakfire package' => 'Paket:', 'pakfire possible dependency' => ' Möglicherweise haben diese Pakete Abhängigkeiten, d.h. andere Pakete müssen zusätzlich installiert werden. Dazu sehen Sie unten eine Liste.', 'pakfire refresh list' => 'Liste aktualisieren', 'pakfire register' => 'Registrierung am Pakfire-Server:', +'pakfire remove package' => 'Zu entfernende Pakete:', 'pakfire resolvdeps wait' => 'Prüfen auf Abhängigkeiten, bitte warten...', 'pakfire return' => 'Zurück zu Pakfire', 'pakfire system state' => 'System Status', diff --git a/langs/en/cgi-bin/en.pl b/langs/en/cgi-bin/en.pl index 979d9d701..f5d4cd5f6 100644 --- a/langs/en/cgi-bin/en.pl +++ b/langs/en/cgi-bin/en.pl @@ -2082,22 +2082,31 @@ 'pakfire core update auto' => 'Install core and add-on updates automatically:', 'pakfire core update level' => 'Core-Update-Level', 'pakfire dependencies found' => 'Dependencies found:', +'pakfire deps' => 'Package dependencies:', +'pakfire errors' => 'Errors occurred:', 'pakfire finished' => 'Pakfire has finished! Returning...', 'pakfire finished error' => 'Pakfire has finished! Errors occurred, please check the log output before proceeding.', 'pakfire health check' => 'Check if mirror is reachable (ping):', 'pakfire install' => 'Install', 'pakfire install description' => 'Please select one or more add-ons to install.', 'pakfire install package' => 'Packages to install:', +'pakfire installed' => 'already installed', 'pakfire installed addons' => 'Installed Add-ons:', +'pakfire inuse' => 'Packages in use:', 'pakfire invalid tree' => 'Invalid repository selected', +'pakfire keep' => 'Packages to keep due to dependencies:', 'pakfire last core list update' => 'Last core list update made', 'pakfire last package update' => 'Last packages list update made', 'pakfire last serverlist update' => 'Last server list update made', 'pakfire last update' => 'Last update made', 'pakfire no dependencies found' => 'No dependencies found.', +'pakfire no deps' => 'No dependencies found.', +'pakfire no remove' => 'Due to dependencies, no packages can be removed.', +'pakfire package' => 'Package:', 'pakfire possible dependency' => ' There may be depending packages, here is a list of packages that need to be installed.', 'pakfire refresh list' => 'Refresh List', 'pakfire register' => 'Register at pakfire-server:', +'pakfire remove package' => 'Packages to remove:', 'pakfire resolvedeps wait' => 'Checking for dependencies, please wait...', 'pakfire return' => 'Return to Pakfire', 'pakfire system state' => 'System Status', diff --git a/langs/es/cgi-bin/es.pl b/langs/es/cgi-bin/es.pl index 3d7531621..51a2a0467 100644 --- a/langs/es/cgi-bin/es.pl +++ b/langs/es/cgi-bin/es.pl @@ -2079,22 +2079,31 @@ 'pakfire core update auto' => 'Instar actualizaciones principales y complementarias automáticamente:', 'pakfire core update level' => 'Nivel de actualización del núcleo', 'pakfire dependencies found' => 'Dependencias encontradas:', +'pakfire deps' => 'Dependencias del paquete:', +'pakfire errors' => 'Se produjeron errores:', 'pakfire finished' => '¡Pakfire ha terminado! Volviendo...', 'pakfire finished error' => '¡Pakfire ha terminado! Ocurrieron errores, verifique la salida del registro antes de continuar.', 'pakfire health check' => 'Verificar disponibilidad del espejo (ping):', 'pakfire install' => 'Instalar', 'pakfire install description' => 'Seleccione uno o más complementos para instalar.', 'pakfire install package' => 'Paquetes a instalar:', +'pakfire installed' => 'ya instalado', 'pakfire installed addons' => 'Complementos instalados:', +'pakfire inuse' => 'Paquetes en uso:', 'pakfire invalid tree' => 'Repositorio no válido seleccionado', +'pakfire keep' => 'Paquetes a conservar debido a dependencias:', 'pakfire last core list update' => 'Última lista de actualización de núcleo hecha', 'pakfire last package update' => 'Última lista de actualización de paquetes hecha', 'pakfire last serverlist update' => 'Última lista de actualización de servidor hecha', 'pakfire last update' => 'Última actualización realizada', 'pakfire no dependencies found' => 'No se encontraron dependencias.', +'pakfire no deps' => 'No se encontraron dependencias.', +'pakfire no remove' => 'Debido a las dependencias, no se pueden eliminar paquetes.', +'pakfire package' => 'Paquete:', 'pakfire possible dependency' => 'Puede haber paquetes con dependencias, aquí está una lista de paquetes que necesitan ser instalados.', 'pakfire refresh list' => 'Refrescar Lista', 'pakfire register' => 'Registrar en el servidor pakfire:', +'pakfire remove package' => 'Paquetes a eliminar:', 'pakfire resolvedeps wait' => 'Buscando dependencias, por favor espere...', 'pakfire return' => 'Regresar a Pakfire', 'pakfire system state' => 'Estado del sistema', diff --git a/langs/fr/cgi-bin/fr.pl b/langs/fr/cgi-bin/fr.pl index 4fb67afcb..dc0134379 100644 --- a/langs/fr/cgi-bin/fr.pl +++ b/langs/fr/cgi-bin/fr.pl @@ -2077,22 +2077,31 @@ 'pakfire core update auto' => 'Installer automatiquement les mises à jour du noyau et des modules :', 'pakfire core update level' => 'Version de mise à jour du noyau ', 'pakfire dependencies found' => 'Dépendances trouvées :', +'pakfire deps' => 'Dépendances du paquet :', +'pakfire errors' => 'Des erreurs se sont produites :', 'pakfire finished' => 'Pakfire a fini ! Retour...', 'pakfire finished error' => 'Pakfire a fini ! Des erreurs se sont produites, veuillez vérifier les rapports système des journaux avant de continuer.', 'pakfire health check' => 'Vérifier si le miroir est accessible (ping) :', 'pakfire install' => 'Installer', 'pakfire install description' => 'Veuillez sélectionner un ou plusieurs modules complémentaires à installer.', 'pakfire install package' => 'Paquets à installer :', +'pakfire installed' => 'déjà installé', 'pakfire installed addons' => 'Modules installés :', +'pakfire inuse' => 'Paquets en cours d\'utilisation :', 'pakfire invalid tree' => 'Dépôt choisi invalide', +'pakfire keep' => 'Paquets à conserver en raison des dépendances :', 'pakfire last core list update' => 'Dernière mise à jour de la liste du noyau : ', 'pakfire last package update' => 'Dernière mise à jour de la liste des paquets : ', 'pakfire last serverlist update' => 'Dernière mise à jour de la liste des serveurs : ', 'pakfire last update' => 'Dernière mise à jour : ', 'pakfire no dependencies found' => 'Aucune dépendance trouvée.', +'pakfire no deps' => 'Aucune dépendance trouvée.', +'pakfire no remove' => 'En raison des dépendances, aucun paquet ne peut être supprimé.', +'pakfire package' => 'Paquet :', 'pakfire possible dependency' => 'Il y a peut-être des dépendances, voici la liste des paquets qu\'il faut (dés)installer.', 'pakfire refresh list' => 'Actualiser la Liste', 'pakfire register' => 'S\'inscrire au serveur pakfire :', +'pakfire remove package' => 'Paquets à supprimer :', 'pakfire resolvedeps wait' => 'Vérification des dépendances, veuillez patienter...', 'pakfire return' => 'Retour à Pakfire', 'pakfire system state' => 'Statut système PakFire ', diff --git a/langs/it/cgi-bin/it.pl b/langs/it/cgi-bin/it.pl index 1cf14bd90..067e32ca7 100644 --- a/langs/it/cgi-bin/it.pl +++ b/langs/it/cgi-bin/it.pl @@ -1717,19 +1717,28 @@ 'pakfire core update auto' => 'Install core and addon updates automatically:', 'pakfire core update level' => 'Core-Update-Level', 'pakfire dependencies found' => 'Dipendenze trovate:', +'pakfire deps' => 'Dipendenze del pacchetto:', +'pakfire errors' => 'Si sono verificati degli errori:', 'pakfire health check' => 'Controllare se il mirror è raggiungibile (ping):', 'pakfire install' => 'Installare', 'pakfire install description' => 'Selezionare uno o più componenti aggiuntivi da installare.', 'pakfire install package' => 'Pacchetti da installare:', +'pakfire installed' => 'già installato', 'pakfire installed addons' => 'Addons installati:', +'pakfire inuse' => 'Pacchetti in uso:', +'pakfire keep' => 'Pacchetti da mantenere a causa delle dipendenze:', 'pakfire last core list update' => 'Ultimo aggiornamento della lista di sistema', 'pakfire last package update' => 'Ultimo aggiornamento della lista pacchetti', 'pakfire last serverlist update' => 'Ultimo aggiornamento della lista server', 'pakfire last update' => 'Ultimo aggiornamento di sistema effettuato', 'pakfire no dependencies found' => 'Nessuna dipendenza trovata.', +'pakfire no deps' => 'Nessuna dipendenza trovata.', +'pakfire no remove' => 'A causa delle dipendenze, nessun pacchetto può essere rimosso.', +'pakfire package' => 'Pacchetto:', 'pakfire possible dependency' => ' There may be depending packages, here is a list of packages that need to be installed.', 'pakfire refresh list' => 'Aggiorna le Liste', 'pakfire register' => 'Registrati sul pakfire-server:', +'pakfire remove package' => 'Pacchetti da rimuovere:', 'pakfire resolvedeps wait' => 'Controllo delle dipendenze, attendere prego...', 'pakfire system state' => 'Stato del Sistema', 'pakfire uninstall all' => 'Vuoi disinstallare i seguenti pacchetti?', diff --git a/langs/nl/cgi-bin/nl.pl b/langs/nl/cgi-bin/nl.pl index 68f79a262..8150b8c97 100644 --- a/langs/nl/cgi-bin/nl.pl +++ b/langs/nl/cgi-bin/nl.pl @@ -1692,19 +1692,28 @@ 'pakfire core update auto' => 'Installeer core- en extensie-updates automatisch:', 'pakfire core update level' => 'Core-updateniveau', 'pakfire dependencies found' => 'Afhankelijkheden gevonden:', +'pakfire deps' => 'Pakketafhankelijkheden:', +'pakfire errors' => 'Er zijn fouten opgetreden:', 'pakfire health check' => 'Controleer of de mirror bereikbaar is (ping):', 'pakfire install' => 'Installeren', 'pakfire install description' => 'Selecteer een of meer add-ons om te installeren.', 'pakfire install package' => 'Pakketten om te installeren:', +'pakfire installed' => 'al geïnstalleerd', 'pakfire installed addons' => 'Geïnstalleerde add-ons:', +'pakfire inuse' => 'Pakketten in gebruik:', +'pakfire keep' => 'Pakketten die moeten worden bewaard vanwege afhankelijkheden:', 'pakfire last core list update' => 'Laatste core-lijst update gemaakt', 'pakfire last package update' => 'Laatste pakketlijst update gemaakt', 'pakfire last serverlist update' => 'Laatste serverlijst update gemaakt', 'pakfire last update' => 'Laatste update gemaakt', 'pakfire no dependencies found' => 'Geen afhankelijkheden gevonden.', +'pakfire no deps' => 'Geen afhankelijkheden gevonden.', +'pakfire no remove' => 'Vanwege afhankelijkheden kunnen er geen pakketten worden verwijderd.', +'pakfire package' => 'Pakket:', 'pakfire possible dependency' => ' Er kunnen pakketafhankelijkheden zijn, hier is een lijst met pakketten die moeten worden geïnstalleerd.', 'pakfire refresh list' => 'Ververs Lijst', 'pakfire register' => 'Registreer bij de pakfire-server:', +'pakfire remove package' => 'Te verwijderen pakketten:', 'pakfire resolvedeps wait' => 'Controleren op afhankelijkheden, even geduld...', 'pakfire system state' => 'Systeemstatus', 'pakfire uninstall all' => 'Wilt u de volgende pakketten verwijderen?', diff --git a/langs/pl/cgi-bin/pl.pl b/langs/pl/cgi-bin/pl.pl index 2dd9ccee0..03d54e28a 100644 --- a/langs/pl/cgi-bin/pl.pl +++ b/langs/pl/cgi-bin/pl.pl @@ -1357,19 +1357,28 @@ 'pakfire core update auto' => 'Instaluj aktualizacje jądra automatycznie:', 'pakfire core update level' => 'Aktualizacja jądra', 'pakfire dependencies found' => 'Znaleziono zależności:', +'pakfire deps' => 'Zależności pakietów:', +'pakfire errors' => 'Wystąpiły błędy:', 'pakfire health check' => 'Sprawdź czy mirror jest dostępny (ping):', 'pakfire install' => 'Instaluj', 'pakfire install description' => 'Wybierz jeden lub więcej dodatków do zainstalowania.', 'pakfire install package' => 'Pakiety do zainstalowania:', +'pakfire installed' => 'już zainstalowany', 'pakfire installed addons' => 'Zainstalowane dodatki:', +'pakfire inuse' => 'Pakiety w użyciu:', +'pakfire keep' => 'Pakiety do zachowania ze względu na zależności:', 'pakfire last core list update' => 'Sprawdzenie aktualizacja jądra:', 'pakfire last package update' => 'Ostatnia aktualizacja listy pakietów:', 'pakfire last serverlist update' => 'Ostatnia aktualizacja listy serwerów:', 'pakfire last update' => 'Ostatnia aktualizacja:', 'pakfire no dependencies found' => 'Nie znaleziono zależności.', +'pakfire no deps' => 'Nie znaleziono zależności.', +'pakfire no remove' => 'Ze względu na zależności, żadne pakiety nie mogą zostać usunięte.', +'pakfire package' => 'Pakiet:', 'pakfire possible dependency' => ' Pewne pakiety mogą wymagać zależności. Oto lista pakietów które muszę zostać zainstalowane.', 'pakfire refresh list' => 'Odśwież Listę', 'pakfire register' => 'Register at pakfire-server:', +'pakfire remove package' => 'Pakiety do usunięcia:', 'pakfire resolvedeps wait' => 'Sprawdzanie zależności, proszę czekać...', 'pakfire system state' => 'Status systemu', 'pakfire uninstall all' => 'Czy chcesz odinstalować następujące pakiety?', diff --git a/langs/ru/cgi-bin/ru.pl b/langs/ru/cgi-bin/ru.pl index 155a4d8d1..e6a61c3eb 100644 --- a/langs/ru/cgi-bin/ru.pl +++ b/langs/ru/cgi-bin/ru.pl @@ -1352,19 +1352,28 @@ 'pakfire core update auto' => 'Устанавливать обновления ядра и аддонов автоматически:', 'pakfire core update level' => 'Уровень обновления системы', 'pakfire dependencies found' => 'Зависимости найдены:', +'pakfire deps' => 'Зависимости пакетов:', +'pakfire errors' => 'Произошли ошибки:', 'pakfire health check' => 'Пинговать зеркало на доступность:', 'pakfire install' => 'Установить', 'pakfire install description' => 'Пожалуйста, выберите одно или несколько дополнений для установки.', 'pakfire install package' => 'Пакеты для установки:', +'pakfire installed' => 'уже установлено', 'pakfire installed addons' => 'Установленные Аддоны:', +'pakfire inuse' => 'Используемые пакеты:', +'pakfire keep' => 'Пакеты, которые необходимо сохранить из-за наличия зависимостей:', 'pakfire last core list update' => 'Обновление core-списков', 'pakfire last package update' => 'Обновление списка пакетов', 'pakfire last serverlist update' => 'Обновление серверных списков', 'pakfire last update' => 'Последнее обновление', 'pakfire no dependencies found' => 'Зависимости не найдены.', +'pakfire no deps' => 'Зависимости не найдены.', +'pakfire no remove' => 'Из-за зависимостей ни один пакет не может быть удален.', +'pakfire package' => 'Упаковка:', 'pakfire possible dependency' => ' There may be depending packages, here is a list of packages that need to be installed.', 'pakfire refresh list' => 'Обновить Список', 'pakfire register' => 'Регистрировать на pakfire-сервере:', +'pakfire remove package' => 'Пакеты для удаления:', 'pakfire resolvedeps wait' => 'Проверка зависимостей, пожалуйста, подождите...', 'pakfire system state' => 'Статус системы', 'pakfire uninstall all' => 'Вы хотите удалить следующие пакеты?', diff --git a/langs/tr/cgi-bin/tr.pl b/langs/tr/cgi-bin/tr.pl index 1194b3ec6..38d090ebd 100644 --- a/langs/tr/cgi-bin/tr.pl +++ b/langs/tr/cgi-bin/tr.pl @@ -1861,19 +1861,28 @@ 'pakfire core update auto' => 'Otomatik olarak çekirdek ve eklenti güncelleştirmelerini yükle:', 'pakfire core update level' => 'Çekirdek-Güncelleme-Seviyesi', 'pakfire dependencies found' => 'Bağımlılıklar bulundu:', +'pakfire deps' => 'Paket bağımlılıkları:', +'pakfire errors' => 'Hatalar oluştu:', 'pakfire health check' => 'Yansımanın ulaşılabilir olup olmadığını kontrol et (ping):', 'pakfire install' => 'Yükle', 'pakfire install description' => 'Lütfen yüklemek için bir veya daha fazla eklenti seçin.', 'pakfire install package' => 'Kurulacak paketler:', +'pakfire installed' => 'zaten kurulu', 'pakfire installed addons' => 'Kurulu eklentiler:', +'pakfire inuse' => 'Kullanımdaki paketler:', +'pakfire keep' => 'Bağımlılıklar nedeniyle saklanacak paketler:', 'pakfire last core list update' => 'Son çekirdek listesi güncellemesi', 'pakfire last package update' => 'Son paket listesi güncellemesi', 'pakfire last serverlist update' => 'Son sunucu listesi güncellemesi', 'pakfire last update' => 'Son güncelleme', 'pakfire no dependencies found' => 'Hiçbir bağımlılık bulunamadı.', +'pakfire no deps' => 'Bağımlılık bulunamadı.', +'pakfire no remove' => 'Bağımlılıklar nedeniyle hiçbir paket kaldırılamaz.', +'pakfire package' => 'Paket:', 'pakfire possible dependency' => ' Yüklenemesi gereken paketlerin yüklenebilmesi için buradaki paketlere ihtiyaç duyulabilir.', 'pakfire refresh list' => 'Listeyi Yenile', 'pakfire register' => 'Pakfire sunucusuna kayıt:', +'pakfire remove package' => 'Kaldırılacak paketler:', 'pakfire resolvedeps wait' => 'Bağımlılıklar kontrol ediliyor, lütfen bekleyin...', 'pakfire system state' => 'Sistem durumu', 'pakfire uninstall all' => 'Aşağıdaki paketleri kaldırmak istiyor musunuz?', -- 2.43.0