Como resolver: No such file or directory – Arquivo ou diretório não encontrado

Não é difícil no dia-a-dia da administração de servidores Linux ou no uso como estação de trabalho, o seguinte erro:

No such file or directory / Arquivo ou diretório não encontrado

Isso significa que o aplicativo tentou buscar um arquivo de texto, biblioteca ou diretório, porém nada foi encontrado no local esperado.

As falhas geralmente ocorrem quando:

  • é feita a compilação de código fonte;
  • é realizada a execução de daemons/serviços que fazem a leitura de arquivos de configuração que possuem as definições de locais de bibliotecas, arquivos de logs que apontam para locais errados.

Existem algumas formas de encontrar o arquivo ou diretório faltante, veja algumas alternativas:

O arquivo existe no sistema operacional e apenas está no local errado ou inesperado?

Comandos: updatedb / locate

O comando locate utiliza-se de base de dados local onde é indexado todos os arquivos do sistema operacional. Dessa forma, a procura pelo arquivo é extremamente rápida, entretanto o único pré-requisito é que o comando updatedb tenha sido executado recentemente para criar ou atualizar a base de dados. Caso contrário, mesmo que o arquivo exista e ele não está presente na base indexada, não será possível encontrá-lo com o comando locate.

Tente os comandos abaixo para chegar até o local correto do arquivo não encontrado:

Cursos Online para Auditor de TI do TCU

Comando: find

O comando find funciona de forma parecida ao comando locate, porém na execução ele varre todo o sistema de arquivos em busca do arquivo especificado. A desvantagem é que, dependendo do diretório fornecido,  a busca pode demorar vários minutos se o número de arquivos e o volume de dados do seu sistema forem grandes.

Veja alguns exemplos:

Para ver outros exemplos de uso do comando find, acesse: http://pt.wikipedia.org/wiki/Find

Criar link simbólico como workaround

Se você encontrou o arquivo (exemplo: mylib.h) com o comando find ou então locate, é preciso apenas criar um link simbólico para resolver o erro no such file or directory / arquivo ou diretório não encontrado.

Em algumas situações como a compilação de software, o comando make espera encontrar a biblioteca no caminho A (/usr/lib/mylib.h) , porém o arquivo está presente no caminho B (/lib/usr/mylib.h).

O workaround que pode ser utilizado neste caso é a criação do link simbólico de A para B. Dessa forma, na próxima execução do comando make, a compilação irá encontrar o link simbólico (atalho) indicando onde a biblioteca requisitada realmente se encontra.

Abaixo o exemplo para criar o link simbólico:

Ao executar o comando ls -lh é possível verificar o link simbólico apontando para o arquivo real do sistema de arquivos:

 

E se nada for encontrado com o comando locate ou find?

Pode ser que o arquivo não encontrado nem exista no sistema operacional. Mas como descobrir de qual pacote .deb ou .rpm contém o arquivo faltante?

Existem alguns comandos que podem lhe ajudar com essa tarefa, veja:

Comando: apt-file para Ubuntu e derivados do Debian

comando apt-file

O apt-file funciona de forma similar ao apt-get ou aptitude. A partir da lista de repositórios em /etc/apt/sources.list, o apt-file constrói a base de dados de pacotes disponíveis nos repositórios contendo: o nome do pacote e todos os arquivos presentes em cada um deles.

Veja como encontrar o pacote proprietário do arquivo “crack.h” que pode ser exigido em compilações de programas que utilizam bibliotecas de criptografia. Na imagem, o pacote que contem o arquivo “crack.h” é o libcrack2-dev. Neste caso, digite apt-get install libcrack2-dev e a compilação deve funcionar corretamente.

Comando: yum whatprovides para CentOS, Red Hat e outras distribuição baseadas no RPM

De forma semelhante ao apt-file o yum whatprovies também faz a procura por pacotes RPM que contém determinado arquivo dentro do pacote. Para utilizá-lo:

Ainda não encontrou o arquivo que precisava?

Assim como vários outros problemas são resolvidos desta forma, você ainda pode procurar no Google. 🙂 Mas caso conheça alguma ferramenta que pode ser utilizada para procurar arquivos no Linux, ou então, dentro de pacotes de outras distribuições como openSUSE, Slackware e etc, poste nos comentários o nome da aplicação.

Fernando Mariano

Formado em Engenharia de Computação e atua como Administrador de Sistemas há mais de 9 anos e desenvolve sua startup no mercado de concursos públicos chamada Enter Concursos.

Você pode gostar...

2 Resultados

  1. Ajudainfo disse:

    Salvou minha pele amigo, consegui resolver o problema com o arquivo publc_html que não encontrava no ftp

Deixe uma resposta