O arquivo executável não está "realmente presente" após o rsync [duplicate]

0

Estou emitindo o seguinte comando rsync (ofuscando o caminho exato & host), que deve copiar dois binários:

rsync -e "ssh -p 443" -a --info=progress2 -z user@remote:/srv/cgi-bin/ .
user@remotes's password: 
  5,970,149 100%    6.78MB/s    0:00:00 (xfr#2, to-chk=0/3)

De todos os pontos de vista, posso dizer que o comando foi concluído com êxito.

root@rapunzel:/s/h/p/cgi-bin # >>> ll
total 5.7M
-rwxrwxr-x 1 marcus marcus 3.9M Sep 10  2014 german-numbers
-rwxrwxr-x 1 marcus marcus 1.9M Sep 10  2014 german-numbers-cgi

Mas quando eu tento executar algum dos binários, recebo o seguinte erro

root@rapunzel:/s/h/p/cgi-bin # >>> ./german-numbers
zsh: no such file or directory: ./german-numbers

Portanto, parece que o binário não está "bem lá", mas, por outro lado, consigo abrir e ler claramente:

root@rapunzel:/s/h/p/cgi-bin # >>> head -n1 ./german-numbers
ELF04��'4('$444444�=%�=%@%����t��I%������HHHDDP�tdT;%T�T�llQ�td/lib/ld-linux.so.2GNUGNU,B�]2�h$���ɢҒ�S'��� @�P
                                                                                                          ����ݣkĉ����|(�CE���K��8��]���?�������g���FcH▒3
       �_��,�%}�??��>fM7�sn�������F����A{S3a��������,b��)�P▒h�wza�S~�y��*-��y�L
                                                                               �����m���<�lp�6����W$%xZ�G��X{��V���� �!� �!�t����@��ԅ����I��ԅ��� ��Ș
              ��librt.so.1__gmon_start___Jv_RegisterClasseslibutil.so.1libdl.so.2libgmp.so.3__gmpz_tdiv_qr__gmpz_and__gmpz_tdiv_q__gmpz_tdiv_r__gmpz_fdiv_qr__gmpn_gcd_1__gmpz_fdiv_q__gmpz_fdiv_r__gmpz_ior__gmpz_mul_2exp__gmp_set_memory_functions_fini__gmpz_sub__gmpz_xor__gmpz_com__gmpz_gcd__gmpz_fdiv_q_2exp__gmpz_init__gmpz_mul__gmpz_divexact__gmpn_cmp__gmpz_addclock_gettimetimer_deletetimer_settimetimer_createdlopendlerrordlsymlibm.so.6modfldexplibc.so.6_IO_stdin_usedepoll_createfflushstrcpysprintfsetlocalefopenstrncmpftruncatestrrchrregexecpipeftruncate64mmap64siginterruptepoll_waitftellstrncpyforksigprocmaskregfreeunlinkpthread_mutex_lockselectmkdirreallocabortgetpidkillstrdupmkstempstrtodstrtolisattysetmntentmmapctime_rfeoffgetscallocstrlensigemptysetmemset__errno_locationtcsetattrfseekgetpagesizeeventfddup2pause__fxstat64sigaddsetpthread_mutex_unlockstdoutfputcgetrusagefputsregerrormemcpyfclosemprotectmallocraisegetgid__lxstat64nl_langinfohasmntopt__xstat64getenv__ctype_b_locregcompstderrsigdelsetmunmapgetuidgetegid__sysv_signalpthread_mutex_initfwritefreadgettimeofdayiconv_closesigactionepoll_ctlstatfsgeteuidlseek64strchrendmntentutimegetlineiconviconv_opentcgetattrbsearchfcntlgetmntent_rmemmovefopen64access_IO_getcstrcmpstrerror__libc_start_mainvfprintfsysconf__environ__cxa_atexit_edata__bss_start_endGLIBC_2.1GLIBC_2.0GLIBC_2.2GLIBC_2.3GLIBC_2.7GLIBC_2.3.4GLIBC_2.3.2GLIBC_2.1.3

Estou sem ideias porque o zsh (e para o registro: bash também) não encontrará esse arquivo, alguém tem uma ideia?

    
por Marcus Riemer 13.02.2016 / 12:12

2 respostas

1

Você está tentando executar um executável de 32 bits em um sistema de 64 bits. Faça isso você tem que instalar as bibliotecas de 32 bits, em suma, você tem que fazer o seu sistema multilib.

ou tente recompilar enviando as fontes também por meio do rsync.

    
por 13.02.2016 / 12:28
1

A saída de file german-numbers e uname -a mostrará detalhes, incluindo a arquitetura.

As chances são de que você tenha copiado

  1. Um arquivo de 32 bits para um sistema de 64 bits ou v.v
  2. Um Intel para ARM ou v.v
  3. Você está perdendo uma ou mais bibliotecas vinculadas dinamicamente referenciadas pelo executável. Use ldd german-numbers para ver a lista de bibliotecas necessárias
por 13.02.2016 / 12:30