Você pode me explicar #ln -s: “target não é um diretório”?


12

Eu estou fazendo isto:

sudo ln s /etc/apache2/sites-available/LoginProject /etc/apache2/sites-enabled/LoginProject

E eu recebo:

ln: target `/etc/apache2/sites-enabled/LoginProject' is not a directory

/ etc / apache2 / sites-available / LoginProject é um arquivo

editar:

este comando:

ls -l /etc/apache2/sites-enabled/LoginProject /etc/apache2/sites-available/LoginProject

saídas:

ls: cannot access /etc/apache2/sites-enabled/LoginProject: No such file or directory
-rw-r--r-- 1 root root 526 2011-09-27 18:40 /etc/apache2/sites-available/LoginProject

editar 2:

$ls /etc/apache2/sites-available/
default  default-ssl  LoginProject
$

$ls /etc/apache2/sites-enabled/
$

1
Você pode adicionar a ls -l /etc/apache2/sites-enabled/LoginProject /etc/apache2/sites-available/LoginProjectsaída?
Belmin Fernandez 27/09/11

certeza, não eu adicionei-o
fceruti

Para quem chega aqui procurando esse erro, mas as soluções acima não funcionam ... se você estiver simbolizando um diretório, verifique se ele NÃO possui uma barra no destino ou no nome.
Sherri

Respostas:


4

Experimentar: sudo a2ensite LoginProject

Você também pode fazer sudo ln –s /etc/apache2/sites-available/LoginProject /etc/apache2/sites-enabled/


O arquivo é: / etc / apache2 / sites-available / LoginProject qualquer forma, eu tentei mudar a ordem, e não funcionou
fceruti

Desculpe, estava errado, veja edit
xofer

Obrigado! o LoginProject a2ensite funcionou! não tentou o outro comando. Ainda é muito estranho ... Eu realmente não entendo
fceruti

Normalmente, o ln aceita 2 caminhos de arquivo e, se houver mais de dois, o destino deve ser um diretório. Ainda me pergunto por que conta seus parâmetros dessa maneira !!!
SparX

26

Você provavelmente copiou e colou o ln -scomando de outra fonte e o sistema inseriu o tipo errado de -. Tente excluir -e digitar novamente manualmente.


Você salvou meu dia com esta resposta! Bem, metade do dia. Passei a outra metade puxando os restos do meu cabelo tentando descobrir o que estava fazendo de errado e que diretório ele queria de mim. Aconteceu que eu realmente tinha um traço errado na linha.
Alexander Amelkin

Grande, melhor resposta que deve ser aceito
The Godfather

Ótimo!!! Obrigado.
Nano.galvao

6

O problema é a diferença entre isso ...

sudo ln s path1 path2

e isto...

sudo ln -s path1 path2

Não vê a diferença? Traço curto vs. traço longo.

O traço longo não é interpretado como uma opção e assim ln vê três caminhos na linha de comando e espera que o último a ser um diretório.


2
Você pode ver o longo traço na postagem original. Essa é a resposta.
Xalorous

3

Tente ln com argumento único como abaixo e ver se isso ajuda,

cd /etc/apache2/sites-enabled/ ; sudo ln -s /etc/apache2/sites-available/LoginProject

2

Tente citar os diretórios e encerrar os sudoargumentos de comando da seguinte maneira:

sudo -- \ln s "/etc/apache2/sites-available/LoginProject" "/etc/apache2/sites-enabled/LoginProject"

Não, isso não faz o truque
fceruti

Fez uma edição. Tente novamente agora.
Belmin Fernandez 27/09/11

Copiei
fceruti

Cara. Estou pisado. Eu só vi isso quando o alvo existe. Mas sua lssaída mostra que não. Querendo saber se é um problema de SELinux ou ACL de algum tipo. Meh, você conseguiu trabalhar com a resposta de @ fuscata. Bom trabalho :-)
Belmin Fernandez 27/09

Obrigado por seu homem do tempo, @fuscata tem uma solução, talvez não uma resposta ao porquê que happend, mas ainda assim ... obrigado novamente
fceruti
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.