Можете ли вы объяснить это мне #ln -s: «цель - это не каталог»?

12

Я делаю это:

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

И я получаю:

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

/ etc / apache2 / sites-available / LoginProject это файл

редактировать:

эта команда:

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

выходы:

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

редактировать 2:

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

$ls /etc/apache2/sites-enabled/
$
fceruti
источник
1
Можете ли вы добавить ls -l /etc/apache2/sites-enabled/LoginProject /etc/apache2/sites-available/LoginProjectвывод?
Бельмин Фернандес
конечно, там я добавил это
fceruti
Для тех, кто прибывает сюда и ищет эту ошибку, но вышеприведенные решения не работают ... если вы создаете символическую ссылку на каталог, убедитесь, что в нем нет косой черты ни на цели, ни на имени.
Шерри

Ответы:

4

Пытаться: sudo a2ensite LoginProject

Вы могли бы также сделать sudo ln –s /etc/apache2/sites-available/LoginProject /etc/apache2/sites-enabled/

xofer
источник
Файл: / etc / apache2 / sites-available / LoginProject Во всяком случае, я попытался изменить порядок и не сработал
fceruti
Извините, что был не прав, см. Редактировать
xofer
Спасибо! a2ensite LoginProject работал! не пробовал другую команду. Это все еще очень странно ... Я действительно не понимаю
fceruti
Обычно ln принимает 2 пути к файлам, и если их больше двух, целью должен быть каталог. Я до сих пор удивляюсь, почему он так считает ваши параметры !!!
SparX
26

Вы, вероятно, скопировали и вставили ln -sкоманду из другого источника, и система вставила неправильный тип -. Попробуйте удалить -и введите его снова вручную.

Доктор джули
источник
Вы спасли мой день с этим ответом! Ну, пол дня. Я потратил вторую половину, вытаскивая остатки моих волос, пытаясь выяснить, что я делаю неправильно, и какой каталог он хочет от меня. Оказалось, что у меня действительно была неправильная черта в линии.
Александр Амелькин
Отлично, лучший ответ, который следует принять
Крестный отец
Большой!!! Спасибо.
nano.galvao
6

Проблема в том, что разница между этим ...

sudo ln s path1 path2

и это...

sudo ln -s path1 path2

Не видите разницу? Короткая черта против длинной черты.

Длинная черта не интерпретируется как опция, поэтому ln видит три пути в командной строке и ожидает, что последний будет каталогом.

Крис Стейнбах
источник
2
Вы можете увидеть длинную черту в оригинальном сообщении. Это ответ.
Ксалори
3

Попробуйте ln с одним аргументом, как показано ниже, и посмотрите, поможет ли это,

cd /etc/apache2/sites-enabled/ ; sudo ln -s /etc/apache2/sites-available/LoginProject
Sparx
источник
2

Попробуйте заключить в кавычки каталоги и завершить sudoаргументы команды следующим образом:

sudo -- \ln s "/etc/apache2/sites-available/LoginProject" "/etc/apache2/sites-enabled/LoginProject"
Бельмин Фернандес
источник
Нет, это не сработало
fceruti
Сделано редактирование. Попробуйте еще раз сейчас.
Бельмин Фернандес
Я скопировал, вставил это и получил: ln: target `/ etc / apache2 / sites-enabled / LoginProject 'не является каталогом
fceruti
Мужчина. Я растоптал Я видел это только когда цель существует. Но ваш lsвывод показывает, что это не так. Хотите знать, если это какая-то проблема SELinux или ACL? Мех, ты заставил его работать с ответом @ fuscata. Хорошая работа :-)
Бельмин Фернандес
Спасибо за потраченное время, у @fuscata есть решение, возможно, не ответ на вопрос, почему это произошло, но все же ... еще раз спасибо
fceruti