From b9bde5bee0b4bba55b238e1b03dec9287f17b167 Mon Sep 17 00:00:00 2001 From: Ilia Ross Date: Sun, 25 May 2025 22:50:44 +0300 Subject: [PATCH] Fix to properly delete and protect Debian dependencies --- phpini/delete_pkgs.cgi | 2 +- phpini/phpini-lib.pl | 15 ++++++++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/phpini/delete_pkgs.cgi b/phpini/delete_pkgs.cgi index c15fc324e..9adcca29b 100755 --- a/phpini/delete_pkgs.cgi +++ b/phpini/delete_pkgs.cgi @@ -50,7 +50,7 @@ else { foreach my $pkg (@delpkgs) { print &text('dpkgs_doing', "$pkg->{'name'}", $pkg->{'phpver'}),"
\n"; - $err = &delete_php_base_package($pkg); + $err = &delete_php_base_package($pkg, \@pkgs); if ($err) { print &text('dpkgs_failed', $err),"

\n"; } diff --git a/phpini/phpini-lib.pl b/phpini/phpini-lib.pl index 740794929..0ff5ec980 100755 --- a/phpini/phpini-lib.pl +++ b/phpini/phpini-lib.pl @@ -1037,19 +1037,20 @@ foreach my $pkg (@$pkgs) { } } -# delete_php_base_package(&package) +# delete_php_base_package(&package, &installed) # Delete a PHP package, and return undef on success or an error on failure sub delete_php_base_package { -my ($pkg) = @_; -foreach my $p (&list_all_php_version_packages($pkg)) { +my ($pkg, $installed) = @_; +my @targets = &list_all_php_version_packages($pkg); +my $deb_want_deps = (grep { $_ eq 'php-common' } @targets) && @{$installed} > 1; +foreach my $p (@targets) { my @info = &software::package_info($p); next if (!@info); my $err = &software::delete_package($p, - { 'nodeps' => 1, 'depstoo' => 1 }); - if ($err) { - return &html_strip($err); - } + { nodeps => 1, + ( !$deb_want_deps ? ( depstoo => 1 ) : () ) }); + return &html_strip($err) if ($err); } return undef; }