创建后符号链接断开

Posted

技术标签:

【中文标题】创建后符号链接断开【英文标题】:Symbolic Link broken after creation 【发布时间】:2019-03-03 12:36:12 【问题描述】: 链接在我创建后立即断开。 我正确地使用了lnln -s SOURCE TARGET

创建符号链接

$ sudo ln -s ./sites-available/examble.domain.com ./sites-enabled

编译 nginx - 由于符号链接损坏而失败

注意: 问题与 NGINX 无关,NGINX 编译只是为了帮助我意识到问题的存在。 下面描述的解决方案适用于任何其他相关的问题。

$ sudo nginx -t
nginx: [emerg] open() "/etc/nginx/sites-enabled/example.domain.com" failed (2: No such file or directory) in /etc/nginx/nginx.conf:62
nginx: configuration file /etc/nginx/nginx.conf test failed

确认符号链接已损坏

$ file ./sites-enabled/example.domain.com
./sites-enabled/example.domain.com: broken symbolic link to ./sites-available/example.domain.com

【问题讨论】:

这是你的副本...How to symlink a file in Linux? @jww 不,不是。这个答案会让我感到困惑,并且不会为我提供任何关于为什么我的不起作用的答案。我完全描述了为什么这不起作用,说您应该像在目标文件夹中一样包含源,而提议的“重复”问题的答案或问题不包含该源。请充分意识到,我写这个答案是为了帮助像我这样挣扎了几个小时的人。 重要提示“重复”的答案不包含相对路径。只有绝对的。 【参考方案1】:

问题是SOURCE放到目标目录时没有重新解释。

因此,如果您要链接的文件是 ~/file,并且您想使用以下方法将其链接到 ~/folder

ln -s ./file ./folder/

那么符号链接会认为file~/folder/file而不是~/file

因此,您必须进入目录~/folder 并从那里执行ln 命令。

所以,问题是......

ln 需要 SOURCE 相对于 TARGET 目录的目录。不是您当前目录的相对 SOURCE 目录。

最终解决方案

# Getting into the folder
cd ./sites-enabled

# Creating symbolic link
ln -s ../sites-available/example.domain.com ./

【讨论】:

当然你也可以使用ln -s ../sites-available/example.domain.com sites-enabled,不用cd。这个解决方案的巧妙之处在于,如果您首先 do cd 到目录,则可以使用任何选项卡可完成路径,因为它已经与正确的目录相关。 正确,它避免了混淆并有助于标签。事实上,我不确定这是否适用于TARGET 路径之外。感谢您的贡献和帮助!

以上是关于创建后符号链接断开的主要内容,如果未能解决你的问题,请参考以下文章

PHP:创建一个包含符号链接和空目录的tar归档文件

NGINX 在创建符号链接后给出 404 错误

使用 Qt 重命名符号链接

通过 rpmbuild 打包符号链接?

创建符号链接时权限被拒绝

如何通过覆盖现有符号链接来强制创建符号链接?