Pouvez-vous m'expliquer cela #ln -s: «la cible n'est pas un répertoire»?

12

Je fais ça:

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

Et je reçois:

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

/ etc / apache2 / sites-available / LoginProject c'est un fichier

Éditer:

cette commande:

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

les sorties:

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

modifier 2:

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

$ls /etc/apache2/sites-enabled/
$
fceruti
la source
1
Pouvez-vous ajouter la ls -l /etc/apache2/sites-enabled/LoginProject /etc/apache2/sites-available/LoginProjectsortie?
Belmin Fernandez
bien sûr, je l'ai ajouté
fceruti
Pour toute personne qui arrive ici à la recherche de cette erreur, mais les solutions ci-dessus ne fonctionnent pas ... si vous créez un lien symbolique vers un répertoire, assurez-vous qu'il n'a PAS de barre oblique de fin sur la cible ou le nom.
Sherri

Réponses:

4

Essayer: sudo a2ensite LoginProject

Vous pourriez aussi faire sudo ln –s /etc/apache2/sites-available/LoginProject /etc/apache2/sites-enabled/

xofer
la source
Le fichier est: / etc / apache2 / sites-available / LoginProject Quoi qu'il en soit, j'ai essayé de changer l'ordre et je n'ai pas fonctionné
fceruti
Désolé, c'était faux, voir modifier
xofer
Merci! le LoginProject a2ensite a fonctionné! n'a pas essayé l'autre commande. C'est encore très bizarre ... je ne comprends vraiment pas
fceruti
Normalement, ln accepte 2 chemins de fichier et s'il est supérieur à deux, la cible doit être un répertoire. Je me demande encore pourquoi ça compte vos paramètres comme ça !!!
SparX
26

Vous avez probablement copié et collé la ln -scommande à partir d'une autre source et le système a inséré le mauvais type de -. Essayez de supprimer le -et de le saisir à nouveau manuellement.

Dr. Julie
la source
Vous avez sauvé ma journée avec cette réponse! Eh bien, la moitié de la journée. J'ai passé l'autre moitié à retirer les restes de mes cheveux en essayant de comprendre ce que je faisais mal et quel répertoire il voulait de moi. Il s'est avéré que j'avais effectivement un mauvais tiret dans la ligne.
Alexander Amelkin
Grande, meilleure réponse qui devrait être acceptée
The Godfather
Génial!!! Je vous remercie.
nano.galvao
6

Le problème est la différence entre cela ...

sudo ln s path1 path2

et ça...

sudo ln -s path1 path2

Vous ne voyez pas la différence? Tiret court vs tiret long.

Le long tiret n'est pas interprété comme une option et donc ln voit trois chemins sur la ligne de commande et s'attend à ce que le dernier soit un répertoire.

Chris Steinbach
la source
2
Vous pouvez réellement voir le long tiret dans le message d'origine. Telle est la réponse.
Xalorous
3

Essayez ln avec un seul argument comme ci-dessous et voyez si cela aide,

cd /etc/apache2/sites-enabled/ ; sudo ln -s /etc/apache2/sites-available/LoginProject
SparX
la source
2

Essayez de citer les répertoires et de terminer les sudoarguments de commande comme suit:

sudo -- \ln s "/etc/apache2/sites-available/LoginProject" "/etc/apache2/sites-enabled/LoginProject"
Belmin Fernandez
la source
Non, cela n'a pas fait l'affaire
fceruti
A fait un montage. Réessayez maintenant.
Belmin Fernandez
J'ai copié et collé: ln: target `/ etc / apache2 / sites-enabled / LoginProject 'n'est pas un répertoire
fceruti
Homme. Je suis piétiné. Je ne l'ai vu que lorsque la cible existe. Mais votre lssortie montre que non. Vous vous demandez si c'est un problème SELinux ou ACL. Meh, vous l'avez fait fonctionner avec la réponse de @ fuscata. Bon travail :-)
Belmin Fernandez
Merci pour votre temps, @fuscata a obtenu une solution, peut-être pas une réponse à pourquoi cela s'est produit, mais quand même ... merci encore
fceruti