Debian sem comandos básicos: 'No file or directory'

5

Meu novo VPS está rodando o Debian 5.0 (bash 3.2.29), e alguns comandos parecem estar faltando. Por exemplo, o comando ps não está aqui, nem é ls (mas o dir funciona). Existe algum pacote faltando ou qual é o problema?

:~# type ps
ps is hashed (/bin/ps)
:~# ps
-bash: /bin/ps: No such file or directory

:~# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

:~# /bin/ps
-bash: /bin/ps: No such file or directory

Editar: Mais informações sobre os comentários:

  • são 64 bits
  • Não conheço nenhum detalhe sobre a instalação atual.
  • É uma máquina virtual rodando virtuozzo & plesk
  • readelf mostra que /bin/ps e /bin/ls são 32 bits. E não há 32bit /lib/ld-linux-so.2 . Como isso aconteceu? Erro na instalação ou o quê?

Para fins de conclusão:

# file /bin/ps
/bin/ps: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), 
dynamically linked (uses shared libs), for GNU/Linux 2.0.0, stripped

# file /bin/ls
/bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV),
dynamically linked     (uses shared libs), for GNU/Linux 2.0.0, stripped

# uname -mrvs
Linux 2.6.18-028stab069.6 #1 SMP Wed May 26 18:10:06 MSD 2010 x86_64


# readelf -l /bin/ps

Elf file type is EXEC (Executable file)
Entry point 0x8049040
There are 6 program headers, starting at offset 52

Program Headers:
  Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align
  PHDR           0x000034 0x08048034 0x08048034 0x000c0 0x000c0 R E 0x4
  INTERP         0x0000f4 0x080480f4 0x080480f4 0x00013 0x00013 R   0x1
      [Requesting program interpreter: /lib/ld-linux.so.2]
  LOAD           0x000000 0x08048000 0x08048000 0x071fa 0x071fa R E 0x1000
  LOAD           0x007200 0x08050200 0x08050200 0x005a0 0x01e5c RW  0x1000
  DYNAMIC        0x0076f8 0x080506f8 0x080506f8 0x000a8 0x000a8 RW  0x4
  NOTE           0x000108 0x08048108 0x08048108 0x00020 0x00020 R   0x4

 Section to Segment mapping:
  Segment Sections...
   00     
   01     .interp 
   02     .interp .note.ABI-tag .hash .dynsym .dynstr 
  .gnu.version .gnu.version_r .rel.got .rel.bss .rel.plt
  .init .plt .text .fini .rodata 
   03     .data .got .dynamic .bss 
   04     .dynamic 
   05     .note.ABI-tag 

Solução

O provedor de serviços reinstalou o sistema. Foi definitivamente algo interessante sobre isso. O consumo de memória caiu de cerca de 750MB para 120MB também.     
por mandrake 10.11.2010 / 17:42

1 resposta

6

Quando exec* retorna -ENOENT , o binário está faltando ou o interpretador está faltando.

Obviamente, /bin/ps existe, caso contrário não estaria em hash no shell. Mas o vinculador dinâmico do qual depende provavelmente não existe no seu sistema. Se o GNU binutils estiver instalado, você poderá determinar facilmente se este é o caso.

$ readelf -l /bin/ps
…
  INTERP         0x0000000000000270 0x0000000000400270 0x0000000000400270
                 0x000000000000001c 0x000000000000001c  R      1
      [Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]
…

/lib64/ld-linux-x86-64.so.2 existe na minha máquina de teste híbrida Debian Squeeze / Sid.

Uma possibilidade é que você de alguma forma instalou pacotes de 32 bits sem as bibliotecas de 32 bits necessárias. Por exemplo, se eu tentar executar um binário de 32 bits em um sistema somente de 64 bits,

# on another system for 32-bit development
$ echo 'int main(){}' > 32bit.c
$ cc -m32 -o 32bit 32bit.c
# on a 64-bit system without 32-bit libraries
$ ./32bit
-bash: ./32bit: No such file or directory
$ readelf -l 32bit
…
  INTERP         0x000154 0x08048154 0x08048154 0x00013 0x00013 R   0x1
      [Requesting program interpreter: /lib/ld-linux.so.2]
…
$ ls /lib/ld-linux.so.2
ls: cannot access /lib/ld-linux.so.2: No such file or directory

Outra possibilidade é que você está tentando executar binários LSB em um sistema sem bibliotecas básicas de LSB instaladas, por exemplo, um cenário como o link ou a tentativa de usar pacotes baseados no Glibc em um sistema somente µClibc ou em várias outras situações semelhantes.

Eu tenho que perguntar - como este sistema foi instalado? Nada disso será verdade por padrão, alguém teve que se meter com as coisas.

    
por 10.11.2010 / 22:08