我创建了一个从“/opt/bladir/bla”处的文件到“bla”的符号链接。因此“bla”现在位于“/usr/bin/bla”中。但如果我想在终端上调用“bla”,就会出现没有此文件或目录的错误。我查看了“/usr/bin/bla”,发现文件在“/opt/bladir/bla”处正确链接。
可能存在什么错误?
PS 这里是我的终端“入口”: sudo ln -s /opt/bladir/bla bla
谢谢!
€:问题解决了。根据功能列表,12.04 应该具有多架构支持……“应该”。我从 synaptic 获得了 ia32-libs,现在程序运行正常。看起来,我的符号链接是正确的。
感谢您的所有回答!
答案1
编辑:下面的解决方案不起作用。显然符号链接已损坏,因为file -L
无法打开符号链接 /usr/bin/bla。在这种情况下,请执行以下操作:
sudo ln -sf /opt/bladir/bla /usr/bin/bla
使用完整路径(-f 表示强制覆盖前一个符号链接(如果有的话)。
嗯。我认为程序“bla”可能正在寻找安装在 /opt/bladir 中的东西,但找不到它们。例如,它可以是 Java 可执行文件的 shell 脚本包装器,其路径相对于当前目录:但您的当前目录是 /usr/bin/,而不是 /opt/bladir/。
如果以下工作
file -L /usr/bin/bla
...那么就是确实您的符号链接没有问题。
检查“bla”是否是可以修改的 shell 脚本,查看里面的内容——也许您会发现问题。将 /opt/bladir 添加到 PATH 中可能是一个更好的解决方案。
答案2
看来你遇到的问题和我不一样,因为你说,
“我查看了“/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
答案3
这个问题不是这种情况,但发生此错误的另一种情况是,如果其中一个目录中有空格并且没有用引号引起来。例如:
ln -s my home/username/myfolder/a file.txt file.txt
会导致错误。但是
ln -s my "home/username/myfolder/a file.txt" file.txt
将不会。
答案4
如果您没有启用执行位,通常会显示此类错误消息。请检查主文件以及链接是否被授予执行权限。
我怀疑你的系统/opt
可能是从单独的分区挂载的,而且没有使用exec
挂载选项挂载