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/
$
fceruti
fonte
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/

xofer
fonte
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.

Dr. Julie
fonte
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.

Chris Steinbach
fonte
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
SparX
fonte
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"
Belmin Fernandez
fonte
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