¿Cuáles son los requisitos de gnu-parallel para/para un dispositivo remoto con el que se contacta a través de ssh (y autenticación de clave pública)?

¿Cuáles son los requisitos de gnu-parallel para/para un dispositivo remoto con el que se contacta a través de ssh (y autenticación de clave pública)?

Estoy usando gnu-parallel.

Supongo que hay un problema con mi entorno.

Lo que quiero lograr:
Intentando ejecutar un comando en varias máquinas.
Para eso, he creado un archivo sshlogin (acertadamente llamado ~/.parallel/sshloginfile) con algunas entradas como:

#  define hostgroup debian
@debian/5-1.p
@debian/6-1.p
@debian/7-1.p
...
#  define hostgroup qnap with only 1 cpu
1/@qnap/4-1.a
#  define hostgroup macos
@macos/33-1.w
#  local computer
@macos/:

Los nombres (5-1.p, 6-1.p, ...) detrás de los grupos de host (@debian, @qnap, ...) son entradas en ~/.ssh/config. Todas las conexiones ssh se autentican mediante autenticación de clave pública.

Como comando simple me gustaría ver el tiempo de actividad:

parallel --jobs 0 --nonall --tag --slf .. uptime

funciona maravillosamente

:   19:25  up 4 days, 23:02, 3 users, load averages: 2.14 1.86 1.79
5-1.p    19:25:27 up 23 days, 18:54,  0 users,  load average: 0.05, 0.13, 0.18
6-1.p    19:26:04 up 20:05,  0 users,  load average: 0.03, 0.08, 0.10
4-1.a   sh: line 0: exec: perl: not found

excepto un host (4.1-a), que es un sistema de almacenamiento de QNAP.

Para mi sorpresa, el comandonousando el archivo sshlogin, pero en su lugar dirigiéndose directamente a este servidorhacetrabajar:

parallel --jobs 0 --nonall --tag ssh 4-1.a uptime

salidas:

19:28:37 up 16 days,  8:24, load average: 0.72, 0.61, 0.59

Por lo tanto, parece haber una dependencia/requisito previo que debe cumplirse si se accede a un dispositivo a través de sshloginfile, que de lo contrario no es necesario. Y parece ser Perl, que de hecho no está instalado en el sistema de almacenamiento de QNAP.
¿Alguien tiene idea de por qué sería esto?

Versión de paralelo: GNU paralelo 20181222
versión del sistema operativo del host: Darwin 18.2.0 Darwin Kernel Versión 18.2.0: lunes 12 de noviembre a las 20:24:46 PST de 2018; root:xnu-4903.231.4~2/RELEASE_X86_64 x86_64 [macOS 10.14.2]
versión del sistema operativo de los dispositivos en funcionamiento: Linux 4.14.90+ #1183 viernes 21 de diciembre 13:50:04 GMT 2018 armv6l GNU/Linux
versión del sistema operativo de "problemático " dispositivo 4-1.a: Linux 3.4.6 #1 miércoles 2 de enero 07:02:07 CST 2019 armv5tel desconocido

Anexo: La página de manual dice:
DEPENDENCIAS
GNU paralelo usa Perl y los módulos Perl Getopt::Long, IPC::Open3, Symbol, IO::File, POSIX y File::Temp. Para uso remoto también usa rsync con ssh.

rsync está instalado en el dispositivo "problemático".

Respuesta1

GNU Parallel depende desde 20150122 de perlestar instalado en el sistema remoto.

Lo que estás viendo me sugiere que el qnapservidor no tiene Perl instalado.

Si tu corres:

parallel -vvS server echo ::: foo
parallel -vvS server --wd ...  --trc {}.foo touch {}.foo ::: *

Verá qué se está ejecutando realmente GNU Parallel. Como puede ver, es bastante complejo e incluye un script Perl. Ésta es la razón por la que se necesita Perl en el sistema remoto.

Para más detalles sobre esto lea:https://www.gnu.org/software/parallel/parallel_design.html#The-remote-system-wrapper

Mi conjetura es que:

parallel -S 1/4-1.a echo ::: foo

también resultará en:

sh: line 0: exec: perl: not found

Entonces, la solución probablemente sea instalar Perl en qnap.

información relacionada