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

18

Я создал символическую ссылку из файла в «/ 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, и теперь программа работает нормально. Как это выглядит, мои символические ссылки, где правильно.

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

Sehe
источник

Ответы:

13

РЕДАКТИРОВАТЬ: решение ниже не работает. Очевидно, что символическая ссылка не работает, потому что 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 '. Я не могу заглянуть внутрь "бла", это программа, а не только сценарий оболочки.
Сехе
ОК, переделайте символическую ссылку с полными путями, пожалуйста.
январь
Я пришел к этой идее ранее самостоятельно. Даже при использовании старых ссылок и создании новых, ошибка все равно появляется. -SF также не работает.
Сехе
OK. Пожалуйста, запустите ls -l /usr/bin/blaи ls -l /opt/bladir/blaи сообщите точный вывод этих команд.
январь
@ Январь, какой курс действий вы бы порекомендовали, если file -L он не работает?
dbliss
0

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

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

Анвар
источник
Бит исключения установлен и / opt / не находится на отдельном разделе: /
Sehe