Символическая ссылка: Нет такого файла или каталога

Я создал символическую ссылку из файла в "/ opt / bladir / bla" на "bla". Итак, "бла" теперь находится в "/ usr / bin / bla". Но если я хочу вызвать "бла" на терминале, то нет такого файла или ошибка каталога. Я посмотрел на "/ usr / bin / bla", и файл правильно связывается с "/ opt / bladir / bla".

В чем может быть ошибка?

PS вот мой терминал "запись": sudo ln -s /opt/bladir/bla bla

Спасибо!

€: проблема решена. Согласно Списку возможностей, 12.04 должна иметь поддержку Multiarch... 'следует'. Я получил ia32-libs от synaptic, и теперь программа работает нормально. Как это выглядит, мои символические ссылки, где правильно.

Спасибо за все ответы!

4 ответа

Решение

РЕДАКТИРОВАТЬ: решение ниже не работает. Очевидно, что символическая связь не работает, потому что file -L не может открыть символическую ссылку / usr / bin / bla. В этом случае сделайте следующее:

sudo ln -sf /opt/bladir/bla /usr/bin/bla

использование полных путей (-f - принудительно перезаписывать предыдущую символическую ссылку, если она есть).

Гектометр Я думаю, что программа "bla" может искать вещи, которые установлены в / opt / bladir, и не может их найти. Например, это может быть оболочка сценария оболочки вокруг исполняемого файла Java с указанием пути относительно текущего каталога: но текущим каталогом является / usr / bin /, а не / opt / bladir /.

Если работает следующее

file -L /usr/bin/bla

... тогда это определенно не проблема с вашей символической ссылкой.

Проверьте, является ли "bla" сценарий оболочки, который вы можете изменить, загляните внутрь - возможно, вы найдете проблему. Возможно, лучше добавить / opt / bladir к вашей переменной PATH.

Похоже, у вас была другая проблема, чем у меня, так как вы сказали,

«Я посмотрел на «/usr/bin/bla», и файл правильно линкуется на «/opt/bladir/bla».»

Тем не менее, для других, приходящих сюда, я хотел поместить ~/julia-1.5.3/bin/julia в PATH через символическую ссылку, поэтому я в основном так и сделал. cd /home/username/а потом sudo ln -s julia-1.5.3/bin/julia /usr/local/bin/julia. Когда я набрал julia, он сказал bash: /usr/local/bin/julia: No such file or directory. Когда я сделал ls -all /usr/local/bin, я нашел проблему; он ссылался на оборванный относительный каталог: julia -> julia-1.5.3/bin/julia.

Во всяком случае, мне просто пришлось переделать это с абсолютным путем, и это сработало: sudo ln -sf /home/username/julia-1.5.3/bin/julia /usr/local/bin/julia

Это не относится к этому вопросу, но другая ситуация, когда эта ошибка может произойти, - это если в одном из каталогов есть пробел и он не заключен в кавычки. Например:

      ln -s my home/username/myfolder/a file.txt file.txt

вызовет ошибку. но

      ln -s my "home/username/myfolder/a file.txt" file.txt

не буду.

Часто этот тип сообщения об ошибке отображается, если у вас не включен бит выполнения. Проверьте, дано ли основному файлу и ссылке разрешение на выполнение.

Я подозреваю твой /opt может быть смонтирован из отдельного раздела и не монтируется с exec опция монтирования

Другие вопросы по тегам