Символическая ссылка: Нет такого файла или каталога
Я создал символическую ссылку из файла в "/ 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
опция монтирования