/
usr
/
local
/
bin
/
/usr/local/bin
mkdir
upload
Name
Size
Mode
Actions
cloudflared
39251522
0755
edit
dl
rm
composer
3288946
0755
edit
dl
rm
convert-caffe2-to-onnx
252
0755
edit
dl
rm
convert-onnx-to-caffe2
252
0755
edit
dl
rm
crontab
3320736
0755
edit
dl
rm
datasets-cli
229
0755
edit
dl
rm
ea-php72
5815400
0755
edit
dl
rm
ea-php73
5647288
0755
edit
dl
rm
ea-php74
6383296
0755
edit
dl
rm
ea-php80
7986080
0755
edit
dl
rm
ea-php81
8098952
0755
edit
dl
rm
ea-php82
8155008
0755
edit
dl
rm
ea-php84
8244992
0755
edit
dl
rm
ea-php85
14164728
0755
edit
dl
rm
ea_convert_php_ini
40811
0755
edit
dl
rm
ea_current_to_profile
11519
0755
edit
dl
rm
ea_install_profile
7274
0755
edit
dl
rm
ea_sync_user_phpini_settings
6888
0755
edit
dl
rm
f2py
216
0755
edit
dl
rm
f2py3
216
0755
edit
dl
rm
f2py3.6
216
0755
edit
dl
rm
flask
212
0755
edit
dl
rm
get_objgraph
1651
0755
edit
dl
rm
huggingface-cli
239
0755
edit
dl
rm
lsphp
937
0755
edit
dl
rm
normalizer
244
0755
edit
dl
rm
passwd
3768664
0755
edit
dl
rm
pear
935
0755
edit
dl
rm
php
933
0755
edit
dl
rm
pip
225
0755
edit
dl
rm
pip3
225
0755
edit
dl
rm
pip3.6
225
0755
edit
dl
rm
plasma_store
248
0755
edit
dl
rm
pm2
56
0755
edit
dl
rm
pm2-dev
59
0755
edit
dl
rm
pm2-docker
67
0755
edit
dl
rm
pm2-runtime
67
0755
edit
dl
rm
sacremoses
211
0755
edit
dl
rm
torchrun
220
0755
edit
dl
rm
tqdm
207
0755
edit
dl
rm
transformers-cli
237
0755
edit
dl
rm
undill
587
0755
edit
dl
rm
virtualenv
238
0755
edit
dl
rm
wp
181
0755
edit
dl
rm
wp-toolkit
167
0700
edit
dl
rm
Edit:
/usr/local/bin/ea_install_profile
(7274B)
#!/usr/local/cpanel/3rdparty/bin/perl # cpanel - ea_install_profile Copyright(c) 2016 cPanel, Inc. # All rights Reserved. # copyright@cpanel.net http://cpanel.net # This code is subject to the cPanel license. Unauthorized copying is prohibited package ea_install_profile; use strict; use Cpanel::JSON; use Cpanel::PackMan; use Cpanel::Config::Httpd; use Data::Dumper; use Path::Tiny 'path'; sub usage { my ($msg) = @_; print "Error: $msg\n" if defined $msg; print "usage: ea_install_profile [--firstinstall|--install] profile_file\n"; print "\n"; print " With no flags, $0 will only do conflict resolution on the profile.\n"; print "\n"; print " --install: Resolve conflicts and install the profile.\n"; print " --firstinstall: Attempt to do the install without conflict resolution and fallback\n"; print " to doing --install if it fails. This is only intended to be used\n"; print " on a fresh cPanel install.\n"; print "\n"; exit( $msg ? 1 : 0 ); } sub script { my (@args) = @_; die "May only be run if you are using EasyApache 4" if ( !Cpanel::Config::Httpd::is_ea4() ); my $profile; my $install = 0; my $firstinstall = 0; my $idx = 0; if ( $args[$idx] eq "--firstinstall" ) { $idx++; $firstinstall = 1; } if ( $args[$idx] eq "--install" ) { $idx++; $install = 1; } usage() if ( !defined $args[$idx] ); $profile = $args[$idx]; if ( !-f $profile ) { $profile = "/etc/cpanel/ea4/profiles/custom/" . $profile; usage("Cannot find profile") if !-f $profile; } my @addl_prefixes = eval { map { $_->basename } path("/etc/cpanel/ea4/additional-pkg-prefixes/")->children; }; print "Loading profile …\n"; my %server_pkgs; @server_pkgs{ Cpanel::PackMan->instance->list( 'prefix' => 'ea-' ) } = (); for my $prefix (@addl_prefixes) { @server_pkgs{ Cpanel::PackMan->instance->list( 'prefix' => "$prefix-" ) } = (); } my $data = Cpanel::JSON::LoadFile($profile); # 1. Fix ea-apachae24 package names with underscores for Ubuntu and with dashes for RHEL if needed (See ZC-11501 for why this is necessary) my $pkgmgr = -x '/usr/bin/apt' ? 'deb' : 'rpm'; my $changed = 0; if ( $pkgmgr eq 'deb' ) { foreach my $pkg ( @{ $data->{pkgs} } ) { my $new_pkg = _normalize_pkg_for_ubuntu($pkg); if ( $new_pkg ne $pkg ) { $pkg = $new_pkg; $changed = 1; } } } elsif ( $pkgmgr eq 'rpm' ) { foreach my $pkg ( @{ $data->{pkgs} } ) { my $new_pkg = _normalize_pkg_for_rhel( $pkg, \%server_pkgs ); if ( $new_pkg ne $pkg ) { $pkg = $new_pkg; $changed = 1; } } } else { die "How did we get here? `pkgmgr` is neither `rpm` nor `deb` ($pkgmgr)\n"; } path($profile)->spew( Cpanel::JSON::pretty_dump($data) ) if $changed; # 2. detect any packages in the profile that do not exist on the server my %not_on_server = ( map { !exists $server_pkgs{$_} ? ( $_ => undef ) : () } @{ $data->{pkgs} } ); # 3. remove %not_on_server from $profile->{pkgs} $data->{pkgs} = [ grep { !exists $not_on_server{$_} } @{ $data->{pkgs} } ]; # 4. Tell them about the ones we are ignoring my $derps = 0; for my $derppkg ( sort keys %not_on_server ) { warn " * Warning! ignored package: $derppkg. It is in the profile’s package list but does not exist on this server.\n"; $derps++; } print "\n" if $derps; if ( $data->{pre} ) { print "Installing prereqs …\n"; my $sys = Cpanel::PackMan->instance->sys; $sys->install( @{ $data->{pre} } ); # apt, yum, and dnf’s `install` will install if its not installed, upgrade if its old, noop if its already the latest $sys->cache; # this is needed in case a new package repo was put in place print " … prereqs done!\n\n"; } if ($firstinstall) { print "The system is running in first install mode and will install the requested packages without resolving conflicts …\n"; local $@; eval { Cpanel::PackMan->instance->sys->install( @{ $data->{pkgs} } ); }; print " … done!\n"; if ($@) { warn "First install method failed ($@)."; warn "The system will fall back to doing a full install."; $install = 1; } else { return 0; } } print "The system is resolving package dependencies and conflicts. This may take some time …\n"; my $resolve_method = defined &Cpanel::PackMan::resolve_multi_op_ns ? 'resolve_multi_op_ns' : 'resolve_multi_op'; my $res = Cpanel::PackMan->instance->$resolve_method( $data->{'pkgs'}, 'ea' ); for my $prefix (@addl_prefixes) { my $prefix_res = eval { Cpanel::PackMan->instance->$resolve_method( $data->{'pkgs'}, $prefix ) }; if ($@) { if ( $@ =~ m/Unknown namespace/ ) { warn "!!!! Your system is not new enough to support EA4 pkg prefixes besides `ea-`, other prefixes will be left out !!\n"; last; } else { chomp $@; warn "!!!! There was a problem with the additional-pkg-prefix “$prefix”, it will be left out !!\n\tError: $@\n"; next; } } for my $field (qw(uninstall unaffected upgrade install)) { push @{ $res->{$field} }, @{ $prefix_res->{$field} }; } } print " … done!\n"; if ($install) { print "Installing …\n"; my $actions = Cpanel::PackMan->instance->multi_op($res); if ( !$actions ) { print " … nothing to do.\n"; } else { print " … done!\n"; } } else { print Dumper($res); } return 0; } sub _normalize_pkg_for_ubuntu { my ($pkg) = @_; $pkg =~ s/_/-/g; return $pkg; } sub _normalize_pkg_for_rhel { my ( $orig_pkg, $server_pkgs_hr ) = @_; # Short-circuit if there is an exact match: return $orig_pkg if exists $server_pkgs_hr->{$orig_pkg}; my $pkg = $orig_pkg; my $prefix = 'ea-apache24-mod'; if ( $pkg =~ m/^($prefix)(.*)/ ) { my $name = $2; $name =~ s/-/_/g; # Apache module packages tend to use underscores, so start with that. $pkg = $prefix . $name; # If that also fails, search through the entire list: if ( !exists $server_pkgs_hr->{$pkg} ) { my $re_pkg = $prefix . ( $name =~ s/_/[-_]/gr ); my @results = grep { m/^$re_pkg$/ } keys %$server_pkgs_hr; $pkg = $results[0] if scalar @results > 0; warn "!!!! Multiple inexact matches for '$orig_pkg' when treating underscores and dashes as equivalent; using '$pkg'!" if scalar @results > 1; } } return $pkg; } exit( script(@ARGV) ) unless caller(); 1;
Save
cmd:
run