Quais são os requisitos do gnu-parallel para/para um dispositivo remoto que é contatado via ssh (e autenticação de chave pública)?

Quais são os requisitos do gnu-parallel para/para um dispositivo remoto que é contatado via ssh (e autenticação de chave pública)?

Estou usando o gnu-parallel.

Presumo que haja um problema com meu ambiente.

O que eu quero alcançar:
Tentando executar um comando em várias máquinas.
Para isso criei um sshloginfile (apropriadamente chamado ~/.parallel/sshloginfile) com algumas 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/:

Os nomes (5-1.p, 6-1.p, ...) por trás dos grupos de hosts (@debian, @qnap, ...) são entradas em ~/.ssh/config. Todas as conexões ssh são autenticadas por meio de autenticação de chave pública.

Como um comando simples, gostaria de ver o tempo de atividade:

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

funciona lindamente

:   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

exceto um host (4.1-a), que é um sistema de armazenamento QNAP.

Para minha surpresa, o comandonãousando o sshloginfile, mas em vez disso abordando diretamente este servidorfaztrabalhar:

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

saídas:

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

Portanto, parece haver uma dependência/pré-requisito que precisa ser atendido se um dispositivo for endereçado via sshloginfile, o que não é necessário de outra forma. E parece ser perl, que na verdade não está instalado no sistema de armazenamento QNAP.
Alguém tem alguma idéia de por que isso seria?

Versão do paralelo: GNU paralelo 20181222
versão do sistema operacional do host: Darwin 18.2.0 Darwin Kernel Versão 18.2.0: segunda-feira, 12 de novembro, 20:24:46 PST 2018; root:xnu-4903.231.4~2/RELEASE_X86_64 x86_64 [macOS 10.14.2]
versão do sistema operacional dos dispositivos de trabalho: Linux 4.14.90+ #1183 Sex Dec 21 13:50:04 GMT 2018 armv6l GNU/Linux
versão do sistema operacional de "problemático "dispositivo 4-1.a: Linux 3.4.6 #1 Quarta, 2 de janeiro 07:02:07 CST 2019 armv5tel desconhecido

Adendo: A página man afirma:
DEPENDENCIES
GNU paralelo usa Perl e os módulos Perl Getopt::Long, IPC::Open3, Symbol, IO::File, POSIX e File::Temp. Para uso remoto também usa rsync com ssh.

O rsync está instalado no dispositivo "problemático".

Responder1

GNU Parallel depende desde 20150122 de perlser instalado no sistema remoto.

O que você está vendo sugere que o qnapservidor não possui Perl instalado.

Se você executar:

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

você verá o que o GNU Parallel está realmente executando. Como você pode ver, isso é bastante complexo e inclui um script Perl. Esta é a razão pela qual o Perl é necessário no sistema remoto.

Para mais detalhes sobre isso, leia:https://www.gnu.org/software/parallel/parallel_design.html#The-remote-system-wrapper

Meu palpite é que:

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

também resultará em:

sh: line 0: exec: perl: not found

Portanto, a solução provavelmente é instalar o perl no qnap.

informação relacionada